Refactor CMS UUID factory
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / runtime / StaticCms.java
index e473d27994ff8f4e467461166b3b6523c7043fb5..1b127c89dc210f53a373b200806c9438f735e905 100644 (file)
@@ -9,21 +9,22 @@ import org.argeo.api.acr.spi.ProvidedRepository;
 import org.argeo.api.cms.CmsContext;
 import org.argeo.api.cms.CmsDeployment;
 import org.argeo.api.cms.CmsState;
+import org.argeo.api.cms.directory.CmsUserManager;
+import org.argeo.api.cms.transaction.SimpleTransactionManager;
+import org.argeo.api.cms.transaction.WorkControl;
+import org.argeo.api.cms.transaction.WorkTransaction;
+import org.argeo.api.register.Component;
+import org.argeo.api.register.ComponentRegister;
+import org.argeo.api.register.SimpleRegister;
+import org.argeo.api.uuid.ConcurrentUuidFactory;
+import org.argeo.api.uuid.NodeIdSupplier;
 import org.argeo.api.uuid.UuidFactory;
-import org.argeo.cms.CmsUserManager;
-import org.argeo.cms.acr.CmsUuidFactory;
-import org.argeo.cms.internal.auth.CmsUserManagerImpl;
 import org.argeo.cms.internal.runtime.CmsContextImpl;
 import org.argeo.cms.internal.runtime.CmsDeploymentImpl;
 import org.argeo.cms.internal.runtime.CmsStateImpl;
 import org.argeo.cms.internal.runtime.CmsUserAdmin;
+import org.argeo.cms.internal.runtime.CmsUserManagerImpl;
 import org.argeo.cms.internal.runtime.DeployedContentRepository;
-import org.argeo.util.register.Component;
-import org.argeo.util.register.ComponentRegister;
-import org.argeo.util.register.SimpleRegister;
-import org.argeo.util.transaction.SimpleTransactionManager;
-import org.argeo.util.transaction.WorkControl;
-import org.argeo.util.transaction.WorkTransaction;
 import org.osgi.service.useradmin.UserAdmin;
 
 /**
@@ -36,19 +37,20 @@ public class StaticCms {
        private CompletableFuture<Void> stopped = new CompletableFuture<Void>();
 
        public void start() {
-               // UID factory
-               CmsUuidFactory uuidFactory = new CmsUuidFactory();
-               Component<CmsUuidFactory> uuidFactoryC = new Component.Builder<>(uuidFactory) //
-                               .addType(UuidFactory.class) //
-                               .build(register);
-
                // CMS State
                CmsStateImpl cmsState = new CmsStateImpl();
                Component<CmsStateImpl> cmsStateC = new Component.Builder<>(cmsState) //
                                .addType(CmsState.class) //
+                               .addType(NodeIdSupplier.class) //
                                .addActivation(cmsState::start) //
                                .addDeactivation(cmsState::stop) //
-                               .addDependency(uuidFactoryC.getType(UuidFactory.class), cmsState::setUuidFactory, null) //
+                               .build(register);
+
+               // UID factory
+               ConcurrentUuidFactory uuidFactory = new ConcurrentUuidFactory();
+               Component<ConcurrentUuidFactory> uuidFactoryC = new Component.Builder<>(uuidFactory) //
+                               .addType(UuidFactory.class) //
+                               .addDependency(cmsStateC.getType(NodeIdSupplier.class), uuidFactory::setNodeIdSupplier, null) //
                                .build(register);
 
                // Transaction manager