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));

Reply via email to