X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fruntime%2FCmsStateImpl.java;h=b3ef895f145c3f0190176eb173ca1cc465c4a8fd;hb=4e8d82137c2dce7145175eacbd225a52227b6f73;hp=a0c4b0c0b8a445346e34921d3d3c3a29b7fdab81;hpb=def1b847ee067994c32f49107e22d3c04eac2b0e;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsStateImpl.java b/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsStateImpl.java index a0c4b0c0b..b3ef895f1 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsStateImpl.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsStateImpl.java @@ -1,15 +1,23 @@ package org.argeo.cms.internal.runtime; +import java.io.IOException; +import java.io.InputStream; import java.net.InetAddress; import java.net.URL; import java.net.UnknownHostException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.TreeMap; +import java.util.UUID; import javax.security.auth.login.Configuration; +import org.argeo.api.cms.CmsConstants; import org.argeo.api.cms.CmsLog; import org.argeo.api.cms.CmsState; +import org.argeo.api.uuid.UuidFactory; import org.argeo.cms.auth.ident.IdentClient; -import org.osgi.framework.Constants; +import org.argeo.util.directory.ldap.LdifParser; /** * Implementation of a {@link CmsState}, initialising the required services. @@ -20,10 +28,12 @@ public class CmsStateImpl implements CmsState { // REFERENCES private Long availableSince; - private String stateUuid; + private UUID uuid; // private final boolean cleanState; private String hostname; + private UuidFactory uuidFactory; + public void start() { // Runtime.getRuntime().addShutdownHook(new CmsShutdown()); @@ -34,7 +44,9 @@ public class CmsStateImpl implements CmsState { if (log.isTraceEnabled()) log.trace("CMS State started"); - this.stateUuid = KernelUtils.getFrameworkProp(Constants.FRAMEWORK_UUID); +// String stateUuidStr = KernelUtils.getFrameworkProp(Constants.FRAMEWORK_UUID); +// this.uuid = UUID.fromString(stateUuidStr); + this.uuid = uuidFactory.timeUUID(); // this.cleanState = stateUuid.equals(frameworkUuid); try { this.hostname = InetAddress.getLocalHost().getHostName(); @@ -46,12 +58,16 @@ public class CmsStateImpl implements CmsState { if (log.isDebugEnabled()) // log.debug("## CMS starting... stateUuid=" + this.stateUuid + (cleanState ? " // (clean state) " : " ")); - log.debug("## CMS starting... (" + stateUuid + ")"); + log.debug("## CMS starting... (" + uuid + ")"); + // initI18n(); // initServices(); + if (!Files.exists(getDataPath(CmsConstants.NODE))) {// first init + firstInit(); + } - } catch (RuntimeException e) { + } catch (RuntimeException | IOException e) { log.error("## FATAL: CMS activator failed", e); } } @@ -70,12 +86,27 @@ public class CmsStateImpl implements CmsState { public void stop() { if (log.isDebugEnabled()) - log.debug("CMS stopping... (" + this.stateUuid + ")"); + log.debug("CMS stopping... (" + this.uuid + ")"); long duration = ((System.currentTimeMillis() - availableSince) / 1000) / 60; log.info("## ARGEO CMS STOPPED after " + (duration / 60) + "h " + (duration % 60) + "min uptime ##"); } + private void firstInit() throws IOException { + log.info("## FIRST INIT ##"); + // FirstInit firstInit = new FirstInit(); + InitUtils.prepareFirstInitInstanceArea(); + } + + @Override + public String getDeployProperty(String key) { + return KernelUtils.getFrameworkProp(key); + } + + @Override + public Path getDataPath(String relativePath) { + return KernelUtils.getOsgiInstancePath(relativePath); + } @Override public Long getAvailableSince() { @@ -89,6 +120,15 @@ public class CmsStateImpl implements CmsState { return hostname; } + @Override + public UUID getUuid() { + return uuid; + } + + public void setUuidFactory(UuidFactory uuidFactory) { + this.uuidFactory = uuidFactory; + } + /* * STATIC */