From a69d9c12043132bd39c53e40e43fad822b242dcf Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Fri, 25 Feb 2011 11:56:09 +0000 Subject: [PATCH] Add web dav support git-svn-id: https://svn.argeo.org/commons/trunk@4206 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../plugins/org.argeo.jcr.ui.explorer/pom.xml | 6 ++++ .../WEB-INF/web.xml | 4 +-- .../WEB-INF/webdav-servlet.xml | 14 ++------ .../org.argeo.server.jackrabbit/pom.xml | 3 +- .../remote/JcrRemotingHandlerMapping.java | 10 +++--- .../jackrabbit/remote/WebDavServlet.java | 21 ++++++------ .../remote/WebdavHandlerMapping.java | 33 +++++++++++++++++++ .../runtime/org.argeo.server.jcr.mvc/pom.xml | 9 +++-- .../MultipleRepositoryHandlerMapping.java | 2 +- 9 files changed, 70 insertions(+), 32 deletions(-) create mode 100644 server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/WebdavHandlerMapping.java rename server/runtime/{org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote => org.argeo.server.jcr.mvc/src/main/java/org/argeo/jcr/mvc}/MultipleRepositoryHandlerMapping.java (99%) diff --git a/eclipse/plugins/org.argeo.jcr.ui.explorer/pom.xml b/eclipse/plugins/org.argeo.jcr.ui.explorer/pom.xml index 89c51dd8e..d63fd3c9f 100644 --- a/eclipse/plugins/org.argeo.jcr.ui.explorer/pom.xml +++ b/eclipse/plugins/org.argeo.jcr.ui.explorer/pom.xml @@ -89,6 +89,12 @@ pom test + + org.argeo.commons.security + org.argeo.security.ui.application + ${version.argeo-commons} + test + org.argeo.commons.server diff --git a/server/modules/org.argeo.jackrabbit.webapp/WEB-INF/web.xml b/server/modules/org.argeo.jackrabbit.webapp/WEB-INF/web.xml index f3901fe4c..c3ee9fb86 100644 --- a/server/modules/org.argeo.jackrabbit.webapp/WEB-INF/web.xml +++ b/server/modules/org.argeo.jackrabbit.webapp/WEB-INF/web.xml @@ -40,7 +40,7 @@ /remoting/* - + xmlremoting org.springframework.web.servlet.DispatcherServlet @@ -72,7 +72,7 @@ webdav - /default/* + /webdav/* diff --git a/server/modules/org.argeo.jackrabbit.webapp/WEB-INF/webdav-servlet.xml b/server/modules/org.argeo.jackrabbit.webapp/WEB-INF/webdav-servlet.xml index c3ede3fd4..71874b571 100644 --- a/server/modules/org.argeo.jackrabbit.webapp/WEB-INF/webdav-servlet.xml +++ b/server/modules/org.argeo.jackrabbit.webapp/WEB-INF/webdav-servlet.xml @@ -7,11 +7,6 @@ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> - - - - - @@ -19,12 +14,9 @@ class="org.springframework.web.servlet.handler.SimpleServletHandlerAdapter" /> - - - webdavServlet - - + class="org.argeo.jackrabbit.remote.WebdavHandlerMapping"> + + \ No newline at end of file diff --git a/server/runtime/org.argeo.server.jackrabbit/pom.xml b/server/runtime/org.argeo.server.jackrabbit/pom.xml index 346da2e08..4beeb819a 100644 --- a/server/runtime/org.argeo.server.jackrabbit/pom.xml +++ b/server/runtime/org.argeo.server.jackrabbit/pom.xml @@ -33,6 +33,7 @@ org.argeo.jackrabbit.*, + javax.servlet, org.xml.sax;version="0.0.0", org.apache.jackrabbit.webdav.jcr, org.springframework.security.providers.jaas;resolution:="optional", @@ -58,7 +59,7 @@ org.argeo.commons.server - org.argeo.server.jcr + org.argeo.server.jcr.mvc 0.2.3-SNAPSHOT diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/JcrRemotingHandlerMapping.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/JcrRemotingHandlerMapping.java index 195a41d5b..e72a23073 100644 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/JcrRemotingHandlerMapping.java +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/JcrRemotingHandlerMapping.java @@ -7,18 +7,18 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import org.apache.jackrabbit.webdav.jcr.JCRWebdavServerServlet; +import org.argeo.jcr.mvc.MultipleRepositoryHandlerMapping; public class JcrRemotingHandlerMapping extends MultipleRepositoryHandlerMapping { protected HttpServlet createServlet(Repository repository, String pathPrefix) throws ServletException { - JcrRemotingServlet jcrRemotingServlet = new JcrRemotingServlet( - repository); + JcrRemotingServlet servlet = 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; + servlet.init(new DelegatingServletConfig(pathPrefix.replace('/', '_'), + initParameters)); + return servlet; } } diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/WebDavServlet.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/WebDavServlet.java index 02fdcde73..ec140f892 100644 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/WebDavServlet.java +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/WebDavServlet.java @@ -19,12 +19,14 @@ package org.argeo.jackrabbit.remote; import java.io.IOException; import javax.jcr.Repository; +import javax.jcr.SimpleCredentials; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.jackrabbit.server.SessionProvider; import org.apache.jackrabbit.webdav.simple.ResourceConfig; import org.apache.jackrabbit.webdav.simple.SimpleWebdavServlet; import org.argeo.ArgeoException; @@ -35,11 +37,12 @@ public class WebDavServlet extends SimpleWebdavServlet { private static final long serialVersionUID = 1L; private final static Log log = LogFactory.getLog(WebDavServlet.class); - private Repository repository; - private Resource resourceConfiguration; - - public WebDavServlet() { + private final Repository repository; + private final Resource resourceConfiguration; + public WebDavServlet(Repository repository, Resource configuration) { + this.repository = repository; + this.resourceConfiguration = configuration; } @Override @@ -75,12 +78,10 @@ public class WebDavServlet extends SimpleWebdavServlet { return repository; } - public void setRepository(Repository repository) { - this.repository = repository; - } - - public void setResourceConfiguration(Resource resourceConfig) { - this.resourceConfiguration = resourceConfig; + @Override + public SessionProvider getSessionProvider() { + return new CachingSessionProvider(new SimpleCredentials("demo", + "demo".toCharArray())); } } diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/WebdavHandlerMapping.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/WebdavHandlerMapping.java new file mode 100644 index 000000000..02132ec5b --- /dev/null +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/WebdavHandlerMapping.java @@ -0,0 +1,33 @@ +package org.argeo.jackrabbit.remote; + +import java.util.Properties; + +import javax.jcr.Repository; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; + +import org.apache.jackrabbit.webdav.jcr.JCRWebdavServerServlet; +import org.argeo.jcr.mvc.MultipleRepositoryHandlerMapping; +import org.springframework.core.io.Resource; + +public class WebdavHandlerMapping extends MultipleRepositoryHandlerMapping { + private Resource configuration; + + protected HttpServlet createServlet(Repository repository, String pathPrefix) + throws ServletException { + + WebDavServlet servlet = new WebDavServlet(repository, configuration); + Properties initParameters = new Properties(); + initParameters.setProperty( + JCRWebdavServerServlet.INIT_PARAM_RESOURCE_PATH_PREFIX, + pathPrefix); + servlet.init(new DelegatingServletConfig(pathPrefix.replace('/', '_'), + initParameters)); + return servlet; + } + + public void setConfiguration(Resource configuration) { + this.configuration = configuration; + } + +} diff --git a/server/runtime/org.argeo.server.jcr.mvc/pom.xml b/server/runtime/org.argeo.server.jcr.mvc/pom.xml index 82c74af04..847b933f7 100644 --- a/server/runtime/org.argeo.server.jcr.mvc/pom.xml +++ b/server/runtime/org.argeo.server.jcr.mvc/pom.xml @@ -1,4 +1,5 @@ - + 4.0.0 org.argeo.commons.server @@ -31,6 +32,10 @@ org.argeo.jcr.mvc.* + + org.springframework.beans.factory, + * + @@ -64,7 +69,7 @@ org.springframework.ws org.springframework.xml - + org.slf4j diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/MultipleRepositoryHandlerMapping.java b/server/runtime/org.argeo.server.jcr.mvc/src/main/java/org/argeo/jcr/mvc/MultipleRepositoryHandlerMapping.java similarity index 99% rename from server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/MultipleRepositoryHandlerMapping.java rename to server/runtime/org.argeo.server.jcr.mvc/src/main/java/org/argeo/jcr/mvc/MultipleRepositoryHandlerMapping.java index 12cff99e2..10bb8b570 100644 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/MultipleRepositoryHandlerMapping.java +++ b/server/runtime/org.argeo.server.jcr.mvc/src/main/java/org/argeo/jcr/mvc/MultipleRepositoryHandlerMapping.java @@ -1,4 +1,4 @@ -package org.argeo.jackrabbit.remote; +package org.argeo.jcr.mvc; import java.util.Enumeration; import java.util.Properties; -- 2.39.2