TIKA-1986 -- allow params to be passed into initializable, delete configurableparser
Project: http://git-wip-us.apache.org/repos/asf/tika/repo Commit: http://git-wip-us.apache.org/repos/asf/tika/commit/f8fe50a2 Tree: http://git-wip-us.apache.org/repos/asf/tika/tree/f8fe50a2 Diff: http://git-wip-us.apache.org/repos/asf/tika/diff/f8fe50a2 Branch: refs/heads/master Commit: f8fe50a2239cc8875fe3df7de6215e40da48b587 Parents: 30b0f66 Author: tballison <[email protected]> Authored: Wed Jun 15 17:00:53 2016 -0400 Committer: tballison <[email protected]> Committed: Wed Jun 15 17:00:53 2016 -0400 ---------------------------------------------------------------------- .../org/apache/tika/config/Initializable.java | 4 +- .../java/org/apache/tika/config/TikaConfig.java | 11 +-- .../org/apache/tika/utils/AnnotationUtils.java | 2 +- .../tika/parser/ConfigurableParserTest.java | 78 -------------------- .../tika/parser/DummyConfigurableParser.java | 67 ----------------- .../tika/parser/DummyInitializableParser.java | 6 +- .../apache/tika/utils/AnnotationUtilsTest.java | 10 +-- 7 files changed, 20 insertions(+), 158 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tika/blob/f8fe50a2/tika-core/src/main/java/org/apache/tika/config/Initializable.java ---------------------------------------------------------------------- diff --git a/tika-core/src/main/java/org/apache/tika/config/Initializable.java b/tika-core/src/main/java/org/apache/tika/config/Initializable.java index bc7769c..8beaf77 100644 --- a/tika-core/src/main/java/org/apache/tika/config/Initializable.java +++ b/tika-core/src/main/java/org/apache/tika/config/Initializable.java @@ -18,6 +18,8 @@ package org.apache.tika.config; import org.apache.tika.exception.TikaConfigException; +import java.util.Map; + /** * Components that must do special processing across multiple fields * at initialization time should implement this interface. @@ -27,5 +29,5 @@ import org.apache.tika.exception.TikaConfigException; */ public interface Initializable { - void initialize() throws TikaConfigException; + void initialize(Map<String, Param> params) throws TikaConfigException; } http://git-wip-us.apache.org/repos/asf/tika/blob/f8fe50a2/tika-core/src/main/java/org/apache/tika/config/TikaConfig.java ---------------------------------------------------------------------- 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 fbafe7e..a680916 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 @@ -562,11 +562,12 @@ public class TikaConfig { // See the thread "Configuring parsers and translators" for details } - Map<String, Param<?>> params = getParams(element); + Map<String, Param> params = getParams(element); //Assigning the params to bean fields/setters - AnnotationUtils.assignFieldParams(loaded, params); if (loaded instanceof Initializable) { - ((Initializable) loaded).initialize(); + ((Initializable) loaded).initialize(params); + } else { + AnnotationUtils.assignFieldParams(loaded, params); } // Have any decoration performed, eg explicit mimetypes @@ -599,8 +600,8 @@ public class TikaConfig { * @param el xml node which has {@link #PARAMS_TAG_NAME} child * @return Map of key values read from xml */ - Map<String, Param<?>> getParams(Element el){ - Map<String, Param<?>> params = new HashMap<>(); + Map<String, Param> getParams(Element el){ + Map<String, Param> params = new HashMap<>(); for (Node child = el.getFirstChild(); child != null; child = child.getNextSibling()){ if (PARAMS_TAG_NAME.equals(child.getNodeName())){ //found the node http://git-wip-us.apache.org/repos/asf/tika/blob/f8fe50a2/tika-core/src/main/java/org/apache/tika/utils/AnnotationUtils.java ---------------------------------------------------------------------- diff --git a/tika-core/src/main/java/org/apache/tika/utils/AnnotationUtils.java b/tika-core/src/main/java/org/apache/tika/utils/AnnotationUtils.java index 1f56bc7..8afccc4 100644 --- a/tika-core/src/main/java/org/apache/tika/utils/AnnotationUtils.java +++ b/tika-core/src/main/java/org/apache/tika/utils/AnnotationUtils.java @@ -78,7 +78,7 @@ public class AnnotationUtils { * Assigns the param values to bean * @throws TikaConfigException when an error occurs while assigning params */ - public static void assignFieldParams(Object bean, Map<String, Param<?>> params) throws TikaConfigException { + public static void assignFieldParams(Object bean, Map<String, Param> params) throws TikaConfigException { Class<?> beanClass = bean.getClass(); if (!PARAM_INFO.containsKey(beanClass)) { synchronized (TikaConfig.class){ http://git-wip-us.apache.org/repos/asf/tika/blob/f8fe50a2/tika-core/src/test/java/org/apache/tika/parser/ConfigurableParserTest.java ---------------------------------------------------------------------- diff --git a/tika-core/src/test/java/org/apache/tika/parser/ConfigurableParserTest.java b/tika-core/src/test/java/org/apache/tika/parser/ConfigurableParserTest.java deleted file mode 100644 index ffb632c..0000000 --- a/tika-core/src/test/java/org/apache/tika/parser/ConfigurableParserTest.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.tika.parser; - -import org.apache.tika.Tika; -import org.apache.tika.config.TikaConfig; -import org.apache.tika.metadata.Metadata; -import org.junit.Assert; -import org.junit.Ignore; -import org.junit.Test; - -import java.io.File; -import java.math.BigInteger; -import java.net.URI; -import java.net.URL; -import java.util.HashMap; -import java.util.Map; - -public class ConfigurableParserTest { - - public static final String TIKA_CFG_FILE = "org/apache/tika/config/TIKA-1508-configurable.xml"; - public static final String TEST_PARAM = "testparam"; - public static final String TEST_PARAM_VAL = "testparamval"; - - @Test - @Ignore - public void testConfigurableParser() throws Exception { - URL configFileUrl = getClass().getClassLoader().getResource(TIKA_CFG_FILE); - assert configFileUrl != null; - TikaConfig config = new TikaConfig(configFileUrl); - Tika tika = new Tika(config); - Metadata md = new Metadata(); - tika.parse(configFileUrl.openStream(), md); - Assert.assertEquals(TEST_PARAM_VAL, md.get(TEST_PARAM)); - //assert that param from configuration file is read, given to parser and it copied to metadata - } - - @Test - @Ignore - public void testConfigurableParserTypes() throws Exception { - URL configFileUrl = getClass().getClassLoader().getResource(TIKA_CFG_FILE); - assert configFileUrl != null; - TikaConfig config = new TikaConfig(configFileUrl); - Tika tika = new Tika(config); - Metadata md = new Metadata(); - tika.parse(configFileUrl.openStream(), md); - HashMap<String, Class> expct = new HashMap<String, Class>() {{ - put("xint", Integer.class); - put("xfile", File.class); - put("xlong", Long.class); - put("xshort", Short.class); - put("xfloat", Float.class); - put("xdouble", Double.class); - put("xbigint", BigInteger.class); - put("xurl", URL.class); - put("xuri", URI.class); - put("xbool", Boolean.class); - }}; - - for (Map.Entry<String, Class> entry : expct.entrySet()) { - Assert.assertEquals(entry.getValue().getName(), md.get(entry.getKey()+"-type")); - } - } -} http://git-wip-us.apache.org/repos/asf/tika/blob/f8fe50a2/tika-core/src/test/java/org/apache/tika/parser/DummyConfigurableParser.java ---------------------------------------------------------------------- diff --git a/tika-core/src/test/java/org/apache/tika/parser/DummyConfigurableParser.java b/tika-core/src/test/java/org/apache/tika/parser/DummyConfigurableParser.java deleted file mode 100644 index 15fe060..0000000 --- a/tika-core/src/test/java/org/apache/tika/parser/DummyConfigurableParser.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.tika.parser; - -import org.apache.tika.config.Param; -import org.apache.tika.exception.TikaException; -import org.apache.tika.metadata.Metadata; -import org.apache.tika.mime.MediaType; -import org.xml.sax.ContentHandler; -import org.xml.sax.SAXException; - -import java.io.IOException; -import java.io.InputStream; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -/** - * - * This Parser is created to test runtime configuration to parser. - * This parser simply copies parameters to metadata so that a test - * suit can be developed to test that : - * 1. Parameters were parsed from configuration file - * 2. parameters were supplied to parser via configure(ctx) method - * 3. parameters were available at parse - * - */ -public class DummyConfigurableParser { -/* - private static Set<MediaType> MIMES = new HashSet<>(); - static { - MIMES.add(MediaType.TEXT_PLAIN); - MIMES.add(MediaType.TEXT_HTML); - MIMES.add(MediaType.OCTET_STREAM); - } - - @Override - public Set<MediaType> getSupportedTypes(ParseContext context) { - return MIMES; - } - - @Override - public void parse(InputStream stream, ContentHandler handler, - Metadata metadata, ParseContext context) - throws IOException, SAXException, TikaException { - for (Map.Entry<String, Param<?>> entry : getParams().entrySet()) { - Param<?> param = entry.getValue(); - metadata.add(entry.getKey(), param.getValue().toString()); - metadata.add(entry.getKey()+"-type", param.getValue().getClass().getName()); - } - } -*/ -} http://git-wip-us.apache.org/repos/asf/tika/blob/f8fe50a2/tika-core/src/test/java/org/apache/tika/parser/DummyInitializableParser.java ---------------------------------------------------------------------- diff --git a/tika-core/src/test/java/org/apache/tika/parser/DummyInitializableParser.java b/tika-core/src/test/java/org/apache/tika/parser/DummyInitializableParser.java index 4bb8668..6365af2 100644 --- a/tika-core/src/test/java/org/apache/tika/parser/DummyInitializableParser.java +++ b/tika-core/src/test/java/org/apache/tika/parser/DummyInitializableParser.java @@ -19,6 +19,7 @@ package org.apache.tika.parser; import org.apache.tika.config.Field; import org.apache.tika.config.Initializable; +import org.apache.tika.config.Param; import org.apache.tika.exception.TikaConfigException; import org.apache.tika.exception.TikaException; import org.apache.tika.metadata.Metadata; @@ -29,6 +30,7 @@ import org.xml.sax.SAXException; import java.io.IOException; import java.io.InputStream; import java.util.HashSet; +import java.util.Map; import java.util.Set; /** @@ -58,7 +60,9 @@ public class DummyInitializableParser extends AbstractParser implements Initiali } @Override - public void initialize() throws TikaConfigException { + public void initialize(Map<String, Param> params) throws TikaConfigException { + shortA = (Short)params.get("shortA").getValue(); + shortB = (Short)params.get("shortB").getValue(); sum = shortA+shortB; } } http://git-wip-us.apache.org/repos/asf/tika/blob/f8fe50a2/tika-core/src/test/java/org/apache/tika/utils/AnnotationUtilsTest.java ---------------------------------------------------------------------- diff --git a/tika-core/src/test/java/org/apache/tika/utils/AnnotationUtilsTest.java b/tika-core/src/test/java/org/apache/tika/utils/AnnotationUtilsTest.java index eaa3549..6844429 100644 --- a/tika-core/src/test/java/org/apache/tika/utils/AnnotationUtilsTest.java +++ b/tika-core/src/test/java/org/apache/tika/utils/AnnotationUtilsTest.java @@ -40,7 +40,7 @@ public class AnnotationUtilsTest { @Field(required = true) int config; } - Map<String, Param<?>> params = new HashMap<>(); + Map<String, Param> params = new HashMap<>(); try { params.put("config", new Param<>("config", 1)); @@ -70,7 +70,7 @@ public class AnnotationUtilsTest { @Field(required = true, name = "config") Integer config2; } - Map<String, Param<?>> params = new HashMap<>(); + Map<String, Param> params = new HashMap<>(); try { MyParser bean = new MyParser(); int val = 100; @@ -92,7 +92,7 @@ public class AnnotationUtilsTest { @Field(required = true) String config; } - Map<String, Param<?>> params = new HashMap<>(); + Map<String, Param> params = new HashMap<>(); String someval = "someval"; params.put("config", new Param<>("config", someval)); try { @@ -129,7 +129,7 @@ public class AnnotationUtilsTest { } int val = 1; - Map<String, Param<?>> params = new HashMap<>(); + Map<String, Param> params = new HashMap<>(); params.put("overridden", new Param<>("oevrriden", val)); params.put("parentField", new Param<>("parentField", val)); params.put("childField", new Param<>("childField", val)); @@ -164,7 +164,7 @@ public class AnnotationUtilsTest { } Bean parser = new Bean(); - Map<String, Param<?>> params = new HashMap<>(); + Map<String, Param> params = new HashMap<>(); try { String val = "someval"; params.put("field", new Param<String>("field", String.class, val));
