]> git.argeo.org Git - lgpl/argeo-commons.git/blob - CmsRemotingServlet.java
1bda6c7eefc6573fecb75f3662c02c581a0811ee
[lgpl/argeo-commons.git] / CmsRemotingServlet.java
1 package org.argeo.cms.internal.http;
2
3 import java.util.Map;
4
5 import javax.jcr.Repository;
6
7 import org.apache.jackrabbit.server.SessionProvider;
8 import org.apache.jackrabbit.server.remoting.davex.JcrRemotingServlet;
9 import org.argeo.api.NodeConstants;
10
11 /** A {@link JcrRemotingServlet} based on {@link CmsSessionProvider}. */
12 public class CmsRemotingServlet extends JcrRemotingServlet {
13 private static final long serialVersionUID = 6459455509684213633L;
14 private Repository repository;
15 private SessionProvider sessionProvider;
16
17 public CmsRemotingServlet() {
18 }
19
20 public CmsRemotingServlet(String alias, Repository repository) {
21 this.repository = repository;
22 this.sessionProvider = new CmsSessionProvider(alias);
23 }
24
25 @Override
26 public Repository getRepository() {
27 return repository;
28 }
29
30 public void setRepository(Repository repository, Map<String, String> properties) {
31 this.repository = repository;
32 String alias = properties.get(NodeConstants.CN);
33 if (alias != null)
34 sessionProvider = new CmsSessionProvider(alias);
35 else
36 throw new IllegalArgumentException("Only aliased repositories are supported");
37 }
38
39 @Override
40 protected SessionProvider getSessionProvider() {
41 return sessionProvider;
42 }
43
44 }