From 8d7c3a8f7bf843a44e3f1bc015963a42aad2cf2c Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Mon, 25 Jan 2016 14:30:51 +0100 Subject: [PATCH] renamed module --- .../pom.xml | 37 ++++++----- .../filesystem/jackrabbit/FileLocator.java | 0 .../jackrabbit/FileSystemLocator.java | 0 .../jackrabbit/FileSystemResourceLocator.java | 0 .../FileSystemResourceLocatorFactory.java | 0 .../filesystem/jackrabbit/FolderLocator.java | 0 .../webdav/filters/AcceptRangeFilter.java | 0 .../webdav/filters/HttpFilter.java | 0 .../MacChunkedPutCompatibilityFilter.java | 0 .../filters/UriNormalizationFilter.java | 0 .../webdav/jackrabbitservlet/DavFile.java | 0 .../webdav/jackrabbitservlet/DavFolder.java | 0 .../webdav/jackrabbitservlet/DavNode.java | 0 .../jackrabbitservlet/DavSessionImpl.java | 0 .../DavSessionProviderImpl.java | 0 .../FilesystemResourceFactory.java | 0 .../jackrabbitservlet/WebDavServlet.java | 8 +-- .../WebDavServletContextFactory.java | 66 +++++++++++++++++++ .../FileSystemResourceLocatorFactoryTest.java | 0 .../webdav/filters/LoggingHttpFilter.java | 0 .../MacChunkedPutCompatibilityFilterTest.java | 0 .../filters/RecordingHttpServletRequest.java | 0 .../filters/RecordingHttpServletResponse.java | 0 .../filters/RecordingServletInputStream.java | 0 .../filters/RecordingServletOutputStream.java | 0 .../filters/UriNormalizationFilterTest.java | 0 .../FileSystemBasedWebDavServer.java | 39 +++-------- .../InMemoryWebDavServer.java | 0 .../jackrabbitservlet/NioWebDavServer.java | 0 .../src/test/resources/log4j2.xml | 0 main/pom.xml | 2 +- 31 files changed, 98 insertions(+), 54 deletions(-) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/pom.xml (87%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/main/java/org/cryptomator/filesystem/jackrabbit/FileLocator.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemLocator.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocator.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocatorFactory.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/main/java/org/cryptomator/filesystem/jackrabbit/FolderLocator.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/main/java/org/cryptomator/webdav/filters/AcceptRangeFilter.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/main/java/org/cryptomator/webdav/filters/HttpFilter.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/main/java/org/cryptomator/webdav/filters/MacChunkedPutCompatibilityFilter.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/main/java/org/cryptomator/webdav/filters/UriNormalizationFilter.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavFile.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavFolder.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavNode.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavSessionImpl.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavSessionProviderImpl.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/main/java/org/cryptomator/webdav/jackrabbitservlet/FilesystemResourceFactory.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/main/java/org/cryptomator/webdav/jackrabbitservlet/WebDavServlet.java (92%) create mode 100644 main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/WebDavServletContextFactory.java rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/test/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocatorFactoryTest.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/test/java/org/cryptomator/webdav/filters/LoggingHttpFilter.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/test/java/org/cryptomator/webdav/filters/MacChunkedPutCompatibilityFilterTest.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/test/java/org/cryptomator/webdav/filters/RecordingHttpServletRequest.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/test/java/org/cryptomator/webdav/filters/RecordingHttpServletResponse.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/test/java/org/cryptomator/webdav/filters/RecordingServletInputStream.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/test/java/org/cryptomator/webdav/filters/RecordingServletOutputStream.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/test/java/org/cryptomator/webdav/filters/UriNormalizationFilterTest.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/test/java/org/cryptomator/webdav/jackrabbitservlet/FileSystemBasedWebDavServer.java (50%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/test/java/org/cryptomator/webdav/jackrabbitservlet/InMemoryWebDavServer.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/test/java/org/cryptomator/webdav/jackrabbitservlet/NioWebDavServer.java (100%) rename main/{jackrabbit-filesystem-adapter => frontend-webdav}/src/test/resources/log4j2.xml (100%) diff --git a/main/jackrabbit-filesystem-adapter/pom.xml b/main/frontend-webdav/pom.xml similarity index 87% rename from main/jackrabbit-filesystem-adapter/pom.xml rename to main/frontend-webdav/pom.xml index aabb12c69..cd3facb6a 100644 --- a/main/jackrabbit-filesystem-adapter/pom.xml +++ b/main/frontend-webdav/pom.xml @@ -3,7 +3,7 @@ Copyright (c) 2015 Sebastian Stenzel This file is licensed under the terms of the MIT license. See the LICENSE.txt file for more info. - + Contributors: Sebastian Stenzel - initial API and implementation --> @@ -14,12 +14,13 @@ main 0.11.0-SNAPSHOT - jackrabbit-filesystem-adapter - Jackrabbit filesystem-WebDAV-adapter - WebDAV servlet based on Apache Jackrabbit serving files from a filesystem + frontend-webdav + Jackrabbit-based WebDAV filesystem frontend + Provides access via WebDAV to filesystems 2.11.0 + 9.3.3.v20150827 @@ -43,7 +44,19 @@ jackrabbit-webdav ${jackrabbit.version} - + + + + org.eclipse.jetty + jetty-server + ${jetty.version} + + + org.eclipse.jetty + jetty-webapp + ${jetty.version} + + org.apache.commons @@ -59,18 +72,6 @@ org.cryptomator commons-test - - org.eclipse.jetty - jetty-server - 9.3.3.v20150827 - test - - - org.eclipse.jetty - jetty-webapp - 9.3.3.v20150827 - test - commons-httpclient commons-httpclient @@ -96,4 +97,4 @@ - \ No newline at end of file + diff --git a/main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/filesystem/jackrabbit/FileLocator.java b/main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FileLocator.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/filesystem/jackrabbit/FileLocator.java rename to main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FileLocator.java diff --git a/main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemLocator.java b/main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemLocator.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemLocator.java rename to main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemLocator.java diff --git a/main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocator.java b/main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocator.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocator.java rename to main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocator.java diff --git a/main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocatorFactory.java b/main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocatorFactory.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocatorFactory.java rename to main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocatorFactory.java diff --git a/main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/filesystem/jackrabbit/FolderLocator.java b/main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FolderLocator.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/filesystem/jackrabbit/FolderLocator.java rename to main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FolderLocator.java diff --git a/main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/filters/AcceptRangeFilter.java b/main/frontend-webdav/src/main/java/org/cryptomator/webdav/filters/AcceptRangeFilter.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/filters/AcceptRangeFilter.java rename to main/frontend-webdav/src/main/java/org/cryptomator/webdav/filters/AcceptRangeFilter.java diff --git a/main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/filters/HttpFilter.java b/main/frontend-webdav/src/main/java/org/cryptomator/webdav/filters/HttpFilter.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/filters/HttpFilter.java rename to main/frontend-webdav/src/main/java/org/cryptomator/webdav/filters/HttpFilter.java diff --git a/main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/filters/MacChunkedPutCompatibilityFilter.java b/main/frontend-webdav/src/main/java/org/cryptomator/webdav/filters/MacChunkedPutCompatibilityFilter.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/filters/MacChunkedPutCompatibilityFilter.java rename to main/frontend-webdav/src/main/java/org/cryptomator/webdav/filters/MacChunkedPutCompatibilityFilter.java diff --git a/main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/filters/UriNormalizationFilter.java b/main/frontend-webdav/src/main/java/org/cryptomator/webdav/filters/UriNormalizationFilter.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/filters/UriNormalizationFilter.java rename to main/frontend-webdav/src/main/java/org/cryptomator/webdav/filters/UriNormalizationFilter.java diff --git a/main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavFile.java b/main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavFile.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavFile.java rename to main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavFile.java diff --git a/main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavFolder.java b/main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavFolder.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavFolder.java rename to main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavFolder.java diff --git a/main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavNode.java b/main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavNode.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavNode.java rename to main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavNode.java diff --git a/main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavSessionImpl.java b/main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavSessionImpl.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavSessionImpl.java rename to main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavSessionImpl.java diff --git a/main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavSessionProviderImpl.java b/main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavSessionProviderImpl.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavSessionProviderImpl.java rename to main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavSessionProviderImpl.java diff --git a/main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/FilesystemResourceFactory.java b/main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/FilesystemResourceFactory.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/FilesystemResourceFactory.java rename to main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/FilesystemResourceFactory.java diff --git a/main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/WebDavServlet.java b/main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/WebDavServlet.java similarity index 92% rename from main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/WebDavServlet.java rename to main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/WebDavServlet.java index f883cef1d..206c14f0c 100644 --- a/main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/WebDavServlet.java +++ b/main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/WebDavServlet.java @@ -16,10 +16,10 @@ import org.apache.jackrabbit.webdav.DavResourceFactory; import org.apache.jackrabbit.webdav.DavSessionProvider; import org.apache.jackrabbit.webdav.WebdavRequest; import org.apache.jackrabbit.webdav.server.AbstractWebdavServlet; -import org.cryptomator.filesystem.FileSystem; +import org.cryptomator.filesystem.Folder; import org.cryptomator.filesystem.jackrabbit.FileSystemResourceLocatorFactory; -public class WebDavServlet extends AbstractWebdavServlet { +class WebDavServlet extends AbstractWebdavServlet { private static final long serialVersionUID = -6632687979352625020L; @@ -27,9 +27,9 @@ public class WebDavServlet extends AbstractWebdavServlet { private final DavLocatorFactory davLocatorFactory; private final DavResourceFactory davResourceFactory; - public WebDavServlet(URI contextRootUri, FileSystem filesystem) { + public WebDavServlet(URI contextRootUri, Folder root) { davSessionProvider = new DavSessionProviderImpl(); - davLocatorFactory = new FileSystemResourceLocatorFactory(contextRootUri, filesystem); + davLocatorFactory = new FileSystemResourceLocatorFactory(contextRootUri, root); davResourceFactory = new FilesystemResourceFactory(); } diff --git a/main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/WebDavServletContextFactory.java b/main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/WebDavServletContextFactory.java new file mode 100644 index 000000000..a5c7093f4 --- /dev/null +++ b/main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/WebDavServletContextFactory.java @@ -0,0 +1,66 @@ +package org.cryptomator.webdav.jackrabbitservlet; + +import java.net.URI; +import java.util.EnumSet; + +import javax.servlet.DispatcherType; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.SystemUtils; +import org.cryptomator.filesystem.Folder; +import org.cryptomator.webdav.filters.AcceptRangeFilter; +import org.cryptomator.webdav.filters.LoggingHttpFilter; +import org.cryptomator.webdav.filters.MacChunkedPutCompatibilityFilter; +import org.cryptomator.webdav.filters.UriNormalizationFilter; +import org.cryptomator.webdav.filters.UriNormalizationFilter.ResourceTypeChecker; +import org.cryptomator.webdav.filters.UriNormalizationFilter.ResourceTypeChecker.ResourceType; +import org.eclipse.jetty.servlet.FilterHolder; +import org.eclipse.jetty.servlet.ServletContextHandler; +import org.eclipse.jetty.servlet.ServletHolder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class WebDavServletContextFactory { + + private static final Logger LOG = LoggerFactory.getLogger(WebDavServletContextFactory.class); + private static final String WILDCARD = "/*"; + + /** + * Creates a new Jetty ServletContextHandler, that can be be added to a servletCollection as follows: + * + *
+	 * ServletContextHandler context = factory.create(...);
+	 * servletCollection.addHandler(context);
+	 * servletCollection.mapContexts();
+	 * 
+ * + * @param contextRoot The URI of the context root. Its path will be used as the servlet's context path. + * @param root The location within a filesystem that shall be served via WebDAV. + * @return A new Jetty servlet context handler. + */ + public ServletContextHandler create(URI contextRoot, Folder root) { + final ResourceTypeChecker resourceTypeChecker = (path) -> { + if (root.resolveFolder(path).exists()) { + return ResourceType.FOLDER; + } else if (root.resolveFile(path).exists()) { + return ResourceType.FILE; + } else { + return ResourceType.UNKNOWN; + } + }; + final String contextPath = StringUtils.removeEnd(contextRoot.getPath(), "/"); + final ServletContextHandler servletContext = new ServletContextHandler(null, contextPath, ServletContextHandler.SESSIONS); + final ServletHolder servletHolder = new ServletHolder(contextPath, new WebDavServlet(contextRoot, root)); + servletContext.addServlet(servletHolder, WILDCARD); + servletContext.addFilter(AcceptRangeFilter.class, WILDCARD, EnumSet.of(DispatcherType.REQUEST)); + servletContext.addFilter(new FilterHolder(new UriNormalizationFilter(resourceTypeChecker)), WILDCARD, EnumSet.of(DispatcherType.REQUEST)); + if (SystemUtils.IS_OS_MAC_OSX) { + servletContext.addFilter(MacChunkedPutCompatibilityFilter.class, WILDCARD, EnumSet.of(DispatcherType.REQUEST)); + } + if (LOG.isDebugEnabled()) { + servletContext.addFilter(LoggingHttpFilter.class, WILDCARD, EnumSet.of(DispatcherType.REQUEST)); + } + return servletContext; + } + +} diff --git a/main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocatorFactoryTest.java b/main/frontend-webdav/src/test/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocatorFactoryTest.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocatorFactoryTest.java rename to main/frontend-webdav/src/test/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocatorFactoryTest.java diff --git a/main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/LoggingHttpFilter.java b/main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/LoggingHttpFilter.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/LoggingHttpFilter.java rename to main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/LoggingHttpFilter.java diff --git a/main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/MacChunkedPutCompatibilityFilterTest.java b/main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/MacChunkedPutCompatibilityFilterTest.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/MacChunkedPutCompatibilityFilterTest.java rename to main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/MacChunkedPutCompatibilityFilterTest.java diff --git a/main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/RecordingHttpServletRequest.java b/main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/RecordingHttpServletRequest.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/RecordingHttpServletRequest.java rename to main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/RecordingHttpServletRequest.java diff --git a/main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/RecordingHttpServletResponse.java b/main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/RecordingHttpServletResponse.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/RecordingHttpServletResponse.java rename to main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/RecordingHttpServletResponse.java diff --git a/main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/RecordingServletInputStream.java b/main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/RecordingServletInputStream.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/RecordingServletInputStream.java rename to main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/RecordingServletInputStream.java diff --git a/main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/RecordingServletOutputStream.java b/main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/RecordingServletOutputStream.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/RecordingServletOutputStream.java rename to main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/RecordingServletOutputStream.java diff --git a/main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/UriNormalizationFilterTest.java b/main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/UriNormalizationFilterTest.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/UriNormalizationFilterTest.java rename to main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/UriNormalizationFilterTest.java diff --git a/main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/jackrabbitservlet/FileSystemBasedWebDavServer.java b/main/frontend-webdav/src/test/java/org/cryptomator/webdav/jackrabbitservlet/FileSystemBasedWebDavServer.java similarity index 50% rename from main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/jackrabbitservlet/FileSystemBasedWebDavServer.java rename to main/frontend-webdav/src/test/java/org/cryptomator/webdav/jackrabbitservlet/FileSystemBasedWebDavServer.java index a89475c9f..c14530f3a 100644 --- a/main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/jackrabbitservlet/FileSystemBasedWebDavServer.java +++ b/main/frontend-webdav/src/test/java/org/cryptomator/webdav/jackrabbitservlet/FileSystemBasedWebDavServer.java @@ -10,26 +10,14 @@ package org.cryptomator.webdav.jackrabbitservlet; import java.net.URI; import java.net.URISyntaxException; -import java.util.EnumSet; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; -import javax.servlet.DispatcherType; - import org.cryptomator.filesystem.FileSystem; -import org.cryptomator.webdav.filters.AcceptRangeFilter; -import org.cryptomator.webdav.filters.LoggingHttpFilter; -import org.cryptomator.webdav.filters.MacChunkedPutCompatibilityFilter; -import org.cryptomator.webdav.filters.UriNormalizationFilter; -import org.cryptomator.webdav.filters.UriNormalizationFilter.ResourceTypeChecker; -import org.cryptomator.webdav.filters.UriNormalizationFilter.ResourceTypeChecker.ResourceType; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.handler.ContextHandlerCollection; -import org.eclipse.jetty.servlet.FilterHolder; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.eclipse.jetty.util.thread.ThreadPool; @@ -48,29 +36,18 @@ class FileSystemBasedWebDavServer { localConnector.setPort(8080); servletCollection = new ContextHandlerCollection(); - final ResourceTypeChecker resourceTypeChecker = (path) -> { - if (fileSystem.resolveFolder(path).exists()) { - return ResourceType.FOLDER; - } else if (fileSystem.resolveFile(path).exists()) { - return ResourceType.FILE; - } else { - return ResourceType.UNKNOWN; - } - }; - - URI servletContextRootUri; + final URI servletContextRoot1; + final URI servletContextRoot2; try { - servletContextRootUri = new URI("http", null, "localhost", 8080, "/", null, null); + servletContextRoot1 = new URI("http", null, "localhost", 8080, "/foo/", null, null); + servletContextRoot2 = new URI("http", null, "localhost", 8080, "/bar/", null, null); } catch (URISyntaxException e) { throw new IllegalStateException(e); } - final ServletContextHandler servletContext = new ServletContextHandler(servletCollection, "/", ServletContextHandler.SESSIONS); - final ServletHolder servletHolder = new ServletHolder("FileSystem-WebDAV-Servlet", new WebDavServlet(servletContextRootUri, fileSystem)); - servletContext.addServlet(servletHolder, "/*"); - servletContext.addFilter(AcceptRangeFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST)); - servletContext.addFilter(new FilterHolder(new UriNormalizationFilter(resourceTypeChecker)), "/*", EnumSet.of(DispatcherType.REQUEST)); - servletContext.addFilter(MacChunkedPutCompatibilityFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST)); - servletContext.addFilter(LoggingHttpFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST)); + + final WebDavServletContextFactory servletContextFactory = new WebDavServletContextFactory(); + servletCollection.addHandler(servletContextFactory.create(servletContextRoot1, fileSystem)); + servletCollection.addHandler(servletContextFactory.create(servletContextRoot2, fileSystem)); servletCollection.mapContexts(); server.setConnectors(new Connector[] {localConnector}); diff --git a/main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/jackrabbitservlet/InMemoryWebDavServer.java b/main/frontend-webdav/src/test/java/org/cryptomator/webdav/jackrabbitservlet/InMemoryWebDavServer.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/jackrabbitservlet/InMemoryWebDavServer.java rename to main/frontend-webdav/src/test/java/org/cryptomator/webdav/jackrabbitservlet/InMemoryWebDavServer.java diff --git a/main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/jackrabbitservlet/NioWebDavServer.java b/main/frontend-webdav/src/test/java/org/cryptomator/webdav/jackrabbitservlet/NioWebDavServer.java similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/jackrabbitservlet/NioWebDavServer.java rename to main/frontend-webdav/src/test/java/org/cryptomator/webdav/jackrabbitservlet/NioWebDavServer.java diff --git a/main/jackrabbit-filesystem-adapter/src/test/resources/log4j2.xml b/main/frontend-webdav/src/test/resources/log4j2.xml similarity index 100% rename from main/jackrabbit-filesystem-adapter/src/test/resources/log4j2.xml rename to main/frontend-webdav/src/test/resources/log4j2.xml diff --git a/main/pom.xml b/main/pom.xml index de4ddf236..e96527d02 100644 --- a/main/pom.xml +++ b/main/pom.xml @@ -259,9 +259,9 @@ filesystem-nameshortening filesystem-crypto filesystem-invariants-tests + frontend-webdav crypto-api crypto-aes - jackrabbit-filesystem-adapter core ui