Use CMS internal Jackrabbit configurations.
authorMathieu Baudier <mbaudier@argeo.org>
Tue, 9 Aug 2016 16:49:02 +0000 (16:49 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Tue, 9 Aug 2016 16:49:02 +0000 (16:49 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@9075 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsState.java
org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java
org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelThread.java
org.argeo.cms/src/org/argeo/cms/internal/kernel/RepositoryBuilder.java

index f975d6cf861f319d4d8ab04f06cec98108c3cd18..7ad61e50f5244720f7ac34c00d898574ab5722f4 100644 (file)
@@ -64,8 +64,8 @@ public class CmsState implements NodeState, ManagedService {
        private final BundleContext bc = FrameworkUtil.getBundle(CmsState.class).getBundleContext();
 
        // avoid dependency to RWT OSGi
-       private final static String PROPERTY_CONTEXT_NAME="contextName";
-       
+       private final static String PROPERTY_CONTEXT_NAME = "contextName";
+
        // REFERENCES
        private ConfigurationAdmin configurationAdmin;
 
@@ -89,6 +89,9 @@ public class CmsState implements NodeState, ManagedService {
        private boolean cleanState = false;
        private URI nodeRepoUri = null;
 
+       ThreadGroup threadGroup = new ThreadGroup("CMS State");
+       private KernelThread kernelThread;
+
        private String hostname;
 
        public CmsState() {
@@ -135,22 +138,10 @@ public class CmsState implements NodeState, ManagedService {
                        initWebServer();
                        initNodeDeployment();
 
-                       // MetaTypeService metaTypeService =
-                       // bc.getService(bc.getServiceReference(MetaTypeService.class));
-                       // MetaTypeInformation metaInfo =
-                       // metaTypeService.getMetaTypeInformation(bc.getBundle());
-                       // String[] pids = metaInfo.getPids();
-                       // for (String pid : pids) {
-                       // log.debug("MetaType PID : " + pid);
-                       // ObjectClassDefinition ocd =
-                       // metaInfo.getObjectClassDefinition(pid, null);
-                       // log.debug(ocd.getID());
-                       // for (AttributeDefinition attr :
-                       // ocd.getAttributeDefinitions(ObjectClassDefinition.ALL)) {
-                       // log.debug(attr.getID());
-                       // }
-                       // }
-
+                       // kernel thread
+                       kernelThread = new KernelThread(this);
+                       kernelThread.setContextClassLoader(getClass().getClassLoader());
+                       kernelThread.start();
                } catch (Exception e) {
                        throw new CmsException("Cannot get configuration", e);
                }
@@ -198,8 +189,7 @@ public class CmsState implements NodeState, ManagedService {
        private void initUi() {
                bc.registerService(ApplicationConfiguration.class, new MaintenanceUi(),
                                LangUtils.init(PROPERTY_CONTEXT_NAME, "system"));
-               bc.registerService(ApplicationConfiguration.class, new UserUi(),
-                               LangUtils.init(PROPERTY_CONTEXT_NAME, "user"));
+               bc.registerService(ApplicationConfiguration.class, new UserUi(), LangUtils.init(PROPERTY_CONTEXT_NAME, "user"));
        }
 
        private void initDeployConfigs(Dictionary<String, ?> stateProps) throws IOException {
@@ -301,6 +291,9 @@ public class CmsState implements NodeState, ManagedService {
        }
 
        void shutdown() {
+               if (kernelThread != null)
+                       kernelThread.destroyAndJoin();
+
                if (transactionManager != null)
                        transactionManager.shutdown();
                if (userAdmin != null)
@@ -340,7 +333,7 @@ public class CmsState implements NodeState, ManagedService {
                                nodeDeployment.setDeployedNodeRepository(nodeRepo.getRepository());
                                Dictionary<String, Object> props = LangUtils.init(Constants.SERVICE_PID,
                                                NodeConstants.NODE_DEPLOYMENT_PID);
-                               props.put("uid", nodeRepo.getRootNodeId().toString());
+                               props.put(NodeConstants.CN, nodeRepo.getRootNodeId().toString());
                                // register
                                bc.registerService(LangUtils.names(NodeDeployment.class, ManagedService.class), nodeDeployment, props);
                        }
@@ -374,8 +367,12 @@ public class CmsState implements NodeState, ManagedService {
 
                @Override
                public void removedService(ServiceReference<HttpService> reference, HttpService service) {
-                       dataHttp.destroy();
+                       if (dataHttp != null)
+                               dataHttp.destroy();
                        dataHttp = null;
+                       if (nodeHttp != null)
+                               nodeHttp.destroy();
+                       nodeHttp = null;
                }
 
                private HttpService addHttpService(ServiceReference<HttpService> sr) {
index 7f0197412939123634b60c36d96c6f9f58c97493..6746292f0a0032f2414853d81ca4af636850dc1d 100644 (file)
@@ -624,9 +624,9 @@ final class Kernel implements KernelHeader, KernelConstants {
                // }
 
                // Kernel thread
-               kernelThread = new KernelThread(this);
-               kernelThread.setContextClassLoader(Kernel.class.getClassLoader());
-               kernelThread.start();
+//             kernelThread = new KernelThread(this);
+//             kernelThread.setContextClassLoader(Kernel.class.getClassLoader());
+//             kernelThread.start();
 
                // Publish services to OSGi
                publish();
index 228737b9d42721b64c5b56a7cb52d891f078303b..bd5828602e808ac07432c360b90588aece0460b0 100644 (file)
@@ -14,8 +14,6 @@ import org.argeo.cms.CmsException;
  * monitor/control other processes.
  */
 class KernelThread extends Thread {
-       @SuppressWarnings("unused")
-       private final Kernel kernel;
        private RepositoryStatisticsImpl repoStats;
 
        /** The smallest period of operation, in ms */
@@ -32,10 +30,8 @@ class KernelThread extends Thread {
        @SuppressWarnings("unused")
        private long cycle = 0l;
 
-       public KernelThread(Kernel kernel) {
-               super(kernel.threadGroup, kernel.getClass().getSimpleName());
-               this.kernel = kernel;
-               // this.repoStats = kernel.repository.getRepositoryStatistics();
+       public KernelThread(CmsState cmState) {
+               super(cmState.threadGroup, cmState.getClass().getSimpleName());
        }
 
        private void doSmallestPeriod() {
index 94b8c051e726291e540adde5eca4cba6e477c119..9cd761b2a396e1e1fe0871e7986aaf965a41889b 100644 (file)
@@ -57,7 +57,7 @@ class RepositoryBuilder {
                ClassLoader cl = getClass().getClassLoader();
                InputStream in = null;
                try {
-                       final String base = "/org/argeo/jackrabbit";
+                       final String base = "/org/argeo/cms/internal/kernel";
                        switch (type) {
                        case h2:
                                in = cl.getResourceAsStream(base + "/repository-h2.xml");
@@ -65,6 +65,9 @@ class RepositoryBuilder {
                        case postgresql:
                                in = cl.getResourceAsStream(base + "/repository-postgresql.xml");
                                break;
+                       case postgresql_ds:
+                               in = cl.getResourceAsStream(base + "/repository-postgresql-ds.xml");
+                               break;
                        case memory:
                                in = cl.getResourceAsStream(base + "/repository-memory.xml");
                                break;