Refactor deploy properties and move legacy CMS exception.
[lgpl/argeo-commons.git] / jcr / org.argeo.cms.jcr / src / org / argeo / cms / jcr / internal / RepositoryContextsFactory.java
index 11e9a9e92bc0e064cf2fa9d3483251afcc7fd600..f3a099b08f7f64f670108d1f3566f1b8f596b4d2 100644 (file)
@@ -16,6 +16,7 @@ import org.apache.jackrabbit.core.RepositoryContext;
 import org.argeo.api.cms.CmsConstants;
 import org.argeo.api.cms.CmsLog;
 import org.argeo.api.cms.CmsState;
+import org.argeo.cms.CmsDeployProperty;
 import org.argeo.cms.internal.jcr.RepoConf;
 import org.argeo.cms.internal.jcr.RepositoryBuilder;
 import org.argeo.cms.jcr.internal.osgi.CmsJcrActivator;
@@ -25,6 +26,7 @@ import org.osgi.service.cm.ManagedServiceFactory;
 /** A {@link ManagedServiceFactory} creating or referencing JCR repositories. */
 public class RepositoryContextsFactory {
        private final static CmsLog log = CmsLog.getLog(RepositoryContextsFactory.class);
+       private final static String NODE_REPO_PROP_PREFIX = "argeo.node.repo.";
 //     private final BundleContext bc = FrameworkUtil.getBundle(RepositoryServiceFactory.class).getBundleContext();
 
 //     private Map<String, RepositoryContext> repositories = new HashMap<String, RepositoryContext>();
@@ -68,8 +70,11 @@ public class RepositoryContextsFactory {
        /** Override the provided config with the framework properties */
        private Dictionary<String, Object> getNodeRepositoryConfig() {
                Dictionary<String, Object> props = new Hashtable<String, Object>();
+               addDeployProperty(CmsDeployProperty.DB_URL, RepoConf.dburl, props);
+               addDeployProperty(CmsDeployProperty.DB_USER, RepoConf.dbuser, props);
+               addDeployProperty(CmsDeployProperty.DB_PASSWORD, RepoConf.dbpassword, props);
                for (RepoConf repoConf : RepoConf.values()) {
-                       Object value = getFrameworkProp(CmsConstants.NODE_REPO_PROP_PREFIX + repoConf.name());
+                       Object value = getFrameworkProp(NODE_REPO_PROP_PREFIX + repoConf.name());
                        if (value != null) {
                                props.put(repoConf.name(), value);
                                if (log.isDebugEnabled())
@@ -80,6 +85,15 @@ public class RepositoryContextsFactory {
                return props;
        }
 
+       private void addDeployProperty(CmsDeployProperty deployProperty, RepoConf repoConf,
+                       Dictionary<String, Object> props) {
+               String value = getFrameworkProp(deployProperty.getProperty());
+               if (value != null) {
+                       props.put(repoConf.name(), value);
+               }
+
+       }
+
 //     @Override
 //     public void updated(String pid, Dictionary<String, ?> properties) throws ConfigurationException {
        protected void deployRepository(Dictionary<String, Object> properties) {