private static OseeServerInfoMutable createOseeServerInfo(
      Log logger, ApplicationServerDataStore dataStore, Set<String> defaultVersions) {
    String serverAddress = "127.0.0.1";
    try {
      serverAddress = InetAddress.getLocalHost().getCanonicalHostName();
    } catch (UnknownHostException ex) {
      //
    }
    int port = OseeServerProperties.getOseeApplicationServerPort();

    String checkSum = "-1";
    try {
      String address = String.format("%s:%s", serverAddress, port);
      ByteArrayInputStream inputStream = new ByteArrayInputStream(address.getBytes("UTF-8"));
      checkSum = ChecksumUtil.createChecksumAsString(inputStream, ChecksumUtil.MD5);
    } catch (Exception ex) {
      logger.error(ex, "Error generating application server id");
    }
    OseeServerInfoMutable toReturn =
        new OseeServerInfoMutable(
            checkSum,
            serverAddress,
            port,
            new String[0],
            GlobalTime.GreenwichMeanTimestamp(),
            false);
    toReturn.setVersions(defaultVersions);
    return toReturn;
  }
 @Override
 public void addSupportedVersion(String version) throws OseeCoreException {
   Conditions.checkNotNull(version, "Osee Version");
   OseeServerInfoMutable info = getApplicationServerInfo();
   refreshData(info);
   info.addVersion(version);
   dataStore.update(Collections.singleton(info));
 }
  private void refreshData(OseeServerInfoMutable info) {
    dataStore.refresh(info);

    Set<String> supportedVersions = info.getVersionSet();
    if (!supportedVersions.containsAll(defaultVersions)) {
      supportedVersions.addAll(defaultVersions);
      info.setVersions(supportedVersions);
    }
  }
 @Override
 public boolean executeLookupRegistration() {
   OseeServerInfoMutable info = getApplicationServerInfo();
   refreshData(info);
   deregisterWithDb(info);
   boolean isRegistered = registerWithDb(info);
   if (isRegistered) {
     getLogger().info("Application Server: [%s] registered.", info.getServerId());
   }
   return isRegistered;
 }
 private synchronized void setServletRequestsAllowed(final boolean value, PersistType persistType)
     throws OseeCoreException {
   OseeServerInfoMutable info = getApplicationServerInfo();
   info.setAcceptingRequests(value);
   if (PersistType.ALLOW_DB_PERSIST == persistType) {
     dataStore.update(Collections.singleton(info));
   }
   for (String contexts : oseeHttpServlets.keySet()) {
     InternalOseeHttpServlet servlets = oseeHttpServlets.get(contexts);
     servlets.setRequestsAllowed(value);
   }
 }
  @Override
  public void removeSupportedVersion(String version) throws OseeCoreException {
    Conditions.checkNotNull(version, "Osee Version");
    Conditions.checkExpressionFailOnTrue(
        defaultVersions.contains(version), "Unable to remove default Osee version [%s]", version);

    OseeServerInfoMutable info = getApplicationServerInfo();
    refreshData(info);
    Set<String> versions = info.getVersionSet();
    boolean wasRemoved = versions.remove(version);
    if (wasRemoved) {
      info.setVersions(versions);
      dataStore.update(Collections.singleton(info));
    } else {
      throw new OseeStateException("Not part of the supported version [%s]", version);
    }
  }