]> git.argeo.org Git - gpl/argeo-jcr.git/blobdiff - org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/servlet/CmsRemotingServlet.java
Code move and initial build
[gpl/argeo-jcr.git] / org.argeo.cms.jcr / src / org / argeo / cms / jcr / internal / servlet / CmsRemotingServlet.java
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 (file)
index 0000000..fa3f87f
--- /dev/null
@@ -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<String, String> 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;
+       }
+
+}