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;