You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:50:54 UTC
[sling-org-apache-sling-jcr-webdav] 02/12: SLING-1212 - upgrading
to Jackrabbit 2. Also includes re-revert of SLING-1363 and implementation
of SLING-1330. Thanks to Felix for getting this started.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.jcr.webdav-2.1.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-webdav.git
commit c5338ab4151ac521774f18a8b3257b5c6351a07d
Author: Justin Edelson <ju...@apache.org>
AuthorDate: Thu Feb 18 15:08:43 2010 +0000
SLING-1212 - upgrading to Jackrabbit 2. Also includes re-revert of SLING-1363 and implementation of SLING-1330. Thanks to Felix for getting this started.
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/jcr/webdav@911430 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 8 +-
.../jcr/webdav/impl/helper/SlingMimeResolver.java | 41 ----------
.../webdav/impl/helper/SlingResourceConfig.java | 14 +---
.../jcr/webdav/impl/helper/SlingTikaDetector.java | 88 ++++++++++++++++++++++
4 files changed, 98 insertions(+), 53 deletions(-)
diff --git a/pom.xml b/pom.xml
index 584335c..b2a4d81 100644
--- a/pom.xml
+++ b/pom.xml
@@ -115,9 +115,15 @@
</dependency>
<dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ <version>2.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-jcr-server</artifactId>
- <version>1.5.0</version>
+ <version>2.0.0</version>
<scope>compile</scope>
</dependency>
diff --git a/src/main/java/org/apache/sling/jcr/webdav/impl/helper/SlingMimeResolver.java b/src/main/java/org/apache/sling/jcr/webdav/impl/helper/SlingMimeResolver.java
deleted file mode 100644
index a01ee22..0000000
--- a/src/main/java/org/apache/sling/jcr/webdav/impl/helper/SlingMimeResolver.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.sling.jcr.webdav.impl.helper;
-
-import org.apache.jackrabbit.server.io.MimeResolver;
-import org.apache.sling.commons.mime.MimeTypeService;
-
-public class SlingMimeResolver extends MimeResolver {
-
- private final MimeTypeService mimeTypeService;
-
- public SlingMimeResolver(MimeTypeService mimeTypeService) {
- this.mimeTypeService = mimeTypeService;
- }
-
- @Override
- public String getMimeType(String filename) {
- String type = mimeTypeService.getMimeType(filename);
- if (type == null) {
- type = getDefaultMimeType();
- }
- return type;
- }
-
-}
diff --git a/src/main/java/org/apache/sling/jcr/webdav/impl/helper/SlingResourceConfig.java b/src/main/java/org/apache/sling/jcr/webdav/impl/helper/SlingResourceConfig.java
index 270c416..0612a7f 100644
--- a/src/main/java/org/apache/sling/jcr/webdav/impl/helper/SlingResourceConfig.java
+++ b/src/main/java/org/apache/sling/jcr/webdav/impl/helper/SlingResourceConfig.java
@@ -30,7 +30,6 @@ import org.apache.jackrabbit.server.io.DefaultHandler;
import org.apache.jackrabbit.server.io.DirListingExportHandler;
import org.apache.jackrabbit.server.io.IOManager;
import org.apache.jackrabbit.server.io.IOManagerImpl;
-import org.apache.jackrabbit.server.io.MimeResolver;
import org.apache.jackrabbit.server.io.PropertyManager;
import org.apache.jackrabbit.server.io.PropertyManagerImpl;
import org.apache.jackrabbit.webdav.simple.DefaultItemFilter;
@@ -43,8 +42,6 @@ import org.apache.sling.jcr.webdav.impl.servlets.SlingWebDavServlet;
public class SlingResourceConfig extends ResourceConfig {
- private final MimeResolver mimeResolver;
-
private final String[] collectionTypes;
private final ItemFilter itemFilter;
@@ -57,9 +54,9 @@ public class SlingResourceConfig extends ResourceConfig {
private final Dictionary<String, String> servletInitParams;
- public SlingResourceConfig(MimeTypeService mimetypService,
+ public SlingResourceConfig(MimeTypeService mimeTypeService,
Dictionary<?, ?> config) {
- mimeResolver = new SlingMimeResolver(mimetypService);
+ super(new SlingTikaDetector(mimeTypeService));
collectionTypes = OsgiUtil.toStringArray(
config.get(SlingWebDavServlet.COLLECTION_TYPES),
SlingWebDavServlet.COLLECTION_TYPES_DEFAULT);
@@ -93,7 +90,7 @@ public class SlingResourceConfig extends ResourceConfig {
DirListingExportHandler dirHandler = new DirListingExportHandler();
DefaultHandler defaultHandler = new DefaultHandler(null, collectionType,
nonCollectionType, contentType);
-
+
ioManager = new IOManagerImpl();
ioManager.addIOHandler(dirHandler);
ioManager.addIOHandler(defaultHandler);
@@ -131,11 +128,6 @@ public class SlingResourceConfig extends ResourceConfig {
}
@Override
- public MimeResolver getMimeResolver() {
- return mimeResolver;
- }
-
- @Override
public PropertyManager getPropertyManager() {
return propertyManager;
}
diff --git a/src/main/java/org/apache/sling/jcr/webdav/impl/helper/SlingTikaDetector.java b/src/main/java/org/apache/sling/jcr/webdav/impl/helper/SlingTikaDetector.java
new file mode 100644
index 0000000..69f2828
--- /dev/null
+++ b/src/main/java/org/apache/sling/jcr/webdav/impl/helper/SlingTikaDetector.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You 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.apache.sling.jcr.webdav.impl.helper;
+
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import org.apache.sling.commons.mime.MimeTypeService;
+import org.apache.tika.detect.Detector;
+import org.apache.tika.metadata.Metadata;
+import org.apache.tika.mime.MediaType;
+
+public class SlingTikaDetector implements Detector {
+
+ private final MimeTypeService mimeTypeService;
+
+ public SlingTikaDetector(MimeTypeService mimeTypeService) {
+ this.mimeTypeService = mimeTypeService;
+ }
+
+ public MediaType detect(InputStream rawData, Metadata metadata) {
+
+ // NOTE: This implementation is built after the Tika NameDetector
+ // implementation which only takes the resource name into
+ // consideration when trying to detect the MIME type.
+
+ // Look for a resource name in the input metadata
+ String name = metadata.get(Metadata.RESOURCE_NAME_KEY);
+ if (name != null) {
+ // If the name is a URL, skip the trailing query and fragment parts
+ int question = name.indexOf('?');
+ if (question != -1) {
+ name = name.substring(0, question);
+ }
+ int hash = name.indexOf('#');
+ if (hash != -1) {
+ name = name.substring(0, hash);
+ }
+
+ // If the name is a URL or a path, skip all but the last component
+ int slash = name.lastIndexOf('/');
+ if (slash != -1) {
+ name = name.substring(slash + 1);
+ }
+ int backslash = name.lastIndexOf('\\');
+ if (backslash != -1) {
+ name = name.substring(backslash + 1);
+ }
+
+ // Decode any potential URL encoding
+ int percent = name.indexOf('%');
+ if (percent != -1) {
+ try {
+ name = URLDecoder.decode(name, "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ throw new AssertionError("UTF-8 not supported");
+ }
+ }
+
+ // Skip any leading or trailing whitespace
+ name = name.trim();
+ if (name.length() > 0) {
+ // Match the name against the registered patterns
+ String type = mimeTypeService.getMimeType(name);
+ if (type != null) {
+ return MediaType.parse(type);
+ }
+ }
+ }
+
+ return MediaType.OCTET_STREAM;
+ }
+
+}
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.