X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=server%2Fruntime%2Forg.argeo.server.jackrabbit%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fjackrabbit%2Fremote%2FMultipleRepositoryHandlerMapping.java;h=12cff99e282c96311e2ca43a94d41e3a694ad0a0;hb=ed7bc12c0c7bc20d032c8486ae6279086111765a;hp=ae3ede74243d786916651f7b05e0a7c38e341c19;hpb=187bb52148318b72491ab0c95b388c710b1ed6a5;p=lgpl%2Fargeo-commons.git diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/MultipleRepositoryHandlerMapping.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/MultipleRepositoryHandlerMapping.java index ae3ede742..12cff99e2 100644 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/MultipleRepositoryHandlerMapping.java +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/MultipleRepositoryHandlerMapping.java @@ -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(); }