Browse Source

renamed module

Sebastian Stenzel 9 years ago
parent
commit
8d7c3a8f7b
31 changed files with 98 additions and 54 deletions
  1. 19 18
      main/jackrabbit-filesystem-adapter/pom.xml
  2. 0 0
      main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FileLocator.java
  3. 0 0
      main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemLocator.java
  4. 0 0
      main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocator.java
  5. 0 0
      main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocatorFactory.java
  6. 0 0
      main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FolderLocator.java
  7. 0 0
      main/frontend-webdav/src/main/java/org/cryptomator/webdav/filters/AcceptRangeFilter.java
  8. 0 0
      main/frontend-webdav/src/main/java/org/cryptomator/webdav/filters/HttpFilter.java
  9. 0 0
      main/frontend-webdav/src/main/java/org/cryptomator/webdav/filters/MacChunkedPutCompatibilityFilter.java
  10. 0 0
      main/frontend-webdav/src/main/java/org/cryptomator/webdav/filters/UriNormalizationFilter.java
  11. 0 0
      main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavFile.java
  12. 0 0
      main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavFolder.java
  13. 0 0
      main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavNode.java
  14. 0 0
      main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavSessionImpl.java
  15. 0 0
      main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavSessionProviderImpl.java
  16. 0 0
      main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/FilesystemResourceFactory.java
  17. 4 4
      main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/WebDavServlet.java
  18. 66 0
      main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/WebDavServletContextFactory.java
  19. 0 0
      main/frontend-webdav/src/test/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocatorFactoryTest.java
  20. 0 0
      main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/LoggingHttpFilter.java
  21. 0 0
      main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/MacChunkedPutCompatibilityFilterTest.java
  22. 0 0
      main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/RecordingHttpServletRequest.java
  23. 0 0
      main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/RecordingHttpServletResponse.java
  24. 0 0
      main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/RecordingServletInputStream.java
  25. 0 0
      main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/RecordingServletOutputStream.java
  26. 0 0
      main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/UriNormalizationFilterTest.java
  27. 8 31
      main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/jackrabbitservlet/FileSystemBasedWebDavServer.java
  28. 0 0
      main/frontend-webdav/src/test/java/org/cryptomator/webdav/jackrabbitservlet/InMemoryWebDavServer.java
  29. 0 0
      main/frontend-webdav/src/test/java/org/cryptomator/webdav/jackrabbitservlet/NioWebDavServer.java
  30. 0 0
      main/frontend-webdav/src/test/resources/log4j2.xml
  31. 1 1
      main/pom.xml

+ 19 - 18
main/jackrabbit-filesystem-adapter/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 @@
 		<artifactId>main</artifactId>
 		<version>0.11.0-SNAPSHOT</version>
 	</parent>
-	<artifactId>jackrabbit-filesystem-adapter</artifactId>
-	<name>Jackrabbit filesystem-WebDAV-adapter</name>
-	<description>WebDAV servlet based on Apache Jackrabbit serving files from a filesystem</description>
+	<artifactId>frontend-webdav</artifactId>
+	<name>Jackrabbit-based WebDAV filesystem frontend</name>
+	<description>Provides access via WebDAV to filesystems</description>
 
 	<properties>
 		<jackrabbit.version>2.11.0</jackrabbit.version>
+		<jetty.version>9.3.3.v20150827</jetty.version>
 	</properties>
 
 	<dependencies>
@@ -43,7 +44,19 @@
 			<artifactId>jackrabbit-webdav</artifactId>
 			<version>${jackrabbit.version}</version>
 		</dependency>
-		
+
+		<!-- Jetty -->
+		<dependency>
+			<groupId>org.eclipse.jetty</groupId>
+			<artifactId>jetty-server</artifactId>
+			<version>${jetty.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.eclipse.jetty</groupId>
+			<artifactId>jetty-webapp</artifactId>
+			<version>${jetty.version}</version>
+		</dependency>
+
 		<!-- Commons -->
 		<dependency>
 			<groupId>org.apache.commons</groupId>
@@ -59,18 +72,6 @@
 			<groupId>org.cryptomator</groupId>
 			<artifactId>commons-test</artifactId>
 		</dependency>
-		<dependency>
-			<groupId>org.eclipse.jetty</groupId>
-			<artifactId>jetty-server</artifactId>
-			<version>9.3.3.v20150827</version>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.eclipse.jetty</groupId>
-			<artifactId>jetty-webapp</artifactId>
-			<version>9.3.3.v20150827</version>
-			<scope>test</scope>
-		</dependency>
 		<dependency>
 			<groupId>commons-httpclient</groupId>
 			<artifactId>commons-httpclient</artifactId>
@@ -96,4 +97,4 @@
 			</plugin>
 		</plugins>
 	</build>
-</project>
+</project>

main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/filesystem/jackrabbit/FileLocator.java → main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FileLocator.java


main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemLocator.java → main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemLocator.java


main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocator.java → main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocator.java


main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocatorFactory.java → main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocatorFactory.java


main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/filesystem/jackrabbit/FolderLocator.java → main/frontend-webdav/src/main/java/org/cryptomator/filesystem/jackrabbit/FolderLocator.java


main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/filters/AcceptRangeFilter.java → main/frontend-webdav/src/main/java/org/cryptomator/webdav/filters/AcceptRangeFilter.java


main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/filters/HttpFilter.java → main/frontend-webdav/src/main/java/org/cryptomator/webdav/filters/HttpFilter.java


main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/filters/MacChunkedPutCompatibilityFilter.java → main/frontend-webdav/src/main/java/org/cryptomator/webdav/filters/MacChunkedPutCompatibilityFilter.java


main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/filters/UriNormalizationFilter.java → main/frontend-webdav/src/main/java/org/cryptomator/webdav/filters/UriNormalizationFilter.java


main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavFile.java → main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavFile.java


main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavFolder.java → main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavFolder.java


main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavNode.java → main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavNode.java


main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavSessionImpl.java → main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavSessionImpl.java


main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavSessionProviderImpl.java → main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/DavSessionProviderImpl.java


main/jackrabbit-filesystem-adapter/src/main/java/org/cryptomator/webdav/jackrabbitservlet/FilesystemResourceFactory.java → main/frontend-webdav/src/main/java/org/cryptomator/webdav/jackrabbitservlet/FilesystemResourceFactory.java


+ 4 - 4
main/jackrabbit-filesystem-adapter/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();
 	}
 

+ 66 - 0
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:
+	 * 
+	 * <pre>
+	 * ServletContextHandler context = factory.create(...);
+	 * servletCollection.addHandler(context);
+	 * servletCollection.mapContexts();
+	 * </pre>
+	 * 
+	 * @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;
+	}
+
+}

main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocatorFactoryTest.java → main/frontend-webdav/src/test/java/org/cryptomator/filesystem/jackrabbit/FileSystemResourceLocatorFactoryTest.java


main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/LoggingHttpFilter.java → main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/LoggingHttpFilter.java


main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/MacChunkedPutCompatibilityFilterTest.java → main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/MacChunkedPutCompatibilityFilterTest.java


main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/RecordingHttpServletRequest.java → main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/RecordingHttpServletRequest.java


main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/RecordingHttpServletResponse.java → main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/RecordingHttpServletResponse.java


main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/RecordingServletInputStream.java → main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/RecordingServletInputStream.java


main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/RecordingServletOutputStream.java → main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/RecordingServletOutputStream.java


main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/filters/UriNormalizationFilterTest.java → main/frontend-webdav/src/test/java/org/cryptomator/webdav/filters/UriNormalizationFilterTest.java


+ 8 - 31
main/jackrabbit-filesystem-adapter/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});

main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/jackrabbitservlet/InMemoryWebDavServer.java → main/frontend-webdav/src/test/java/org/cryptomator/webdav/jackrabbitservlet/InMemoryWebDavServer.java


main/jackrabbit-filesystem-adapter/src/test/java/org/cryptomator/webdav/jackrabbitservlet/NioWebDavServer.java → main/frontend-webdav/src/test/java/org/cryptomator/webdav/jackrabbitservlet/NioWebDavServer.java


main/jackrabbit-filesystem-adapter/src/test/resources/log4j2.xml → main/frontend-webdav/src/test/resources/log4j2.xml


+ 1 - 1
main/pom.xml

@@ -259,9 +259,9 @@
 		<module>filesystem-nameshortening</module>
 		<module>filesystem-crypto</module>
 		<module>filesystem-invariants-tests</module>
+		<module>frontend-webdav</module>
 		<module>crypto-api</module>
 		<module>crypto-aes</module>
-		<module>jackrabbit-filesystem-adapter</module>
 		<module>core</module>
 		<module>ui</module>
 	</modules>