From: Mathieu Baudier Date: Tue, 9 Aug 2016 16:49:02 +0000 (+0000) Subject: Use CMS internal Jackrabbit configurations. X-Git-Tag: argeo-commons-2.1.45~36 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=00b2a843adb4c126178eb944a72042a4ee8f6d1e;p=lgpl%2Fargeo-commons.git Use CMS internal Jackrabbit configurations. git-svn-id: https://svn.argeo.org/commons/trunk@9075 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsState.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsState.java index f975d6cf8..7ad61e50f 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsState.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsState.java @@ -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 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 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 reference, HttpService service) { - dataHttp.destroy(); + if (dataHttp != null) + dataHttp.destroy(); dataHttp = null; + if (nodeHttp != null) + nodeHttp.destroy(); + nodeHttp = null; } private HttpService addHttpService(ServiceReference sr) { diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java index 7f0197412..6746292f0 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java @@ -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(); diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelThread.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelThread.java index 228737b9d..bd5828602 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelThread.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/KernelThread.java @@ -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() { diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/RepositoryBuilder.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/RepositoryBuilder.java index 94b8c051e..9cd761b2a 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/RepositoryBuilder.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/RepositoryBuilder.java @@ -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;