X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FRepositoryServiceFactory.java;h=b718043d99c6bfbf160a323d249cffeeacae7485;hb=35507e18257f2e9f59842ba5120fcd3f19c4cf4d;hp=a4e3a9bb8db9982d443c0e632ab43cea29e34afd;hpb=b4c772a263e0f19f6c283dbbb87d04794072b284;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/RepositoryServiceFactory.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/RepositoryServiceFactory.java index a4e3a9bb8..b718043d9 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/RepositoryServiceFactory.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/RepositoryServiceFactory.java @@ -6,11 +6,10 @@ import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.jackrabbit.api.JackrabbitRepository; import org.apache.jackrabbit.core.RepositoryContext; -import org.argeo.ArgeoException; -import org.argeo.jcr.ArgeoJcrConstants; -import org.argeo.node.RepoConf; +import org.argeo.cms.CmsException; +import org.argeo.cms.internal.jcr.RepositoryBuilder; +import org.argeo.node.NodeConstants; import org.argeo.util.LangUtils; import org.osgi.framework.BundleContext; import org.osgi.framework.Constants; @@ -23,6 +22,7 @@ class RepositoryServiceFactory implements ManagedServiceFactory { private final BundleContext bc = FrameworkUtil.getBundle(RepositoryServiceFactory.class).getBundleContext(); private Map repositories = new HashMap(); + private Map pidToCn = new HashMap(); @Override public String getName() { @@ -32,7 +32,7 @@ class RepositoryServiceFactory implements ManagedServiceFactory { @Override public void updated(String pid, Dictionary properties) throws ConfigurationException { if (repositories.containsKey(pid)) - throw new ArgeoException("Already a repository registered for " + pid); + throw new CmsException("Already a repository registered for " + pid); if (properties == null) return; @@ -46,11 +46,18 @@ class RepositoryServiceFactory implements ManagedServiceFactory { RepositoryBuilder repositoryBuilder = new RepositoryBuilder(); RepositoryContext repositoryContext = repositoryBuilder.createRepositoryContext(properties); repositories.put(pid, repositoryContext); - Dictionary props = LangUtils.init(Constants.SERVICE_PID, pid); - props.put(ArgeoJcrConstants.JCR_REPOSITORY_URI, properties.get(RepoConf.labeledUri.name())); - bc.registerService(JackrabbitRepository.class, repositoryContext.getRepository(), props); + Dictionary props = LangUtils.dico(Constants.SERVICE_PID, pid); + // props.put(ArgeoJcrConstants.JCR_REPOSITORY_URI, + // properties.get(RepoConf.labeledUri.name())); + Object cn = properties.get(NodeConstants.CN); + if (cn != null) { + props.put(NodeConstants.CN, cn); +// props.put(NodeConstants.JCR_REPOSITORY_ALIAS, cn); + pidToCn.put(pid, cn); + } + bc.registerService(RepositoryContext.class, repositoryContext, props); } catch (Exception e) { - throw new ArgeoException("Cannot create Jackrabbit repository " + pid, e); + throw new CmsException("Cannot create Jackrabbit repository " + pid, e); } } @@ -67,6 +74,9 @@ class RepositoryServiceFactory implements ManagedServiceFactory { for (String pid : repositories.keySet()) { try { repositories.get(pid).getRepository().shutdown(); + if (log.isDebugEnabled()) + log.debug("Shut down repository " + pid + + (pidToCn.containsKey(pid) ? " (" + pidToCn.get(pid) + ")" : "")); } catch (Exception e) { log.error("Error when shutting down Jackrabbit repository " + pid, e); }