From: Mathieu Baudier Date: Fri, 26 Oct 2012 16:14:32 +0000 (+0000) Subject: JCR repository factory recognizes vm:///alias URIs X-Git-Tag: argeo-commons-2.1.30~796 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=31b2f6761ec882c539b65b80fc95906bd12014ef;p=lgpl%2Fargeo-commons.git JCR repository factory recognizes vm:///alias URIs git-svn-id: https://svn.argeo.org/commons/trunk@5658 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/JackrabbitRepositoryFactory.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/JackrabbitRepositoryFactory.java index 1f2ec2ae2..13ca680fa 100644 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/JackrabbitRepositoryFactory.java +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/JackrabbitRepositoryFactory.java @@ -15,8 +15,6 @@ */ package org.argeo.jackrabbit; -import java.net.URI; -import java.net.URISyntaxException; import java.util.HashMap; import java.util.Map; import java.util.Properties; @@ -60,17 +58,10 @@ public class JackrabbitRepositoryFactory extends DefaultRepositoryFactory if (uri.startsWith("http"))// http, https repository = createRemoteRepository(uri); else if (uri.startsWith("vm")) { - try { - URI uriObj = new URI(uri); - String alias = uriObj.getPath(); - if (alias.charAt(0) == '/') - alias = alias.substring(1); - if (alias.charAt(alias.length() - 1) == '/') - alias = alias.substring(0, alias.length() - 1); - repository = getRepositoryByAlias(alias); - } catch (URISyntaxException e) { - throw new ArgeoException("Cannot interpret URI " + uri, e); - } + log.warn("URI " + + uri + + " should have been managed by generic JCR repository factory"); + repository = getRepositoryByAlias(getAliasFromURI(uri)); } } diff --git a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/DefaultRepositoryFactory.java b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/DefaultRepositoryFactory.java index 095b62099..18cc8b80a 100644 --- a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/DefaultRepositoryFactory.java +++ b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/DefaultRepositoryFactory.java @@ -15,6 +15,8 @@ */ package org.argeo.jcr; +import java.net.URI; +import java.net.URISyntaxException; import java.util.Map; import java.util.Properties; @@ -22,20 +24,39 @@ import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.RepositoryFactory; +import org.argeo.ArgeoException; + +/** + * Simple implementation of {@link RepositoryFactory}, supporting OSGi aliases. + */ public class DefaultRepositoryFactory extends DefaultRepositoryRegister implements RepositoryFactory, ArgeoJcrConstants { - // private final static Log log = LogFactory - // .getLog(DefaultRepositoryFactory.class); - @SuppressWarnings("rawtypes") public Repository getRepository(Map parameters) throws RepositoryException { if (parameters.containsKey(JCR_REPOSITORY_ALIAS)) { String alias = parameters.get(JCR_REPOSITORY_ALIAS).toString(); return getRepositoryByAlias(alias); + } else if (parameters.containsKey(JCR_REPOSITORY_URI)) { + String uri = parameters.get(JCR_REPOSITORY_URI).toString(); + return getRepositoryByAlias(getAliasFromURI(uri)); } return null; } + protected String getAliasFromURI(String uri) { + try { + URI uriObj = new URI(uri); + String alias = uriObj.getPath(); + if (alias.charAt(0) == '/') + alias = alias.substring(1); + if (alias.charAt(alias.length() - 1) == '/') + alias = alias.substring(0, alias.length() - 1); + return alias; + } catch (URISyntaxException e) { + throw new ArgeoException("Cannot interpret URI " + uri, e); + } + } + /** * Retrieve a repository by alias *