]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/MultipleRepositoryHandlerMapping.java
Improve build and maven structure
[lgpl/argeo-commons.git] / server / runtime / org.argeo.server.jackrabbit / src / main / java / org / argeo / jackrabbit / remote / MultipleRepositoryHandlerMapping.java
index ae3ede74243d786916651f7b05e0a7c38e341c19..12cff99e282c96311e2ca43a94d41e3a694ad0a0 100644 (file)
@@ -12,7 +12,6 @@ import javax.servlet.http.HttpServletRequest;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.jackrabbit.webdav.jcr.JCRWebdavServerServlet;
 import org.argeo.ArgeoException;
 import org.argeo.jcr.RepositoryRegister;
 import org.springframework.beans.BeansException;
@@ -23,8 +22,8 @@ import org.springframework.web.context.ServletContextAware;
 import org.springframework.web.servlet.HandlerExecutionChain;
 import org.springframework.web.servlet.HandlerMapping;
 
-public class MultipleRepositoryHandlerMapping implements HandlerMapping,
-               ApplicationContextAware, ServletContextAware {
+public abstract class MultipleRepositoryHandlerMapping implements
+               HandlerMapping, ApplicationContextAware, ServletContextAware {
        private final static Log log = LogFactory
                        .getLog(MultipleRepositoryHandlerMapping.class);
 
@@ -33,6 +32,10 @@ public class MultipleRepositoryHandlerMapping implements HandlerMapping,
 
        private RepositoryRegister repositoryRegister;
 
+       /** Actually creates the servlet to be registered. */
+       protected abstract HttpServlet createServlet(Repository repository,
+                       String pathPrefix) throws ServletException;
+
        public HandlerExecutionChain getHandler(HttpServletRequest request)
                        throws Exception {
                if (log.isTraceEnabled()) {
@@ -58,19 +61,6 @@ public class MultipleRepositoryHandlerMapping implements HandlerMapping,
                return new HandlerExecutionChain(remotingServlet);
        }
 
-       protected HttpServlet createServlet(Repository repository, String pathPrefix)
-                       throws ServletException {
-               JcrRemotingServlet jcrRemotingServlet = new JcrRemotingServlet(
-                               repository);
-               Properties initParameters = new Properties();
-               initParameters.setProperty(
-                               JCRWebdavServerServlet.INIT_PARAM_RESOURCE_PATH_PREFIX,
-                               pathPrefix);
-               jcrRemotingServlet.init(new DelegatingServletConfig(pathPrefix.replace(
-                               '/', '_'), initParameters));
-               return jcrRemotingServlet;
-       }
-
        /** The repository name is the first part of the path info */
        protected String extractRepositoryName(HttpServletRequest request) {
                String pathInfo = request.getPathInfo();
@@ -103,7 +93,7 @@ public class MultipleRepositoryHandlerMapping implements HandlerMapping,
                this.repositoryRegister = repositoryRegister;
        }
 
-       private class DelegatingServletConfig implements ServletConfig {
+       protected class DelegatingServletConfig implements ServletConfig {
                private String name;
                private Properties initParameters;
 
@@ -125,6 +115,7 @@ public class MultipleRepositoryHandlerMapping implements HandlerMapping,
                        return initParameters.getProperty(paramName);
                }
 
+               @SuppressWarnings("rawtypes")
                public Enumeration getInitParameterNames() {
                        return initParameters.keys();
                }