--- /dev/null
+package org.argeo.sandbox.jackrabbit;
+
+import java.io.FileInputStream;
+
+import org.apache.commons.httpclient.Credentials;
+import org.apache.commons.httpclient.HostConfiguration;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpConnectionManager;
+import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
+import org.apache.commons.httpclient.UsernamePasswordCredentials;
+import org.apache.commons.httpclient.auth.AuthScope;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
+import org.apache.commons.httpclient.methods.RequestEntity;
+import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jackrabbit.webdav.client.methods.CheckoutMethod;
+import org.apache.jackrabbit.webdav.client.methods.CopyMethod;
+import org.apache.jackrabbit.webdav.client.methods.DavMethod;
+import org.apache.jackrabbit.webdav.client.methods.PutMethod;
+
+public class WebDavTest {
+ private final static Log log = LogFactory.getLog(WebDavTest.class);
+
+ /**
+ * @param args
+ */
+ public static void main(String[] args) {
+ try {
+ HostConfiguration hostConfig = new HostConfiguration();
+ hostConfig.setHost("localhost", 7070);
+ // hostConfig.
+ HttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
+ HttpConnectionManagerParams params = new HttpConnectionManagerParams();
+ int maxHostConnections = 20;
+ params.setMaxConnectionsPerHost(hostConfig, maxHostConnections);
+ connectionManager.setParams(params);
+ HttpClient client = new HttpClient(connectionManager);
+ Credentials creds = new UsernamePasswordCredentials("demo", "demo");
+ client.getState().setCredentials(AuthScope.ANY, creds);
+ client.setHostConfiguration(hostConfig);
+ // return client;
+
+ String baseUrl = "http://localhost:7070/org.argeo.server.jackrabbit.webapp/default/";
+ String fileName = "test.xml";
+ String url1 = baseUrl + fileName;
+ String url2 = baseUrl + "test-copied.xml";
+
+ // PUT
+ log.debug("Create " + url1);
+ PutMethod pm = new PutMethod(url1);
+ RequestEntity requestEntity = new InputStreamRequestEntity(
+ new FileInputStream(fileName));
+ pm.setRequestEntity(requestEntity);
+ client.executeMethod(pm);
+ log.debug("POST status: " + pm.getStatusCode() + " "
+ + pm.getStatusText());
+
+ // COPY
+ log.debug("Copy to " + url2);
+ DavMethod copy = new CopyMethod(url1, url2, true);
+ client.executeMethod(copy);
+
+ log.debug("COPY status: " + copy.getStatusCode() + " "
+ + copy.getStatusText());
+
+ // GET
+ // CheckoutMethod gm = new CheckoutMethod(baseUrl + fileName);
+ log.debug("Retrieve " + url2);
+ GetMethod gm = new GetMethod(url2);
+ client.executeMethod(gm);
+ String responseGet = gm.getResponseBodyAsString();
+ log.debug("GET status: " + gm.getStatusCode() + " "
+ + gm.getStatusText());
+ // log.debug("GET: " + responseGet);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+}
+++ /dev/null
-package webdav;
-
-import java.io.FileInputStream;
-
-import org.apache.commons.httpclient.Credentials;
-import org.apache.commons.httpclient.HostConfiguration;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpConnectionManager;
-import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
-import org.apache.commons.httpclient.UsernamePasswordCredentials;
-import org.apache.commons.httpclient.auth.AuthScope;
-import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
-import org.apache.commons.httpclient.methods.RequestEntity;
-import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.jackrabbit.webdav.client.methods.CheckoutMethod;
-import org.apache.jackrabbit.webdav.client.methods.PutMethod;
-
-public class WebDavTest {
- private final static Log log = LogFactory.getLog(WebDavTest.class);
-
- /**
- * @param args
- */
- public static void main(String[] args) {
- try {
- HostConfiguration hostConfig = new HostConfiguration();
- hostConfig.setHost("localhost", 7070);
- // hostConfig.
- HttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
- HttpConnectionManagerParams params = new HttpConnectionManagerParams();
- int maxHostConnections = 20;
- params.setMaxConnectionsPerHost(hostConfig, maxHostConnections);
- connectionManager.setParams(params);
- HttpClient client = new HttpClient(connectionManager);
- Credentials creds = new UsernamePasswordCredentials("demo", "demo");
- client.getState().setCredentials(AuthScope.ANY, creds);
- client.setHostConfiguration(hostConfig);
- // return client;
-
- String baseUrl = "http://localhost:7070/org.argeo.server.jackrabbit.webapp/default/";
-
- String fileName = "test.xml";
-
- // PUT
- PutMethod pm = new PutMethod(baseUrl + fileName);
- RequestEntity requestEntity = new InputStreamRequestEntity(
- new FileInputStream(fileName));
- pm.setRequestEntity(requestEntity);
- client.executeMethod(pm);
-
- // GET
- CheckoutMethod gm = new CheckoutMethod(baseUrl + fileName);
- client.executeMethod(gm);
- String responseGet = gm.getResponseBodyAsString();
- log.debug("CHECKOUT: " + responseGet);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
-}
# ***** Set root logger level to DEBUG and its only appender to A.
log4j.rootLogger=WARN, A
+log4j.logger.org.argeo=DEBUG
+
# ***** A is set to be a ConsoleAppender.
log4j.appender.A=org.apache.log4j.ConsoleAppender
# ***** A uses PatternLayout.
log4j.logger.org.hibernate=WARN
log4j.logger.org.springframework=WARN
-#log4j.logger.org.springframework.web=TRACE
+log4j.logger.org.springframework.web=TRACE
#log4j.logger.org.springframework.jms=WARN
#log4j.logger.org.springframework.security=WARN
<!-- Simple Webdav -->
<servlet>
<servlet-name>webdav</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+ <servlet-class>org.argeo.server.jackrabbit.webdav.ExtendedDispatcherServlet</servlet-class>
<init-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.osgi.web.context.support.OsgiBundleXmlWebApplicationContext</param-value>
</init-param>
+ <init-param>
+ <param-name>dispatchOptionsRequest</param-name>
+ <param-value>true</param-value>
+ </init-param>
<load-on-startup>1</load-on-startup>
</servlet>
- <servlet-mapping>
- <servlet-name>webdav</servlet-name>
- <url-pattern>/default/*</url-pattern>
- </servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>webdav</servlet-name>
+ <url-pattern>/default/*</url-pattern>
+ </servlet-mapping>
</web-app>
<artifactId>org.springframework.beans</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>org.springframework.web.servlet</artifactId>
+ </dependency>
+
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
--- /dev/null
+package org.argeo.server.jackrabbit.webdav;
+
+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.argeo.ArgeoException;
+import org.springframework.web.servlet.DispatcherServlet;
+
+public class ExtendedDispatcherServlet extends DispatcherServlet {
+ private static final long serialVersionUID = 1L;
+
+ private final static Log log = LogFactory
+ .getLog(ExtendedDispatcherServlet.class);
+
+ protected void service(HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException, java.io.IOException {
+ // see http://forum.springsource.org/showthread.php?t=53472
+ try {
+ if (log.isDebugEnabled())
+ log.debug("Received request with method '" + req.getMethod()
+ + "'");
+ doService(req, resp);
+ } catch (Exception e) {
+ throw new ArgeoException("Cannot process request", e);
+ }
+ }
+
+}
import java.io.IOException;
+import javax.jcr.Repository;
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.webdav.simple.ResourceConfig;
import org.argeo.ArgeoException;
import org.springframework.core.io.Resource;
public class SimpleWebDavServlet extends
- org.apache.jackrabbit.j2ee.SimpleWebdavServlet {
+ org.apache.jackrabbit.webdav.simple.SimpleWebdavServlet {
private static final long serialVersionUID = 1L;
+ private final static Log log = LogFactory.getLog(SimpleWebDavServlet.class);
+ /**
+ * the jcr repository
+ */
+ private Repository repository;
private Resource resourceConfiguration;
@Override
}
}
+ @Override
+ protected void service(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ if (log.isDebugEnabled())
+ log.debug("Received request with method '" + request.getMethod()
+ + "'");
+ super.service(request, response);
+ }
+
+ public Repository getRepository() {
+ return repository;
+ }
+
+ public void setRepository(Repository repository) {
+ this.repository = repository;
+ }
+
public void setResourceConfiguration(Resource resourceConfig) {
this.resourceConfiguration = resourceConfig;
}
--- /dev/null
+package org.argeo.server.jackrabbit.webdav;
+
+import org.springframework.core.io.Resource;
+import org.springframework.web.servlet.mvc.ServletWrappingController;
+
+public class WebDavController extends ServletWrappingController {
+ private Resource resourceConfiguration;
+
+
+}