From: Mathieu Baudier Date: Thu, 24 Feb 2011 11:43:05 +0000 (+0000) Subject: Update Jackrabbit container package name X-Git-Tag: argeo-commons-2.1.30~1444 X-Git-Url: https://git.argeo.org/?a=commitdiff_plain;h=c5e06593a279b16c7d58c7ba1a137c38f871b752;hp=0df1bdb87bb301067f1d0d18a6e0b1782b0fe7f4;p=lgpl%2Fargeo-commons.git Update Jackrabbit container package name git-svn-id: https://svn.argeo.org/commons/trunk@4184 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/server/modules/org.argeo.server.jackrabbit.webapp.war/META-INF/MANIFEST.MF b/server/modules/org.argeo.server.jackrabbit.webapp.war/META-INF/MANIFEST.MF index f103c00f1..76c2ee11a 100644 --- a/server/modules/org.argeo.server.jackrabbit.webapp.war/META-INF/MANIFEST.MF +++ b/server/modules/org.argeo.server.jackrabbit.webapp.war/META-INF/MANIFEST.MF @@ -9,7 +9,7 @@ Import-Package: javax.jcr, javax.servlet, javax.servlet.http, javax.servlet.resources, - org.argeo.jackrabbit.webdav, + org.argeo.jackrabbit.remote, org.argeo.jcr, org.springframework.osgi.web.context.support;version="1.2.1", org.springframework.security;version="2.0.6.RELEASE", diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/CachingSessionProvider.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/CachingSessionProvider.java new file mode 100644 index 000000000..422623cac --- /dev/null +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/CachingSessionProvider.java @@ -0,0 +1,70 @@ +package org.argeo.jackrabbit.remote; + +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 javax.servlet.http.HttpSession; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.jackrabbit.server.SessionProvider; + +public class CachingSessionProvider implements SessionProvider { + private static final String JCR_SESSIONS_ATTRIBUTE = "jcrSessions"; + + private final static Log log = LogFactory + .getLog(CachingSessionProvider.class); + + private Credentials credentials = null; + + public CachingSessionProvider() { + } + + public CachingSessionProvider(Credentials credentials) { + this.credentials = credentials; + } + + @SuppressWarnings("unchecked") + public Session getSession(HttpServletRequest request, Repository rep, + String workspace) throws LoginException, ServletException, + RepositoryException { + HttpSession httpSession = request.getSession(); + + if (httpSession.getAttribute(JCR_SESSIONS_ATTRIBUTE) == null) { + httpSession + .setAttribute(JCR_SESSIONS_ATTRIBUTE, Collections + .synchronizedMap(new HashMap())); + } + Map sessions = (Map) httpSession + .getAttribute(JCR_SESSIONS_ATTRIBUTE); + 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 + } + +} diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/ExtendedDispatcherServlet.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/ExtendedDispatcherServlet.java new file mode 100644 index 000000000..39dbf7f67 --- /dev/null +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/ExtendedDispatcherServlet.java @@ -0,0 +1,47 @@ +/* + * 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.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 = -5584673209855752009L; + + private final static Log log = LogFactory + .getLog(ExtendedDispatcherServlet.class); + + protected void service(HttpServletRequest request, + HttpServletResponse response) throws ServletException, + java.io.IOException { + // see http://forum.springsource.org/showthread.php?t=53472 + try { + if (log.isTraceEnabled()) + log.trace("Received request " + request); + doService(request, response); + } catch (Exception e) { + throw new ArgeoException("Cannot process request", e); + } + } + +} 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 new file mode 100644 index 000000000..e9b00c8f7 --- /dev/null +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/JcrRemotingServlet.java @@ -0,0 +1,30 @@ +package org.argeo.jackrabbit.remote; + +import javax.jcr.Repository; +import javax.jcr.SimpleCredentials; + +import org.apache.jackrabbit.server.SessionProvider; + +public class JcrRemotingServlet extends + org.apache.jackrabbit.server.remoting.davex.JcrRemotingServlet { + + private static final long serialVersionUID = 3131835511468341309L; + + private final Repository repository; + + public JcrRemotingServlet(Repository repository) { + this.repository = repository; + } + + @Override + protected Repository getRepository() { + return repository; + } + + @Override + protected 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/MultipleRepositoryHandlerMapping.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/MultipleRepositoryHandlerMapping.java new file mode 100644 index 000000000..ae3ede742 --- /dev/null +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/MultipleRepositoryHandlerMapping.java @@ -0,0 +1,133 @@ +package org.argeo.jackrabbit.remote; + +import java.util.Enumeration; +import java.util.Properties; + +import javax.jcr.Repository; +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +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; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.context.ConfigurableApplicationContext; +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 { + private final static Log log = LogFactory + .getLog(MultipleRepositoryHandlerMapping.class); + + private ConfigurableApplicationContext applicationContext; + private ServletContext servletContext; + + private RepositoryRegister repositoryRegister; + + public HandlerExecutionChain getHandler(HttpServletRequest request) + throws Exception { + if (log.isTraceEnabled()) { + log.trace("getContextPath=" + request.getContextPath()); + log.trace("getServletPath=" + request.getServletPath()); + log.trace("getPathInfo=" + request.getPathInfo()); + } + + String repositoryName = extractRepositoryName(request); + String pathPrefix = request.getServletPath() + '/' + repositoryName; + String beanName = pathPrefix; + + if (!applicationContext.containsBean(beanName)) { + Repository repository = repositoryRegister.getRepositories().get( + repositoryName); + HttpServlet servlet = createServlet(repository, pathPrefix); + applicationContext.getBeanFactory().registerSingleton(beanName, + servlet); + // TODO: unregister it as well + } + HttpServlet remotingServlet = (HttpServlet) applicationContext + .getBean(beanName); + 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(); + // TODO: optimize by checking character by character + String[] tokens = pathInfo.split("/"); + StringBuffer currName = new StringBuffer(""); + tokens: for (String token : tokens) { + if (token.equals("")) + continue tokens; + currName.append(token); + if (repositoryRegister.getRepositories().containsKey( + currName.toString())) + return currName.toString(); + currName.append('/'); + } + throw new ArgeoException("No repository can be found for request " + + pathInfo); + } + + public void setApplicationContext(ApplicationContext applicationContext) + throws BeansException { + this.applicationContext = (ConfigurableApplicationContext) applicationContext; + } + + public void setServletContext(ServletContext servletContext) { + this.servletContext = servletContext; + } + + public void setRepositoryRegister(RepositoryRegister repositoryRegister) { + this.repositoryRegister = repositoryRegister; + } + + private class DelegatingServletConfig implements ServletConfig { + private String name; + private Properties initParameters; + + public DelegatingServletConfig(String name, Properties initParameters) { + super(); + this.name = name; + this.initParameters = initParameters; + } + + public String getServletName() { + return name; + } + + public ServletContext getServletContext() { + return servletContext; + } + + public String getInitParameter(String paramName) { + return initParameters.getProperty(paramName); + } + + public Enumeration getInitParameterNames() { + return initParameters.keys(); + } + } + +} 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 new file mode 100644 index 000000000..02fdcde73 --- /dev/null +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/WebDavServlet.java @@ -0,0 +1,86 @@ +/* + * 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.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.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 Repository repository; + private Resource resourceConfiguration; + + public WebDavServlet() { + + } + + @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; + } + + public void setRepository(Repository repository) { + this.repository = repository; + } + + public void setResourceConfiguration(Resource resourceConfig) { + this.resourceConfiguration = resourceConfig; + } + +} diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/webdav/CachingSessionProvider.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/webdav/CachingSessionProvider.java deleted file mode 100644 index 05b5e86ef..000000000 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/webdav/CachingSessionProvider.java +++ /dev/null @@ -1,70 +0,0 @@ -package org.argeo.jackrabbit.webdav; - -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 javax.servlet.http.HttpSession; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.jackrabbit.server.SessionProvider; - -public class CachingSessionProvider implements SessionProvider { - private static final String JCR_SESSIONS_ATTRIBUTE = "jcrSessions"; - - private final static Log log = LogFactory - .getLog(CachingSessionProvider.class); - - private Credentials credentials = null; - - public CachingSessionProvider() { - } - - public CachingSessionProvider(Credentials credentials) { - this.credentials = credentials; - } - - @SuppressWarnings("unchecked") - public Session getSession(HttpServletRequest request, Repository rep, - String workspace) throws LoginException, ServletException, - RepositoryException { - HttpSession httpSession = request.getSession(); - - if (httpSession.getAttribute(JCR_SESSIONS_ATTRIBUTE) == null) { - httpSession - .setAttribute(JCR_SESSIONS_ATTRIBUTE, Collections - .synchronizedMap(new HashMap())); - } - Map sessions = (Map) httpSession - .getAttribute(JCR_SESSIONS_ATTRIBUTE); - 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 - } - -} diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/webdav/ExtendedDispatcherServlet.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/webdav/ExtendedDispatcherServlet.java deleted file mode 100644 index a40919e4f..000000000 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/webdav/ExtendedDispatcherServlet.java +++ /dev/null @@ -1,47 +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.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 = -5584673209855752009L; - - private final static Log log = LogFactory - .getLog(ExtendedDispatcherServlet.class); - - protected void service(HttpServletRequest request, - HttpServletResponse response) throws ServletException, - java.io.IOException { - // see http://forum.springsource.org/showthread.php?t=53472 - try { - if (log.isTraceEnabled()) - log.trace("Received request " + request); - doService(request, response); - } catch (Exception e) { - throw new ArgeoException("Cannot process request", e); - } - } - -} diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/webdav/JcrRemotingServlet.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/webdav/JcrRemotingServlet.java deleted file mode 100644 index 0af669306..000000000 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/webdav/JcrRemotingServlet.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.argeo.jackrabbit.webdav; - -import javax.jcr.Repository; -import javax.jcr.SimpleCredentials; - -import org.apache.jackrabbit.server.SessionProvider; - -public class JcrRemotingServlet extends - org.apache.jackrabbit.server.remoting.davex.JcrRemotingServlet { - - private static final long serialVersionUID = 3131835511468341309L; - - private final Repository repository; - - public JcrRemotingServlet(Repository repository) { - this.repository = repository; - } - - @Override - protected Repository getRepository() { - return repository; - } - - @Override - protected 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/webdav/MultipleRepositoryHandlerMapping.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/webdav/MultipleRepositoryHandlerMapping.java deleted file mode 100644 index 8e266a932..000000000 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/webdav/MultipleRepositoryHandlerMapping.java +++ /dev/null @@ -1,133 +0,0 @@ -package org.argeo.jackrabbit.webdav; - -import java.util.Enumeration; -import java.util.Properties; - -import javax.jcr.Repository; -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -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; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; -import org.springframework.context.ConfigurableApplicationContext; -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 { - private final static Log log = LogFactory - .getLog(MultipleRepositoryHandlerMapping.class); - - private ConfigurableApplicationContext applicationContext; - private ServletContext servletContext; - - private RepositoryRegister repositoryRegister; - - public HandlerExecutionChain getHandler(HttpServletRequest request) - throws Exception { - if (log.isTraceEnabled()) { - log.trace("getContextPath=" + request.getContextPath()); - log.trace("getServletPath=" + request.getServletPath()); - log.trace("getPathInfo=" + request.getPathInfo()); - } - - String repositoryName = extractRepositoryName(request); - String pathPrefix = request.getServletPath() + '/' + repositoryName; - String beanName = pathPrefix; - - if (!applicationContext.containsBean(beanName)) { - Repository repository = repositoryRegister.getRepositories().get( - repositoryName); - HttpServlet servlet = createServlet(repository, pathPrefix); - applicationContext.getBeanFactory().registerSingleton(beanName, - servlet); - // TODO: unregister it as well - } - HttpServlet remotingServlet = (HttpServlet) applicationContext - .getBean(beanName); - 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(); - // TODO: optimize by checking character by character - String[] tokens = pathInfo.split("/"); - StringBuffer currName = new StringBuffer(""); - tokens: for (String token : tokens) { - if (token.equals("")) - continue tokens; - currName.append(token); - if (repositoryRegister.getRepositories().containsKey( - currName.toString())) - return currName.toString(); - currName.append('/'); - } - throw new ArgeoException("No repository can be found for request " - + pathInfo); - } - - public void setApplicationContext(ApplicationContext applicationContext) - throws BeansException { - this.applicationContext = (ConfigurableApplicationContext) applicationContext; - } - - public void setServletContext(ServletContext servletContext) { - this.servletContext = servletContext; - } - - public void setRepositoryRegister(RepositoryRegister repositoryRegister) { - this.repositoryRegister = repositoryRegister; - } - - private class DelegatingServletConfig implements ServletConfig { - private String name; - private Properties initParameters; - - public DelegatingServletConfig(String name, Properties initParameters) { - super(); - this.name = name; - this.initParameters = initParameters; - } - - public String getServletName() { - return name; - } - - public ServletContext getServletContext() { - return servletContext; - } - - public String getInitParameter(String paramName) { - return initParameters.getProperty(paramName); - } - - public Enumeration getInitParameterNames() { - return initParameters.keys(); - } - } - -} diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/webdav/WebDavServlet.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/webdav/WebDavServlet.java deleted file mode 100644 index a9ed8ef7a..000000000 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/webdav/WebDavServlet.java +++ /dev/null @@ -1,86 +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.webdav; - -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.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 Repository repository; - private Resource resourceConfiguration; - - public WebDavServlet() { - - } - - @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; - } - - public void setRepository(Repository repository) { - this.repository = repository; - } - - public void setResourceConfiguration(Resource resourceConfig) { - this.resourceConfiguration = resourceConfig; - } - -} diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/resources/org/argeo/jackrabbit/repository-inMemory.xml b/server/runtime/org.argeo.server.jackrabbit/src/main/resources/org/argeo/jackrabbit/repository-inMemory.xml new file mode 100644 index 000000000..289a408c5 --- /dev/null +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/resources/org/argeo/jackrabbit/repository-inMemory.xml @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/resources/org/argeo/server/jackrabbit/repository-inMemory.xml b/server/runtime/org.argeo.server.jackrabbit/src/main/resources/org/argeo/server/jackrabbit/repository-inMemory.xml deleted file mode 100644 index 289a408c5..000000000 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/resources/org/argeo/server/jackrabbit/repository-inMemory.xml +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -