]> git.argeo.org Git - lgpl/argeo-commons.git/blob - JackrabbitRepositoryFactory.java
bcf02a3c1e564896a9dffb7b6b73ceabcdb2577b
[lgpl/argeo-commons.git] / JackrabbitRepositoryFactory.java
1 package org.argeo.jackrabbit;
2
3 import java.util.HashMap;
4 import java.util.Map;
5
6 import javax.jcr.Repository;
7 import javax.jcr.RepositoryException;
8 import javax.jcr.RepositoryFactory;
9
10 import org.apache.commons.logging.Log;
11 import org.apache.commons.logging.LogFactory;
12 import org.apache.jackrabbit.commons.JcrUtils;
13 import org.apache.jackrabbit.jcr2dav.Jcr2davRepositoryFactory;
14 import org.argeo.ArgeoException;
15 import org.argeo.jcr.ArgeoJcrConstants;
16 import org.argeo.jcr.DefaultRepositoryFactory;
17
18 public class JackrabbitRepositoryFactory extends DefaultRepositoryFactory
19 implements RepositoryFactory, ArgeoJcrConstants {
20 private final static Log log = LogFactory
21 .getLog(JackrabbitRepositoryFactory.class);
22
23 @SuppressWarnings("rawtypes")
24 public Repository getRepository(Map parameters) throws RepositoryException {
25 Repository repository = super.getRepository(parameters);
26 if (repository != null)
27 return repository;
28
29 String uri;
30 if (parameters.containsKey(JCR_REPOSITORY_URI))
31 uri = parameters.get(JCR_REPOSITORY_URI).toString();
32 else if (parameters.containsKey(JcrUtils.REPOSITORY_URI))
33 uri = parameters.get(JcrUtils.REPOSITORY_URI).toString();
34 else
35 return null;
36
37 Map<String, String> params = new HashMap<String, String>();
38 params.put(JcrUtils.REPOSITORY_URI, uri);
39 repository = new Jcr2davRepositoryFactory().getRepository(params);
40 if (repository == null)
41 throw new ArgeoException("Remote Davex repository " + uri
42 + " not found");
43 log.info("Initialized remote Jackrabbit repository " + repository
44 + " from uri " + uri);
45
46 return repository;
47 }
48 }