]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java
Improve IPA integration
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / CmsDeployment.java
index 20a899eca2a8a2fb7f6e3e82ca4bf529008f7c12..1d1734d36645664b0bc5adca04183674614daed0 100644 (file)
@@ -36,6 +36,7 @@ import org.osgi.framework.ServiceReference;
 import org.osgi.framework.wiring.BundleCapability;
 import org.osgi.framework.wiring.BundleWire;
 import org.osgi.framework.wiring.BundleWiring;
+import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.service.cm.ManagedService;
 import org.osgi.service.http.HttpService;
@@ -43,6 +44,8 @@ import org.osgi.service.useradmin.UserAdmin;
 import org.osgi.util.tracker.ServiceTracker;
 
 public class CmsDeployment implements NodeDeployment {
+       private final static String LEGACY_JCR_REPOSITORY_ALIAS = "argeo.jcr.repository.alias";
+       
        private final Log log = LogFactory.getLog(getClass());
        private final BundleContext bc = FrameworkUtil.getBundle(getClass()).getBundleContext();
 
@@ -86,6 +89,15 @@ public class CmsDeployment implements NodeDeployment {
                                ConfigurationAdmin configurationAdmin = bc.getService(reference);
                                deployConfig = new DeployConfig(configurationAdmin, cleanState);
                                httpExpected = deployConfig.getProps(KernelConstants.JETTY_FACTORY_PID, "default") != null;
+                               try {
+                                       Configuration[] configs= configurationAdmin.listConfigurations("(service.factoryPid="+NodeConstants.NODE_REPOS_FACTORY_PID+")");
+                                       for(Configuration config:configs){
+                                               Object cn = config.getProperties().get(NodeConstants.CN);
+                                               log.debug("Standalone repo cn: "+cn);
+                                       }
+                               } catch (Exception e) {
+                                       throw new CmsException("Cannot initialize config", e);
+                               }
                                return super.addingService(reference);
                        }
                }.open();
@@ -133,10 +145,13 @@ public class CmsDeployment implements NodeDeployment {
 
                // home
                prepareDataModel(KernelUtils.openAdminSession(deployedNodeRepository));
+       }
+
+       private void prepareHomeRepository(Repository deployedRepository) {
                Hashtable<String, String> regProps = new Hashtable<String, String>();
-               regProps.put(NodeConstants.CN, NodeConstants.ALIAS_HOME);
-               regProps.put(NodeConstants.JCR_REPOSITORY_ALIAS, NodeConstants.ALIAS_HOME);
-               homeRepository = new HomeRepository(deployedNodeRepository);
+               regProps.put(NodeConstants.CN, NodeConstants.HOME);
+               regProps.put(LEGACY_JCR_REPOSITORY_ALIAS, NodeConstants.HOME);
+               homeRepository = new HomeRepository(deployedRepository);
                // register
                bc.registerService(Repository.class, homeRepository, regProps);
 
@@ -148,7 +163,7 @@ public class CmsDeployment implements NodeDeployment {
                                CallbackHandler callbackHandler = bc.getService(reference);
                                nodeKeyring.setDefaultCallbackHandler(callbackHandler);
                                bc.registerService(LangUtils.names(CryptoKeyring.class, ManagedService.class), nodeKeyring,
-                                               LangUtils.init(Constants.SERVICE_PID, NodeConstants.NODE_KEYRING_PID));
+                                               LangUtils.dico(Constants.SERVICE_PID, NodeConstants.NODE_KEYRING_PID));
                                return callbackHandler;
                        }
 
@@ -204,9 +219,9 @@ public class CmsDeployment implements NodeDeployment {
 
                if (!asBoolean((String) attrs.get(DataModelNamespace.CAPABILITY_ABSTRACT_ATTRIBUTE))) {
                        Hashtable<String, Object> properties = new Hashtable<>();
-                       properties.put(NodeConstants.JCR_REPOSITORY_ALIAS, name);
+                       properties.put(LEGACY_JCR_REPOSITORY_ALIAS, name);
                        properties.put(NodeConstants.CN, name);
-                       if (name.equals(NodeConstants.ALIAS_NODE))
+                       if (name.equals(NodeConstants.NODE))
                                properties.put(Constants.SERVICE_RANKING, Integer.MAX_VALUE);
                        LocalRepository localRepository = new LocalRepository(adminSession.getRepository(), capability);
                        bc.registerService(Repository.class, localRepository, properties);
@@ -244,10 +259,15 @@ public class CmsDeployment implements NodeDeployment {
                public RepositoryContext addingService(ServiceReference<RepositoryContext> reference) {
                        RepositoryContext nodeRepo = bc.getService(reference);
                        Object cn = reference.getProperty(NodeConstants.CN);
-                       if (cn != null && cn.equals(NodeConstants.ALIAS_NODE)) {
-                               prepareNodeRepository(nodeRepo.getRepository());
-                               nodeAvailable = true;
-                               checkReadiness();
+                       if (cn != null) {
+                               if (cn.equals(NodeConstants.NODE)) {
+                                       prepareNodeRepository(nodeRepo.getRepository());
+                                       prepareHomeRepository(nodeRepo.getRepository());
+                                       nodeAvailable = true;
+                                       checkReadiness();
+                               }else{
+                                       // TODO standalone
+                               }
                        }
                        return nodeRepo;
                }