You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ni...@apache.org on 2015/08/01 18:58:54 UTC
svn commit: r1693730 - in
/tika/trunk/tika-core/src/main/java/org/apache/tika:
detect/CompositeDetector.java detect/DefaultDetector.java
parser/CompositeParser.java
Author: nick
Date: Sat Aug 1 16:58:54 2015
New Revision: 1693730
URL: http://svn.apache.org/r1693730
Log:
TIKA-1702 CompositeDetector support for excludes, along the lines of the CompositeParser support
Modified:
tika/trunk/tika-core/src/main/java/org/apache/tika/detect/CompositeDetector.java
tika/trunk/tika-core/src/main/java/org/apache/tika/detect/DefaultDetector.java
tika/trunk/tika-core/src/main/java/org/apache/tika/parser/CompositeParser.java
Modified: tika/trunk/tika-core/src/main/java/org/apache/tika/detect/CompositeDetector.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/detect/CompositeDetector.java?rev=1693730&r1=1693729&r2=1693730&view=diff
==============================================================================
--- tika/trunk/tika-core/src/main/java/org/apache/tika/detect/CompositeDetector.java (original)
+++ tika/trunk/tika-core/src/main/java/org/apache/tika/detect/CompositeDetector.java Sat Aug 1 16:58:54 2015
@@ -18,7 +18,9 @@ package org.apache.tika.detect;
import java.io.IOException;
import java.io.InputStream;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -40,10 +42,24 @@ public class CompositeDetector implement
private final List<Detector> detectors;
- public CompositeDetector(
- MediaTypeRegistry registry, List<Detector> detectors) {
+ public CompositeDetector(MediaTypeRegistry registry,
+ List<Detector> detectors, Collection<Class<? extends Detector>> excludeDetectors) {
+ if (excludeDetectors == null || excludeDetectors.isEmpty()) {
+ this.detectors = detectors;
+ } else {
+ this.detectors = new ArrayList<Detector>();
+ for (Detector d : detectors) {
+ if (!isExcluded(excludeDetectors, d.getClass())) {
+ this.detectors.add(d);
+ }
+ }
+ }
this.registry = registry;
- this.detectors = detectors;
+ }
+
+ public CompositeDetector(MediaTypeRegistry registry,
+ List<Detector> detectors) {
+ this(registry, detectors, null);
}
public CompositeDetector(List<Detector> detectors) {
@@ -72,4 +88,14 @@ public class CompositeDetector implement
public List<Detector> getDetectors() {
return Collections.unmodifiableList(detectors);
}
+
+ private boolean isExcluded(Collection<Class<? extends Detector>> excludeDetectors, Class<? extends Detector> d) {
+ return excludeDetectors.contains(d) || assignableFrom(excludeDetectors, d);
+ }
+ private boolean assignableFrom(Collection<Class<? extends Detector>> excludeDetectors, Class<? extends Detector> d) {
+ for (Class<? extends Detector> e : excludeDetectors) {
+ if (e.isAssignableFrom(d)) return true;
+ }
+ return false;
+ }
}
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=1693730&r1=1693729&r2=1693730&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 Aug 1 16:58:54 2015
@@ -16,6 +16,7 @@
*/
package org.apache.tika.detect;
+import java.util.Collection;
import java.util.List;
import javax.imageio.spi.ServiceRegistry;
@@ -62,10 +63,15 @@ public class DefaultDetector extends Com
private transient final ServiceLoader loader;
- public DefaultDetector(MimeTypes types, ServiceLoader loader) {
- super(types.getMediaTypeRegistry(), getDefaultDetectors(types, loader));
+ public DefaultDetector(MimeTypes types, ServiceLoader loader,
+ Collection<Class<? extends Detector>> excludeDetectors) {
+ super(types.getMediaTypeRegistry(), getDefaultDetectors(types, loader), excludeDetectors);
this.loader = loader;
}
+
+ public DefaultDetector(MimeTypes types, ServiceLoader loader) {
+ this(types, loader, null);
+ }
public DefaultDetector(MimeTypes types, ClassLoader loader) {
this(types, new ServiceLoader(loader));
Modified: tika/trunk/tika-core/src/main/java/org/apache/tika/parser/CompositeParser.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/parser/CompositeParser.java?rev=1693730&r1=1693729&r2=1693730&view=diff
==============================================================================
--- tika/trunk/tika-core/src/main/java/org/apache/tika/parser/CompositeParser.java (original)
+++ tika/trunk/tika-core/src/main/java/org/apache/tika/parser/CompositeParser.java Sat Aug 1 16:58:54 2015
@@ -99,10 +99,9 @@ public class CompositeParser extends Abs
return map;
}
- private boolean isExcluded(Collection<Class<? extends Parser>> excludeParsers, Class<? extends Parser> p){
+ private boolean isExcluded(Collection<Class<? extends Parser>> excludeParsers, Class<? extends Parser> p) {
return excludeParsers.contains(p) || assignableFrom(excludeParsers, p);
}
-
private boolean assignableFrom(Collection<Class<? extends Parser>> excludeParsers, Class<? extends Parser> p) {
for (Class<? extends Parser> e : excludeParsers) {
if (e.isAssignableFrom(p)) return true;