X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.jcr%2Fsrc%2Forg%2Fargeo%2Fcms%2Fjcr%2Finternal%2Fservlet%2FCmsRemotingServlet.java;fp=org.argeo.cms.jcr%2Fsrc%2Forg%2Fargeo%2Fcms%2Fjcr%2Finternal%2Fservlet%2FCmsRemotingServlet.java;h=fa3f87f6739f1e3c2803dda54d2b69d130b380c9;hb=bce03099b0d2f1758e7a3d74fba339d0200924d5;hp=0000000000000000000000000000000000000000;hpb=0ea2992e5f3803cd98b5981f27274faa922bc199;p=gpl%2Fargeo-jcr.git diff --git a/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/servlet/CmsRemotingServlet.java b/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/servlet/CmsRemotingServlet.java new file mode 100644 index 0000000..fa3f87f --- /dev/null +++ b/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/servlet/CmsRemotingServlet.java @@ -0,0 +1,44 @@ +package org.argeo.cms.jcr.internal.servlet; + +import java.util.Map; + +import javax.jcr.Repository; + +import org.apache.jackrabbit.server.SessionProvider; +import org.apache.jackrabbit.server.remoting.davex.JcrRemotingServlet; +import org.argeo.api.cms.CmsConstants; + +/** A {@link JcrRemotingServlet} based on {@link CmsSessionProvider}. */ +public class CmsRemotingServlet extends JcrRemotingServlet { + private static final long serialVersionUID = 6459455509684213633L; + private Repository repository; + private SessionProvider sessionProvider; + + public CmsRemotingServlet() { + } + + public CmsRemotingServlet(String alias, Repository repository) { + this.repository = repository; + this.sessionProvider = new CmsSessionProvider(alias); + } + + @Override + public Repository getRepository() { + return repository; + } + + public void setRepository(Repository repository, Map properties) { + this.repository = repository; + String alias = properties.get(CmsConstants.CN); + if (alias != null) + sessionProvider = new CmsSessionProvider(alias); + else + throw new IllegalArgumentException("Only aliased repositories are supported"); + } + + @Override + protected SessionProvider getSessionProvider() { + return sessionProvider; + } + +}