Author: nick
Date: Sat May 2 15:41:43 2015
New Revision: 1677328
URL: http://svn.apache.org/r1677328
Log:
TIKA-1517 Pull the ordering logic for loaded classed (non-Tika first etc) out
into a util class
Added:
tika/trunk/tika-core/src/main/java/org/apache/tika/utils/ServiceLoaderUtils.java
Modified:
tika/trunk/tika-core/src/main/java/org/apache/tika/detect/DefaultDetector.java
tika/trunk/tika-core/src/main/java/org/apache/tika/detect/DefaultProbDetector.java
tika/trunk/tika-core/src/main/java/org/apache/tika/parser/DefaultParser.java
Modified:
tika/trunk/tika-core/src/main/java/org/apache/tika/detect/DefaultDetector.java
URL:
http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/detect/DefaultDetector.java?rev=1677328&r1=1677327&r2=1677328&view=diff
==============================================================================
---
tika/trunk/tika-core/src/main/java/org/apache/tika/detect/DefaultDetector.java
(original)
+++
tika/trunk/tika-core/src/main/java/org/apache/tika/detect/DefaultDetector.java
Sat May 2 15:41:43 2015
@@ -16,14 +16,13 @@
*/
package org.apache.tika.detect;
-import java.util.Collections;
-import java.util.Comparator;
import java.util.List;
import javax.imageio.spi.ServiceRegistry;
import org.apache.tika.config.ServiceLoader;
import org.apache.tika.mime.MimeTypes;
+import org.apache.tika.utils.ServiceLoaderUtils;
/**
* A composite detector based on all the {@link Detector} implementations
@@ -53,23 +52,9 @@ public class DefaultDetector extends Com
*/
private static List<Detector> getDefaultDetectors(
MimeTypes types, ServiceLoader loader) {
- List<Detector> detectors =
- loader.loadStaticServiceProviders(Detector.class);
- Collections.sort(detectors, new Comparator<Detector>() {
- public int compare(Detector d1, Detector d2) {
- String n1 = d1.getClass().getName();
- String n2 = d2.getClass().getName();
- boolean t1 = n1.startsWith("org.apache.tika.");
- boolean t2 = n2.startsWith("org.apache.tika.");
- if (t1 == t2) {
- return n1.compareTo(n2);
- } else if (t1) {
- return 1;
- } else {
- return -1;
- }
- }
- });
+ List<Detector> detectors =
loader.loadStaticServiceProviders(Detector.class);
+ ServiceLoaderUtils.sortLoadedClasses(detectors);
+
// Finally the Tika MimeTypes as a fallback
detectors.add(types);
return detectors;
Modified:
tika/trunk/tika-core/src/main/java/org/apache/tika/detect/DefaultProbDetector.java
URL:
http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/detect/DefaultProbDetector.java?rev=1677328&r1=1677327&r2=1677328&view=diff
==============================================================================
---
tika/trunk/tika-core/src/main/java/org/apache/tika/detect/DefaultProbDetector.java
(original)
+++
tika/trunk/tika-core/src/main/java/org/apache/tika/detect/DefaultProbDetector.java
Sat May 2 15:41:43 2015
@@ -16,13 +16,12 @@
*/
package org.apache.tika.detect;
-import java.util.Collections;
-import java.util.Comparator;
import java.util.List;
import org.apache.tika.config.ServiceLoader;
import org.apache.tika.mime.MimeTypes;
import org.apache.tika.mime.ProbabilisticMimeDetectionSelector;
+import org.apache.tika.utils.ServiceLoaderUtils;
/**
* A version of {@link DefaultDetector} for probabilistic mime
@@ -37,22 +36,7 @@ public class DefaultProbDetector extends
private static List<Detector> getDefaultDetectors(
ProbabilisticMimeDetectionSelector sel, ServiceLoader loader) {
List<Detector> detectors =
loader.loadStaticServiceProviders(Detector.class);
- Collections.sort(detectors, new Comparator<Detector>() {
- public int compare(Detector d1, Detector d2) {
- String n1 = d1.getClass().getName();
- String n2 = d2.getClass().getName();
- boolean t1 = n1.startsWith("org.apache.tika.");
- boolean t2 = n2.startsWith("org.apache.tika.");
- if (t1 == t2) {
- return n1.compareTo(n2);
- } else if (t1) {
- return 1;
- } else {
- return -1;
- }
- }
- });
-
+ ServiceLoaderUtils.sortLoadedClasses(detectors);
detectors.add(sel);
return detectors;
}
Modified:
tika/trunk/tika-core/src/main/java/org/apache/tika/parser/DefaultParser.java
URL:
http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/parser/DefaultParser.java?rev=1677328&r1=1677327&r2=1677328&view=diff
==============================================================================
---
tika/trunk/tika-core/src/main/java/org/apache/tika/parser/DefaultParser.java
(original)
+++
tika/trunk/tika-core/src/main/java/org/apache/tika/parser/DefaultParser.java
Sat May 2 15:41:43 2015
@@ -19,13 +19,13 @@ package org.apache.tika.parser;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
-import java.util.Comparator;
import java.util.List;
import java.util.Map;
import org.apache.tika.config.ServiceLoader;
import org.apache.tika.mime.MediaType;
import org.apache.tika.mime.MediaTypeRegistry;
+import org.apache.tika.utils.ServiceLoaderUtils;
/**
* A composite parser based on all the {@link Parser} implementations
@@ -49,23 +49,8 @@ public class DefaultParser extends Compo
* @return ordered list of statically loadable parsers
*/
private static List<Parser> getDefaultParsers(ServiceLoader loader) {
- List<Parser> parsers =
- loader.loadStaticServiceProviders(Parser.class);
- Collections.sort(parsers, new Comparator<Parser>() {
- public int compare(Parser p1, Parser p2) {
- String n1 = p1.getClass().getName();
- String n2 = p2.getClass().getName();
- boolean t1 = n1.startsWith("org.apache.tika.");
- boolean t2 = n2.startsWith("org.apache.tika.");
- if (t1 == t2) {
- return n1.compareTo(n2);
- } else if (t1) {
- return -1;
- } else {
- return 1;
- }
- }
- });
+ List<Parser> parsers = loader.loadStaticServiceProviders(Parser.class);
+ ServiceLoaderUtils.sortLoadedClasses(parsers);
return parsers;
}
Added:
tika/trunk/tika-core/src/main/java/org/apache/tika/utils/ServiceLoaderUtils.java
URL:
http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/utils/ServiceLoaderUtils.java?rev=1677328&view=auto
==============================================================================
---
tika/trunk/tika-core/src/main/java/org/apache/tika/utils/ServiceLoaderUtils.java
(added)
+++
tika/trunk/tika-core/src/main/java/org/apache/tika/utils/ServiceLoaderUtils.java
Sat May 2 15:41:43 2015
@@ -0,0 +1,48 @@
+/**
+ * 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.tika.utils;
+
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+/**
+ * Service Loading and Ordering related utils
+ */
+public class ServiceLoaderUtils {
+ /**
+ * Sorts a list of loaded classes, so that non-Tika ones come
+ * before Tika ones, and otherwise in reverse alphabetical order
+ */
+ public static <T> void sortLoadedClasses(List<T> loaded) {
+ Collections.sort(loaded, new Comparator<T>() {
+ public int compare(T c1, T c2) {
+ String n1 = c1.getClass().getName();
+ String n2 = c2.getClass().getName();
+ boolean t1 = n1.startsWith("org.apache.tika.");
+ boolean t2 = n2.startsWith("org.apache.tika.");
+ if (t1 == t2) {
+ return n1.compareTo(n2);
+ } else if (t1) {
+ return 1;
+ } else {
+ return -1;
+ }
+ }
+ });
+ }
+}