Author: nick
Date: Sat Aug 1 17:13:01 2015
New Revision: 1693739
URL: http://svn.apache.org/r1693739
Log:
Allow Detectors to be defined as excluded in Tika Config XML TIKA-1702
Modified:
tika/trunk/tika-core/src/main/java/org/apache/tika/config/TikaConfig.java
tika/trunk/tika-parsers/src/test/java/org/apache/tika/config/TikaDetectorConfigTest.java
Modified:
tika/trunk/tika-core/src/main/java/org/apache/tika/config/TikaConfig.java
URL:
http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/java/org/apache/tika/config/TikaConfig.java?rev=1693739&r1=1693738&r2=1693739&view=diff
==============================================================================
--- tika/trunk/tika-core/src/main/java/org/apache/tika/config/TikaConfig.java
(original)
+++ tika/trunk/tika-core/src/main/java/org/apache/tika/config/TikaConfig.java
Sat Aug 1 17:13:01 2015
@@ -504,8 +504,9 @@ public class TikaConfig {
}
} else {
// Regular class, create as-is
- // TODO Support arguments, needed for Translators etc
loaded = loadedClass.newInstance();
+ // TODO Support arguments, needed for Translators etc
+ // See the thread "Configuring parsers and translators"
for details
}
// Have any decoration performed, eg explicit mimetypes
@@ -579,6 +580,12 @@ public class TikaConfig {
parser = c.newInstance(registry, childParsers,
excludeParsers);
} catch (NoSuchMethodException me) {}
}
+ if (parser == null) {
+ try {
+ c = parserClass.getConstructor(MediaTypeRegistry.class,
List.class);
+ parser = c.newInstance(registry, childParsers);
+ } catch (NoSuchMethodException me) {}
+ }
// Create as a Parser Decorator
if (parser == null &&
ParserDecorator.class.isAssignableFrom(parserClass)) {
@@ -641,14 +648,44 @@ public class TikaConfig {
return new CompositeDetector(registry, detectors);
}
@Override
- Detector createComposite(Class<? extends Detector> compositeClass,
- List<Detector> children,
- Set<Class<? extends Detector>> excludeChildren,
+ Detector createComposite(Class<? extends Detector> detectorClass,
+ List<Detector> childDetectors,
+ Set<Class<? extends Detector>> excludeDetectors,
MimeTypes mimeTypes, ServiceLoader loader)
throws InvocationTargetException, IllegalAccessException,
InstantiationException {
- // TODO Implement properly
- return compositeClass.newInstance();
+ Detector detector = null;
+ Constructor<? extends Detector> c = null;
+ MediaTypeRegistry registry = mimeTypes.getMediaTypeRegistry();
+
+ // Try the possible composite detector constructors
+ if (detector == null) {
+ try {
+ c = detectorClass.getConstructor(MimeTypes.class,
ServiceLoader.class, Collection.class);
+ detector = c.newInstance(mimeTypes, loader,
excludeDetectors);
+ }
+ catch (NoSuchMethodException me) {}
+ }
+ if (detector == null) {
+ try {
+ c = detectorClass.getConstructor(MediaTypeRegistry.class,
List.class, Collection.class);
+ detector = c.newInstance(registry, childDetectors,
excludeDetectors);
+ } catch (NoSuchMethodException me) {}
+ }
+ if (detector == null) {
+ try {
+ c = detectorClass.getConstructor(MediaTypeRegistry.class,
List.class);
+ detector = c.newInstance(registry, childDetectors);
+ } catch (NoSuchMethodException me) {}
+ }
+ if (detector == null) {
+ try {
+ c = detectorClass.getConstructor(List.class);
+ detector = c.newInstance(childDetectors);
+ } catch (NoSuchMethodException me) {}
+ }
+
+ return detector;
}
@Override
Detector decorate(Detector created, Element element) {
Modified:
tika/trunk/tika-parsers/src/test/java/org/apache/tika/config/TikaDetectorConfigTest.java
URL:
http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/java/org/apache/tika/config/TikaDetectorConfigTest.java?rev=1693739&r1=1693738&r2=1693739&view=diff
==============================================================================
---
tika/trunk/tika-parsers/src/test/java/org/apache/tika/config/TikaDetectorConfigTest.java
(original)
+++
tika/trunk/tika-parsers/src/test/java/org/apache/tika/config/TikaDetectorConfigTest.java
Sat Aug 1 17:13:01 2015
@@ -27,7 +27,6 @@ import org.apache.tika.detect.Detector;
import org.apache.tika.detect.EmptyDetector;
import org.apache.tika.parser.microsoft.POIFSContainerDetector;
import org.apache.tika.parser.pkg.ZipContainerDetector;
-import org.junit.Ignore;
import org.junit.Test;
/**
@@ -37,7 +36,6 @@ import org.junit.Test;
*/
public class TikaDetectorConfigTest extends AbstractTikaConfigTest {
@Test
- @Ignore // TODO Work on TIKA-1702 in progress
public void testDetectorExcludeFromDefault() throws Exception {
TikaConfig config = getConfig("TIKA-1702-detector-blacklist.xml");
assertNotNull(config.getParser());