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 <n...@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 n...@apache.org.