X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Fruntime%2FStaticCms.java;h=540da48c2bdf74d6ccb882a45b210f70ebb9e2b6;hb=cc1dd97ebcc32e1bd754073ad23def182f460452;hp=5ffff1d0e3a1757d2e6a36b5b28fe4aa8baedad4;hpb=584b2b87593892c6ded7b645425b603a4f554026;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/runtime/StaticCms.java b/org.argeo.cms/src/org/argeo/cms/runtime/StaticCms.java index 5ffff1d0e..540da48c2 100644 --- a/org.argeo.cms/src/org/argeo/cms/runtime/StaticCms.java +++ b/org.argeo.cms/src/org/argeo/cms/runtime/StaticCms.java @@ -1,6 +1,7 @@ package org.argeo.cms.runtime; import java.util.Dictionary; +import java.util.concurrent.CompletableFuture; import org.argeo.api.cms.CmsContext; import org.argeo.api.cms.CmsDeployment; @@ -14,8 +15,7 @@ import org.argeo.osgi.transaction.SimpleTransactionManager; import org.argeo.osgi.transaction.WorkControl; import org.argeo.osgi.transaction.WorkTransaction; import org.argeo.util.register.Component; -import org.argeo.util.register.ComponentRegister; -import org.argeo.util.register.StaticRegister; +import org.argeo.util.register.SimpleRegister; import org.osgi.service.useradmin.UserAdmin; /** @@ -23,10 +23,11 @@ import org.osgi.service.useradmin.UserAdmin; * deployment. Useful for testing or AOT compilation. */ public class StaticCms { + private static SimpleRegister register = new SimpleRegister(); - public void start() { - ComponentRegister register = StaticRegister.getInstance(); + private CompletableFuture stopped = new CompletableFuture(); + public void start() { // CMS State CmsStateImpl cmsState = new CmsStateImpl(); Component cmsStateC = new Component.Builder<>(cmsState) // @@ -83,21 +84,28 @@ public class StaticCms { .addDependency(cmsDeploymentC.getType(CmsDeployment.class), cmsContext::setCmsDeployment, null) // .addDependency(userAdminC.getType(UserAdmin.class), cmsContext::setUserAdmin, null) // .build(register); - assert cmsContextC.getInstance() == cmsContext; + assert cmsContextC.get() == cmsContext; register.activate(); } public void stop() { - if (StaticRegister.getInstance().isActive()) - StaticRegister.getInstance().deactivate(); + if (register.isActive()) { + register.deactivate(); + } + register.clear(); + stopped.complete(null); + } + + public void waitForStop() { + stopped.join(); } public static void main(String[] args) { StaticCms staticCms = new StaticCms(); Runtime.getRuntime().addShutdownHook(new Thread(() -> staticCms.stop(), "Static CMS Shutdown")); staticCms.start(); - + staticCms.waitForStop(); } }