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=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..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; @@ -57,7 +58,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 +66,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 +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)) {