View Javadoc
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  }