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;