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; } }