]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java
Start clarifying the kernel.
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / Kernel.java
index d3787a511db4d04088b8c8d0ed4468d09ab32b2b..199356198e259e7eee547609b0d56cfad04b655b 100644 (file)
@@ -3,6 +3,7 @@ package org.argeo.cms.internal.kernel;
 import static bitronix.tm.TransactionManagerServices.getTransactionManager;
 import static bitronix.tm.TransactionManagerServices.getTransactionSynchronizationRegistry;
 import static java.util.Locale.ENGLISH;
+import static org.argeo.cms.internal.kernel.DataModelNamespace.CMS_DATA_MODEL_NAMESPACE;
 import static org.argeo.cms.internal.kernel.KernelUtils.getFrameworkProp;
 import static org.argeo.cms.internal.kernel.KernelUtils.getOsgiInstanceDir;
 import static org.argeo.jcr.ArgeoJcrConstants.ALIAS_NODE;
@@ -214,8 +215,13 @@ final class Kernel implements KernelHeader, KernelConstants, ServiceListener {
                        Configuration nodeConf = conf.getConfiguration(ArgeoJcrConstants.REPO_PID_NODE);
                        if (nodeConf.getProperties() == null) {
                                Dictionary<String, ?> props = getNodeConfigFromFrameworkProperties();
-                               if (props == null)// TODO interactive configuration
+                               if (props == null) {
+                                       // TODO interactive configuration
+                                       if (log.isDebugEnabled())
+                                               log.debug("No argeo.node.repo.type=localfs|h2|postgresql|memory"
+                                                               + " property defined, entering interactive mode...");
                                        return;
+                               }
                                nodeConf.update(props);
                        }
                } catch (IOException e) {
@@ -238,8 +244,10 @@ final class Kernel implements KernelHeader, KernelConstants, ServiceListener {
 
                if (repository == null)
                        repository = new NodeRepository();
-               if (repositoryFactory == null)
+               if (repositoryFactory == null) {
                        repositoryFactory = new OsgiJackrabbitRepositoryFactory();
+                       repositoryFactory.setBundleContext(bc);
+               }
                userAdmin = new NodeUserAdmin(transactionManager, repository);
 
                // ADMIN UIs
@@ -271,8 +279,6 @@ final class Kernel implements KernelHeader, KernelConstants, ServiceListener {
                return props;
        }
 
-       private final static String CMS_DATA_MODEL = "cms.datamodel";
-
        private void prepareDataModel(ManagedJackrabbitRepository nodeRepo) {
                Session adminSession = null;
                try {
@@ -296,12 +302,12 @@ final class Kernel implements KernelHeader, KernelConstants, ServiceListener {
 
        private void processWiring(Session adminSession, BundleWiring wiring, Set<String> processed) {
                // recursively process requirements first
-               List<BundleWire> requiredWires = wiring.getRequiredWires(CMS_DATA_MODEL);
+               List<BundleWire> requiredWires = wiring.getRequiredWires(CMS_DATA_MODEL_NAMESPACE);
                for (BundleWire wire : requiredWires) {
                        processWiring(adminSession, wire.getProviderWiring(), processed);
                        // registerCnd(adminSession, wire.getCapability(), processed);
                }
-               List<BundleCapability> capabilities = wiring.getCapabilities(CMS_DATA_MODEL);
+               List<BundleCapability> capabilities = wiring.getCapabilities(CMS_DATA_MODEL_NAMESPACE);
                for (BundleCapability capability : capabilities) {
                        registerCnd(adminSession, capability, processed);
                }
@@ -309,13 +315,13 @@ final class Kernel implements KernelHeader, KernelConstants, ServiceListener {
 
        private void registerCnd(Session adminSession, BundleCapability capability, Set<String> processed) {
                Map<String, Object> attrs = capability.getAttributes();
-               String name = attrs.get("name").toString();
+               String name = attrs.get(DataModelNamespace.CAPABILITY_NAME_ATTRIBUTE).toString();
                if (processed.contains(name)) {
                        if (log.isTraceEnabled())
                                log.trace("Data model " + name + " has already been processed");
                        return;
                }
-               String path = attrs.get("cnd").toString();
+               String path = attrs.get(DataModelNamespace.CAPABILITY_CND_ATTRIBUTE).toString();
                URL url = capability.getRevision().getBundle().getResource(path);
                try (Reader reader = new InputStreamReader(url.openStream())) {
                        CndImporter.registerNodeTypes(reader, adminSession, true);
@@ -545,13 +551,13 @@ final class Kernel implements KernelHeader, KernelConstants, ServiceListener {
                                        props.put(key, sr.getProperty(key));
                                if (ServiceEvent.REGISTERED == event.getType()) {
                                        try {
-                                               repositoryFactory.register(repository, props);
+                                               // repositoryFactory.register(repository, props);
                                                dataHttp.registerRepositoryServlets(alias, repository);
                                        } catch (Exception e) {
                                                throw new CmsException("Could not publish JCR repository " + alias, e);
                                        }
                                } else if (ServiceEvent.UNREGISTERING == event.getType()) {
-                                       repositoryFactory.unregister(repository, props);
+                                       // repositoryFactory.unregister(repository, props);
                                        dataHttp.unregisterRepositoryServlets(alias);
                                }
                        }