From 5cbd14f6688e8710bff2f853e9fce3fae68c175e Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Fri, 25 Feb 2011 14:05:39 +0000 Subject: [PATCH] Restructure Webdav and JCR servlets git-svn-id: https://svn.argeo.org/commons/trunk@4207 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../log4j.properties | 1 + .../META-INF/MANIFEST.MF | 5 ++ .../WEB-INF/applicationContext.xml | 12 +-- .../WEB-INF/remoting-servlet.xml | 1 + .../WEB-INF/webdav-servlet.xml | 7 +- .../org.argeo.server.webextender/.project | 22 +++++ .../.settings/org.eclipse.pde.core.prefs | 4 + .../META-INF/MANIFEST.MF | 10 ++- .../build.properties | 1 + .../META-INF/MANIFEST.MF | 5 +- .../org.argeo.server.jackrabbit/pom.xml | 2 + .../argeo/jackrabbit/JackrabbitContainer.java | 1 - .../AbstractJackrabbitHandlerMapping.java | 18 ++++ .../remote/JcrRemotingHandlerMapping.java | 11 +-- .../jackrabbit/remote/JcrRemotingServlet.java | 9 +- .../remote/SimpleSessionProvider.java | 65 ++++++++++++++ ...g.java => SimpleWebdavHandlerMapping.java} | 22 ++--- .../remote/SimpleWebdavServlet.java | 37 ++++++++ .../jackrabbit/remote/WebDavServlet.java | 87 ------------------- 19 files changed, 197 insertions(+), 123 deletions(-) create mode 100644 server/modules/org.argeo.server.webextender/.project create mode 100644 server/modules/org.argeo.server.webextender/.settings/org.eclipse.pde.core.prefs create mode 100644 server/modules/org.argeo.server.webextender/build.properties create mode 100644 server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/AbstractJackrabbitHandlerMapping.java create mode 100644 server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/SimpleSessionProvider.java rename server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/{WebdavHandlerMapping.java => SimpleWebdavHandlerMapping.java} (51%) create mode 100644 server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/SimpleWebdavServlet.java delete mode 100644 server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/WebDavServlet.java diff --git a/eclipse/plugins/org.argeo.jcr.ui.explorer/log4j.properties b/eclipse/plugins/org.argeo.jcr.ui.explorer/log4j.properties index 577571c82..dcc3a49d0 100644 --- a/eclipse/plugins/org.argeo.jcr.ui.explorer/log4j.properties +++ b/eclipse/plugins/org.argeo.jcr.ui.explorer/log4j.properties @@ -7,6 +7,7 @@ log4j.logger.org.springframework.security=INFO log4j.logger.org.apache.catalina=INFO log4j.logger.org.apache.coyote=INFO log4j.logger.org.apache.tomcat=INFO +log4j.logger.org.springframework.osgi.web.deployer.tomcat=WARN log4j.logger.org.apache.directory.server=INFO log4j.logger.org.apache.directory.server.core.partition=ERROR diff --git a/server/modules/org.argeo.jackrabbit.webapp/META-INF/MANIFEST.MF b/server/modules/org.argeo.jackrabbit.webapp/META-INF/MANIFEST.MF index dead9a924..0e6854f79 100644 --- a/server/modules/org.argeo.jackrabbit.webapp/META-INF/MANIFEST.MF +++ b/server/modules/org.argeo.jackrabbit.webapp/META-INF/MANIFEST.MF @@ -5,15 +5,20 @@ Bundle-SymbolicName: org.argeo.jackrabbit.webapp Bundle-Version: 0.2.3.SNAPSHOT Web-ContextPath: org.argeo.jcr.webapp Bundle-Vendor: Argeo +DynamicImport-Package: * Import-Package: javax.jcr, javax.servlet, javax.servlet.http, javax.servlet.resources, + org.aopalliance.aop;version="1.0.0", org.argeo.jackrabbit.remote, org.argeo.jcr, org.argeo.jcr.mvc, org.argeo.server.json, org.argeo.server.mvc, + org.springframework.aop;version="2.5.6.SEC01", + org.springframework.aop.framework;version="2.5.6.SEC01", + org.springframework.aop.scope;version="2.5.6.SEC01", org.springframework.osgi.web.context.support;version="1.2.1", org.springframework.security;version="2.0.6.RELEASE", org.springframework.security.ui.webapp;version="2.0.6.RELEASE", diff --git a/server/modules/org.argeo.jackrabbit.webapp/WEB-INF/applicationContext.xml b/server/modules/org.argeo.jackrabbit.webapp/WEB-INF/applicationContext.xml index a30ecbf06..5898b1952 100644 --- a/server/modules/org.argeo.jackrabbit.webapp/WEB-INF/applicationContext.xml +++ b/server/modules/org.argeo.jackrabbit.webapp/WEB-INF/applicationContext.xml @@ -1,10 +1,8 @@ @@ -12,9 +10,13 @@ - - + + + + + + \ No newline at end of file diff --git a/server/modules/org.argeo.jackrabbit.webapp/WEB-INF/remoting-servlet.xml b/server/modules/org.argeo.jackrabbit.webapp/WEB-INF/remoting-servlet.xml index 35376c184..d07eecede 100644 --- a/server/modules/org.argeo.jackrabbit.webapp/WEB-INF/remoting-servlet.xml +++ b/server/modules/org.argeo.jackrabbit.webapp/WEB-INF/remoting-servlet.xml @@ -16,6 +16,7 @@ + \ No newline at end of file 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 71874b571..bddeb52a9 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 @@ -1,7 +1,6 @@ - + + - + \ No newline at end of file diff --git a/server/modules/org.argeo.server.webextender/.project b/server/modules/org.argeo.server.webextender/.project new file mode 100644 index 000000000..a8e485fac --- /dev/null +++ b/server/modules/org.argeo.server.webextender/.project @@ -0,0 +1,22 @@ + + + org.argeo.server.webextender + + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + + diff --git a/server/modules/org.argeo.server.webextender/.settings/org.eclipse.pde.core.prefs b/server/modules/org.argeo.server.webextender/.settings/org.eclipse.pde.core.prefs new file mode 100644 index 000000000..bd6f9bab4 --- /dev/null +++ b/server/modules/org.argeo.server.webextender/.settings/org.eclipse.pde.core.prefs @@ -0,0 +1,4 @@ +#Fri Feb 25 14:51:26 CET 2011 +eclipse.preferences.version=1 +pluginProject.extensions=false +resolve.requirebundle=false diff --git a/server/modules/org.argeo.server.webextender/META-INF/MANIFEST.MF b/server/modules/org.argeo.server.webextender/META-INF/MANIFEST.MF index e8f59fe32..b5758f5c3 100644 --- a/server/modules/org.argeo.server.webextender/META-INF/MANIFEST.MF +++ b/server/modules/org.argeo.server.webextender/META-INF/MANIFEST.MF @@ -1,5 +1,9 @@ Manifest-Version: 1.0 -Fragment-Host: org.springframework.osgi.web.extender -Bundle-Version: 0.2.3.SNAPSHOT +Bundle-ManifestVersion: 2 +Bundle-Name: Webextender Bundle-SymbolicName: org.argeo.server.webextender -Import-Package: org.apache.catalina,org.apache.catalina.connector +Bundle-Version: 1.0.0.qualifier +Bundle-Vendor: Argeo +Fragment-Host: org.springframework.osgi.web.extender +Import-Package: org.apache.catalina, + org.apache.catalina.connector diff --git a/server/modules/org.argeo.server.webextender/build.properties b/server/modules/org.argeo.server.webextender/build.properties new file mode 100644 index 000000000..5f22cdd44 --- /dev/null +++ b/server/modules/org.argeo.server.webextender/build.properties @@ -0,0 +1 @@ +bin.includes = META-INF/ diff --git a/server/runtime/org.argeo.server.catalina/META-INF/MANIFEST.MF b/server/runtime/org.argeo.server.catalina/META-INF/MANIFEST.MF index 9820bc006..faada56d5 100644 --- a/server/runtime/org.argeo.server.catalina/META-INF/MANIFEST.MF +++ b/server/runtime/org.argeo.server.catalina/META-INF/MANIFEST.MF @@ -7,9 +7,12 @@ Bundle-RequiredExecutionEnvironment: J2SE-1.5 Import-Package: org.apache.catalina;version="6.0.24", org.apache.catalina.connector;version="6.0.24", org.apache.catalina.core;version="6.0.24", + org.apache.catalina.startup;version="6.0.24", org.apache.catalina.util;version="6.0.24", org.apache.commons.logging;version="1.1.1", org.apache.naming.resources;version="6.0.24", org.osgi.framework;version="1.5.0", org.osgi.service.url;version="1.0.0", - org.springframework.beans.factory;version="2.5.6.SEC01" + org.springframework.aop;version="2.5.6.SEC01", + org.springframework.beans.factory;version="2.5.6.SEC01", + org.springframework.osgi.web.deployer;version="1.2.1" diff --git a/server/runtime/org.argeo.server.jackrabbit/pom.xml b/server/runtime/org.argeo.server.jackrabbit/pom.xml index 4beeb819a..cce683335 100644 --- a/server/runtime/org.argeo.server.jackrabbit/pom.xml +++ b/server/runtime/org.argeo.server.jackrabbit/pom.xml @@ -34,6 +34,8 @@ javax.servlet, + org.apache.jackrabbit.webdav.server, + org.springframework.web.context, org.xml.sax;version="0.0.0", org.apache.jackrabbit.webdav.jcr, org.springframework.security.providers.jaas;resolution:="optional", diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/JackrabbitContainer.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/JackrabbitContainer.java index 8b35d0b6f..b5170c191 100644 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/JackrabbitContainer.java +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/JackrabbitContainer.java @@ -42,7 +42,6 @@ import org.apache.jackrabbit.api.JackrabbitRepository; import org.apache.jackrabbit.commons.JcrUtils; import org.apache.jackrabbit.commons.NamespaceHelper; import org.apache.jackrabbit.commons.cnd.CndImporter; -import org.apache.jackrabbit.core.RepositoryFactoryImpl; import org.apache.jackrabbit.core.RepositoryImpl; import org.apache.jackrabbit.core.TransientRepository; import org.apache.jackrabbit.core.config.RepositoryConfig; diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/AbstractJackrabbitHandlerMapping.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/AbstractJackrabbitHandlerMapping.java new file mode 100644 index 000000000..5c0ef8313 --- /dev/null +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/AbstractJackrabbitHandlerMapping.java @@ -0,0 +1,18 @@ +package org.argeo.jackrabbit.remote; + +import org.apache.jackrabbit.server.SessionProvider; +import org.argeo.jcr.mvc.MultipleRepositoryHandlerMapping; + +public abstract class AbstractJackrabbitHandlerMapping extends + MultipleRepositoryHandlerMapping { + private SessionProvider sessionProvider; + + protected SessionProvider getSessionProvider() { + return sessionProvider; + } + + public void setSessionProvider(SessionProvider sessionProvider) { + this.sessionProvider = sessionProvider; + } + +} 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 e72a23073..41c1a7537 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 @@ -6,17 +6,14 @@ 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; - -public class JcrRemotingHandlerMapping extends MultipleRepositoryHandlerMapping { +public class JcrRemotingHandlerMapping extends AbstractJackrabbitHandlerMapping { protected HttpServlet createServlet(Repository repository, String pathPrefix) throws ServletException { - JcrRemotingServlet servlet = new JcrRemotingServlet(repository); + JcrRemotingServlet servlet = new JcrRemotingServlet(repository, + getSessionProvider()); Properties initParameters = new Properties(); initParameters.setProperty( - JCRWebdavServerServlet.INIT_PARAM_RESOURCE_PATH_PREFIX, - pathPrefix); + JcrRemotingServlet.INIT_PARAM_RESOURCE_PATH_PREFIX, pathPrefix); 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/JcrRemotingServlet.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/JcrRemotingServlet.java index e9b00c8f7..ad3a59225 100644 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/JcrRemotingServlet.java +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/JcrRemotingServlet.java @@ -1,7 +1,6 @@ package org.argeo.jackrabbit.remote; import javax.jcr.Repository; -import javax.jcr.SimpleCredentials; import org.apache.jackrabbit.server.SessionProvider; @@ -11,9 +10,12 @@ public class JcrRemotingServlet extends private static final long serialVersionUID = 3131835511468341309L; private final Repository repository; + private final SessionProvider sessionProvider; - public JcrRemotingServlet(Repository repository) { + public JcrRemotingServlet(Repository repository, + SessionProvider sessionProvider) { this.repository = repository; + this.sessionProvider = sessionProvider; } @Override @@ -23,8 +25,7 @@ public class JcrRemotingServlet extends @Override protected SessionProvider getSessionProvider() { - return new CachingSessionProvider(new SimpleCredentials("demo", - "demo".toCharArray())); + return sessionProvider; } } diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/SimpleSessionProvider.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/SimpleSessionProvider.java new file mode 100644 index 000000000..ded491510 --- /dev/null +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/SimpleSessionProvider.java @@ -0,0 +1,65 @@ +package org.argeo.jackrabbit.remote; + +import java.io.Serializable; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import javax.jcr.Credentials; +import javax.jcr.LoginException; +import javax.jcr.Repository; +import javax.jcr.RepositoryException; +import javax.jcr.Session; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.jackrabbit.server.SessionProvider; + +/** To be injected, typically of scope="session" */ +public class SimpleSessionProvider implements SessionProvider, Serializable { + private static final long serialVersionUID = 2270957712453841368L; + + private final static Log log = LogFactory + .getLog(SimpleSessionProvider.class); + + private transient Map sessions = Collections + .synchronizedMap(new HashMap()); + + private Credentials credentials = null; + + public Session getSession(HttpServletRequest request, Repository rep, + String workspace) throws LoginException, ServletException, + RepositoryException { + + if (!sessions.containsKey(workspace)) { + Session session = rep.login(credentials, workspace); + sessions.put(workspace, session); + return session; + } else { + Session session = sessions.get(workspace); + if (!session.isLive()) { + sessions.remove(workspace); + session = rep.login(credentials, workspace); + sessions.put(workspace, session); + } + return session; + } + } + + public void releaseSession(Session session) { + if (log.isDebugEnabled()) + log.debug("Releasing JCR session " + session); + // session.logout(); + // FIXME: find a way to log out when the HTTP session is expired + } + + public void dispose() { + for (String workspace : sessions.keySet()) { + Session session = sessions.get(workspace); + if (session.isLive()) + session.logout(); + } + } +} 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/SimpleWebdavHandlerMapping.java similarity index 51% rename from server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/WebdavHandlerMapping.java rename to server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/SimpleWebdavHandlerMapping.java index 02132ec5b..ea014f9e3 100644 --- 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/SimpleWebdavHandlerMapping.java @@ -6,28 +6,28 @@ 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; +public class SimpleWebdavHandlerMapping extends + AbstractJackrabbitHandlerMapping { + private String configuration; protected HttpServlet createServlet(Repository repository, String pathPrefix) throws ServletException { - WebDavServlet servlet = new WebDavServlet(repository, configuration); + SimpleWebdavServlet servlet = new SimpleWebdavServlet(repository, + getSessionProvider()); Properties initParameters = new Properties(); initParameters.setProperty( - JCRWebdavServerServlet.INIT_PARAM_RESOURCE_PATH_PREFIX, - pathPrefix); + SimpleWebdavServlet.INIT_PARAM_RESOURCE_CONFIG, configuration); + initParameters + .setProperty( + SimpleWebdavServlet.INIT_PARAM_RESOURCE_PATH_PREFIX, + pathPrefix); servlet.init(new DelegatingServletConfig(pathPrefix.replace('/', '_'), initParameters)); return servlet; } - public void setConfiguration(Resource configuration) { + public void setConfiguration(String configuration) { this.configuration = configuration; } - } diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/SimpleWebdavServlet.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/SimpleWebdavServlet.java new file mode 100644 index 000000000..4fa4033eb --- /dev/null +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/SimpleWebdavServlet.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2010 Mathieu Baudier + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.argeo.jackrabbit.remote; + +import javax.jcr.Repository; + +import org.apache.jackrabbit.server.SessionProvider; + +public class SimpleWebdavServlet extends + org.apache.jackrabbit.webdav.simple.SimpleWebdavServlet { + private static final long serialVersionUID = -369787931175177080L; + private final Repository repository; + + public SimpleWebdavServlet(Repository repository, SessionProvider sessionProvider) { + this.repository = repository; + setSessionProvider(sessionProvider); + } + + public Repository getRepository() { + return repository; + } + +} 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 deleted file mode 100644 index ec140f892..000000000 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/WebDavServlet.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (C) 2010 Mathieu Baudier - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -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; -import org.springframework.core.io.Resource; - -public class WebDavServlet extends SimpleWebdavServlet { - - private static final long serialVersionUID = 1L; - private final static Log log = LogFactory.getLog(WebDavServlet.class); - - private final Repository repository; - private final Resource resourceConfiguration; - - public WebDavServlet(Repository repository, Resource configuration) { - this.repository = repository; - this.resourceConfiguration = configuration; - } - - @Override - public void init() throws ServletException { - super.init(); - - if (resourceConfiguration != null) { - ResourceConfig resourceConfig = new ResourceConfig(null); - try { - resourceConfig.parse(resourceConfiguration.getURL()); - } catch (IOException e) { - throw new ArgeoException("Cannot parse resource configuration " - + resourceConfiguration, e); - } - setResourceConfig(resourceConfig); - } - } - - @Override - protected void service(HttpServletRequest request, - HttpServletResponse response) throws ServletException, IOException { - if (log.isTraceEnabled()) - log.trace("Received request " + request); - super.service(request, response); - - if (log.isTraceEnabled()) { - log.trace("Webdav response: " + response); - // response. - } - } - - public Repository getRepository() { - return repository; - } - - @Override - public SessionProvider getSessionProvider() { - return new CachingSessionProvider(new SimpleCredentials("demo", - "demo".toCharArray())); - } - -} -- 2.39.2