X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FRepositoryBuilder.java;h=abfb44642b137cfc8856732ae4da3553b5a66a0f;hb=277bb126a4b8523b93c2cd9abd345833a8387eba;hp=9cd761b2a396e1e1fe0871e7986aaf965a41889b;hpb=00b2a843adb4c126178eb944a72042a4ee8f6d1e;p=lgpl%2Fargeo-commons.git 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 9cd761b2a..abfb44642 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 @@ -26,6 +26,7 @@ import org.apache.jackrabbit.core.config.RepositoryConfigurationParser; import org.argeo.cms.CmsException; import org.argeo.jcr.ArgeoJcrConstants; import org.argeo.jcr.ArgeoJcrException; +import org.argeo.node.NodeConstants; import org.argeo.node.RepoConf; import org.osgi.framework.Constants; import org.osgi.service.cm.ConfigurationAdmin; @@ -91,23 +92,35 @@ class RepositoryBuilder { private Properties getConfigurationProperties(JackrabbitType type, Dictionary properties) { Properties props = new Properties(); - keys: for (Enumeration keys = properties.keys(); keys.hasMoreElements();) { + for (Enumeration keys = properties.keys(); keys.hasMoreElements();) { String key = keys.nextElement(); - if (key.equals(ConfigurationAdmin.SERVICE_FACTORYPID) || key.equals(Constants.SERVICE_PID) - || key.equals(ArgeoJcrConstants.JCR_REPOSITORY_ALIAS)) - continue keys; - String value = prop(properties, RepoConf.valueOf(key)); - if (value != null) - props.put(key, value); + // if (key.equals(ConfigurationAdmin.SERVICE_FACTORYPID) || + // key.equals(Constants.SERVICE_PID) + // || key.equals(ArgeoJcrConstants.JCR_REPOSITORY_ALIAS)) + // continue keys; + // try { + // String value = prop(properties, RepoConf.valueOf(key)); + // if (value != null) + props.put(key, properties.get(key)); + // } catch (IllegalArgumentException e) { + // // ignore non RepoConf + // // FIXME make it more flexible/extensible + // } } // home String homeUri = props.getProperty(RepoConf.labeledUri.name()); Path homePath; - try { - homePath = Paths.get(new URI(homeUri)).toAbsolutePath(); - } catch (URISyntaxException e) { - throw new CmsException("Invalid repository home URI", e); + if (homeUri == null) { + String cn = props.getProperty(NodeConstants.CN); + assert cn != null; + homePath = KernelUtils.getOsgiInstancePath(KernelConstants.DIR_REPOS + '/' + cn); + } else { + try { + homePath = Paths.get(new URI(homeUri)).toAbsolutePath(); + } catch (URISyntaxException e) { + throw new CmsException("Invalid repository home URI", e); + } } Path rootUuidPath = homePath.resolve("repository/meta/rootUUID"); if (!Files.exists(rootUuidPath)) {