X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FRepositoryBuilder.java;h=9bd81211e3134ecc2f59d4558e5267937519a7ef;hb=3fc22751d5f0023316497dcc321d470936dcd9fb;hp=94b8c051e726291e540adde5eca4cba6e477c119;hpb=b4c772a263e0f19f6c283dbbb87d04794072b284;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 94b8c051e..9bd81211e 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 @@ -24,11 +24,8 @@ import org.apache.jackrabbit.core.cache.CacheManager; import org.apache.jackrabbit.core.config.RepositoryConfig; 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.RepoConf; -import org.osgi.framework.Constants; -import org.osgi.service.cm.ConfigurationAdmin; +import org.argeo.node.NodeConstants; import org.xml.sax.InputSource; /** Can interpret properties in order to create an actual JCR repository. */ @@ -57,7 +54,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 +62,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; @@ -88,23 +88,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)) {