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 2018/04/08 12:14:28 UTC
[tika] 04/05: TikaConfig loading of Multiple Parsers with Policy
This is an automated email from the ASF dual-hosted git repository.
nick pushed a commit to branch multiple-parsers
in repository https://gitbox.apache.org/repos/asf/tika.git
commit f412d56218ffe21f65be4640aaf435c9896b3d16
Author: Nick Burch <ni...@gagravarr.org>
AuthorDate: Sun Apr 8 13:08:19 2018 +0100
TikaConfig loading of Multiple Parsers with Policy
---
.../main/java/org/apache/tika/config/TikaConfig.java | 6 ++++++
.../tika/parser/multiple/AbstractMultipleParser.java | 6 +++++-
.../java/org/apache/tika/config/TikaConfigTest.java | 20 +++++++++++++++++++-
3 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/tika-core/src/main/java/org/apache/tika/config/TikaConfig.java b/tika-core/src/main/java/org/apache/tika/config/TikaConfig.java
index ab6e23f..466d2bc 100644
--- a/tika-core/src/main/java/org/apache/tika/config/TikaConfig.java
+++ b/tika-core/src/main/java/org/apache/tika/config/TikaConfig.java
@@ -789,6 +789,12 @@ public class TikaConfig {
}
if (parser == null) {
try {
+ c = parserClass.getConstructor(MediaTypeRegistry.class, Collection.class, Map.class);
+ parser = c.newInstance(registry, childParsers, params);
+ } catch (NoSuchMethodException me) {}
+ }
+ if (parser == null) {
+ try {
c = parserClass.getConstructor(MediaTypeRegistry.class, List.class);
parser = c.newInstance(registry, childParsers);
} catch (NoSuchMethodException me) {}
diff --git a/tika-core/src/main/java/org/apache/tika/parser/multiple/AbstractMultipleParser.java b/tika-core/src/main/java/org/apache/tika/parser/multiple/AbstractMultipleParser.java
index 793b3f4..56ba7f4 100644
--- a/tika-core/src/main/java/org/apache/tika/parser/multiple/AbstractMultipleParser.java
+++ b/tika-core/src/main/java/org/apache/tika/parser/multiple/AbstractMultipleParser.java
@@ -146,7 +146,7 @@ public abstract class AbstractMultipleParser extends AbstractParser {
public AbstractMultipleParser(MediaTypeRegistry registry,
Collection<? extends Parser> parsers,
Map<String, Param> params) {
-
+ this(registry, getMetadataPolicy(params), parsers);
}
public AbstractMultipleParser(MediaTypeRegistry registry, MetadataPolicy policy,
Parser... parsers) {
@@ -173,6 +173,10 @@ public abstract class AbstractMultipleParser extends AbstractParser {
return offeredTypes;
}
+ public MetadataPolicy getMetadataPolicy() {
+ return policy;
+ }
+
/**
* Used to allow implementations to prepare or change things
* before parsing occurs
diff --git a/tika-core/src/test/java/org/apache/tika/config/TikaConfigTest.java b/tika-core/src/test/java/org/apache/tika/config/TikaConfigTest.java
index aa10923..2c0f14c 100644
--- a/tika-core/src/test/java/org/apache/tika/config/TikaConfigTest.java
+++ b/tika-core/src/test/java/org/apache/tika/config/TikaConfigTest.java
@@ -37,6 +37,7 @@ import org.apache.tika.parser.EmptyParser;
import org.apache.tika.parser.ErrorParser;
import org.apache.tika.parser.Parser;
import org.apache.tika.parser.ParserDecorator;
+import org.apache.tika.parser.multiple.FallbackParser;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
@@ -285,11 +286,28 @@ public class TikaConfigTest extends AbstractTikaConfigTest {
TikaConfig config = getConfig("TIKA-2389-throw-default-overridden.xml");
}
-
@Test
public void testInitializerPerParserWarn() throws Exception {
//TODO: test that this was logged at WARN level
TikaConfig config = getConfig("TIKA-2389-warn-per-parser.xml");
}
+ @Test
+ public void testMultipleWithFallback() throws Exception {
+ TikaConfig config = getConfig("TIKA-1509-multiple-fallback.xml");
+ CompositeParser parser = (CompositeParser)config.getParser();
+ assertEquals(2, parser.getAllComponentParsers().size());
+ Parser p;
+
+ p = parser.getAllComponentParsers().get(0);
+ assertTrue(p.toString(), p instanceof ParserDecorator);
+ assertEquals(DefaultParser.class, ((ParserDecorator)p).getWrappedParser().getClass());
+
+ p = parser.getAllComponentParsers().get(1);
+ assertTrue(p.toString(), p instanceof ParserDecorator);
+ assertEquals(FallbackParser.class, ((ParserDecorator)p).getWrappedParser().getClass());
+
+ FallbackParser fbp = (FallbackParser)((ParserDecorator)p).getWrappedParser();
+ assertEquals("DISCARD_ALL", fbp.getMetadataPolicy().toString());
+ }
}
\ No newline at end of file
--
To stop receiving notification emails like this one, please contact
nick@apache.org.