You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ta...@apache.org on 2019/11/20 22:45:25 UTC

[tika] branch branch_1x updated (2786625 -> ecf9b95)

This is an automated email from the ASF dual-hosted git repository.

tallison pushed a change to branch branch_1x
in repository https://gitbox.apache.org/repos/asf/tika.git.


    from 2786625  update changes.txt
     new f216d84  TIKA-2979 -- tika-server shouldn't throw an exception for a file format for which there is no parser.
     new afab2a9  TIKA-2993 -- tika-server's /rmeta endpoint shouldn't throw an exception for regular runtime parse exceptions
     new ff93d14  TIKA-2994 -- ExceptionUtils should not extract cause from subclasses of TikaException
     new ecf9b95  git add missing test file :(

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 CHANGES.txt                                        |  3 ++
 .../java/org/apache/tika/utils/ExceptionUtils.java |  2 +-
 .../server/resource/RecursiveMetadataResource.java |  8 +++++-
 .../apache/tika/server/resource/TikaResource.java  | 14 ----------
 .../tika/server/RecursiveMetadataResourceTest.java | 18 ++++++++----
 .../org/apache/tika/server/StackTraceOffTest.java  | 32 +++++++++++++++-------
 .../org/apache/tika/server/StackTraceTest.java     | 31 +++++++++++++++------
 .../apache/tika/server/UnpackerResourceTest.java   |  4 +--
 .../src/test/resources}/testDigilite.fdf           |  0
 9 files changed, 69 insertions(+), 43 deletions(-)
 copy {tika-parsers/src/test/resources/test-documents => tika-server/src/test/resources}/testDigilite.fdf (100%)


[tika] 02/04: TIKA-2993 -- tika-server's /rmeta endpoint shouldn't throw an exception for regular runtime parse exceptions

Posted by ta...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tallison pushed a commit to branch branch_1x
in repository https://gitbox.apache.org/repos/asf/tika.git

View the commit online:
https://github.com/apache/tika/commit/afab2a92f91ada54602b028d30979e048bdfbda2

commit afab2a92f91ada54602b028d30979e048bdfbda2
Author: tallison <ta...@apache.org>
AuthorDate: Wed Nov 20 16:35:45 2019 -0500

    TIKA-2993 -- tika-server's /rmeta endpoint shouldn't throw an exception for regular runtime parse exceptions
    
    # Conflicts:
    #	tika-server/src/test/java/org/apache/tika/server/RecursiveMetadataResourceTest.java
---
 .../server/resource/RecursiveMetadataResource.java     |  8 +++++++-
 .../tika/server/RecursiveMetadataResourceTest.java     | 18 ++++++++++++------
 .../java/org/apache/tika/server/StackTraceOffTest.java |  6 ++++++
 .../java/org/apache/tika/server/StackTraceTest.java    |  6 ++++++
 4 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/tika-server/src/main/java/org/apache/tika/server/resource/RecursiveMetadataResource.java b/tika-server/src/main/java/org/apache/tika/server/resource/RecursiveMetadataResource.java
index 0335026..524759e 100644
--- a/tika-server/src/main/java/org/apache/tika/server/resource/RecursiveMetadataResource.java
+++ b/tika-server/src/main/java/org/apache/tika/server/resource/RecursiveMetadataResource.java
@@ -143,7 +143,13 @@ public class RecursiveMetadataResource {
                 BasicContentHandlerFactory.parseHandlerType(handlerTypeName, DEFAULT_HANDLER_TYPE);
 		RecursiveParserWrapperHandler handler = new RecursiveParserWrapperHandler(
 		        new BasicContentHandlerFactory(type, -1), -1);
-		TikaResource.parse(wrapper, LOG, info.getPath(), is, handler, metadata, context);
+		try {
+            TikaResource.parse(wrapper, LOG, info.getPath(), is, handler, metadata, context);
+        } catch (SecurityException e) {
+		    throw e;
+        } catch (Exception e) {
+		    //swallow it and report it via the metadata list
+        }
 		/*
 		    We used to have this non-functional bit of code...refactor to add it back and make it work?
 						new LanguageHandler() {
diff --git a/tika-server/src/test/java/org/apache/tika/server/RecursiveMetadataResourceTest.java b/tika-server/src/test/java/org/apache/tika/server/RecursiveMetadataResourceTest.java
index 0acd02b..93243da 100644
--- a/tika-server/src/test/java/org/apache/tika/server/RecursiveMetadataResourceTest.java
+++ b/tika-server/src/test/java/org/apache/tika/server/RecursiveMetadataResourceTest.java
@@ -36,9 +36,10 @@ import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
 import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
 import org.apache.tika.metadata.Metadata;
+import org.apache.tika.metadata.TikaCoreProperties;
 import org.apache.tika.metadata.serialization.JsonMetadataList;
-import org.apache.tika.parser.RecursiveParserWrapper;
 import org.apache.tika.sax.AbstractRecursiveParserWrapperHandler;
+import org.apache.tika.sax.RecursiveParserWrapperHandler;
 import org.apache.tika.server.resource.RecursiveMetadataResource;
 import org.apache.tika.server.writer.MetadataListMessageBodyWriter;
 import org.junit.Test;
@@ -97,8 +98,13 @@ public class RecursiveMetadataResourceTest extends CXFTestBase {
                         .getSystemResourceAsStream(TikaResourceTest.TEST_PASSWORD_PROTECTED));
 
         // Won't work, no password given
-        assertEquals(500, response.getStatus());
+        assertEquals(200, response.getStatus());
+        // Check results
+        Reader reader = new InputStreamReader((InputStream) response.getEntity(), UTF_8);
+        List<Metadata> metadataList = JsonMetadataList.fromJson(reader);
 
+        assertNotNull(metadataList.get(0).get(TikaCoreProperties.CREATOR));
+        assertContains("EncryptedDocumentException", metadataList.get(0).get(RecursiveParserWrapperHandler.CONTAINER_EXCEPTION));
         // Try again, this time with the password
         response = WebClient
                 .create(endPoint + META_PATH)
@@ -111,10 +117,10 @@ public class RecursiveMetadataResourceTest extends CXFTestBase {
         assertEquals(200, response.getStatus());
 
         // Check results
-        Reader reader = new InputStreamReader((InputStream) response.getEntity(), UTF_8);
-        List<Metadata> metadataList = JsonMetadataList.fromJson(reader);
-        assertNotNull(metadataList.get(0).get("Author"));
-        assertEquals("pavel", metadataList.get(0).get("Author"));
+        reader = new InputStreamReader((InputStream) response.getEntity(), UTF_8);
+        metadataList = JsonMetadataList.fromJson(reader);
+        assertNotNull(metadataList.get(0).get(TikaCoreProperties.CREATOR));
+        assertEquals("pavel", metadataList.get(0).get(TikaCoreProperties.CREATOR));
     }
 
     @Test
diff --git a/tika-server/src/test/java/org/apache/tika/server/StackTraceOffTest.java b/tika-server/src/test/java/org/apache/tika/server/StackTraceOffTest.java
index 84c7806..5e0bf63 100644
--- a/tika-server/src/test/java/org/apache/tika/server/StackTraceOffTest.java
+++ b/tika-server/src/test/java/org/apache/tika/server/StackTraceOffTest.java
@@ -87,6 +87,9 @@ public class StackTraceOffTest extends CXFTestBase {
     @Test
     public void testEncrypted() throws Exception {
         for (String path : PATHS) {
+            if ("/rmeta".equals(path)) {
+                continue;
+            }
             Response response = WebClient
                     .create(endPoint + path)
                     .accept("*/*")
@@ -104,6 +107,9 @@ public class StackTraceOffTest extends CXFTestBase {
     @Test
     public void testNullPointerOnTika() throws Exception {
         for (String path : PATHS) {
+            if ("/rmeta".equals(path)) {
+                continue;
+            }
             Response response = WebClient
                     .create(endPoint + path)
                     .accept("*/*")
diff --git a/tika-server/src/test/java/org/apache/tika/server/StackTraceTest.java b/tika-server/src/test/java/org/apache/tika/server/StackTraceTest.java
index b284d16..f32d991 100644
--- a/tika-server/src/test/java/org/apache/tika/server/StackTraceTest.java
+++ b/tika-server/src/test/java/org/apache/tika/server/StackTraceTest.java
@@ -81,6 +81,9 @@ public class StackTraceTest extends CXFTestBase {
     @Test
     public void testEncrypted() throws Exception {
         for (String path : PATHS) {
+            if ("/rmeta".equals(path)) {
+                continue;
+            }
             Response response = WebClient
                     .create(endPoint + path)
                     .accept("*/*")
@@ -99,6 +102,9 @@ public class StackTraceTest extends CXFTestBase {
     @Test
     public void testNullPointerOnTika() throws Exception {
         for (String path : PATHS) {
+            if ("/rmeta".equals(path)) {
+                continue;
+            }
             Response response = WebClient
                     .create(endPoint + path)
                     .accept("*/*")


[tika] 03/04: TIKA-2994 -- ExceptionUtils should not extract cause from subclasses of TikaException

Posted by ta...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tallison pushed a commit to branch branch_1x
in repository https://gitbox.apache.org/repos/asf/tika.git

View the commit online:
https://github.com/apache/tika/commit/ff93d145d5e176047b5609233d97a5c78804b795

commit ff93d145d5e176047b5609233d97a5c78804b795
Author: tallison <ta...@apache.org>
AuthorDate: Wed Nov 20 17:16:24 2019 -0500

    TIKA-2994 -- ExceptionUtils should not extract cause
    from subclasses of TikaException
---
 tika-core/src/main/java/org/apache/tika/utils/ExceptionUtils.java       | 2 +-
 .../test/java/org/apache/tika/server/RecursiveMetadataResourceTest.java | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tika-core/src/main/java/org/apache/tika/utils/ExceptionUtils.java b/tika-core/src/main/java/org/apache/tika/utils/ExceptionUtils.java
index 190d977..1b7a0a5 100644
--- a/tika-core/src/main/java/org/apache/tika/utils/ExceptionUtils.java
+++ b/tika-core/src/main/java/org/apache/tika/utils/ExceptionUtils.java
@@ -44,7 +44,7 @@ public class ExceptionUtils {
      */
     public static String getFilteredStackTrace(Throwable t) {
         Throwable cause = t;
-        if ((t instanceof TikaException) &&
+        if ((t.getClass().equals(TikaException.class)) &&
                 t.getCause() != null) {
             cause = t.getCause();
         }
diff --git a/tika-server/src/test/java/org/apache/tika/server/RecursiveMetadataResourceTest.java b/tika-server/src/test/java/org/apache/tika/server/RecursiveMetadataResourceTest.java
index 93243da..38773be 100644
--- a/tika-server/src/test/java/org/apache/tika/server/RecursiveMetadataResourceTest.java
+++ b/tika-server/src/test/java/org/apache/tika/server/RecursiveMetadataResourceTest.java
@@ -104,7 +104,7 @@ public class RecursiveMetadataResourceTest extends CXFTestBase {
         List<Metadata> metadataList = JsonMetadataList.fromJson(reader);
 
         assertNotNull(metadataList.get(0).get(TikaCoreProperties.CREATOR));
-        assertContains("EncryptedDocumentException", metadataList.get(0).get(RecursiveParserWrapperHandler.CONTAINER_EXCEPTION));
+        assertContains("org.apache.tika.exception.EncryptedDocumentException", metadataList.get(0).get(RecursiveParserWrapperHandler.CONTAINER_EXCEPTION));
         // Try again, this time with the password
         response = WebClient
                 .create(endPoint + META_PATH)


[tika] 04/04: git add missing test file :(

Posted by ta...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tallison pushed a commit to branch branch_1x
in repository https://gitbox.apache.org/repos/asf/tika.git

View the commit online:
https://github.com/apache/tika/commit/ecf9b95374af6513411da9dc84c8b0bf4d32be20

commit ecf9b95374af6513411da9dc84c8b0bf4d32be20
Author: tallison <ta...@apache.org>
AuthorDate: Wed Nov 20 17:45:06 2019 -0500

    git add missing test file :(
---
 tika-server/src/test/resources/testDigilite.fdf | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tika-server/src/test/resources/testDigilite.fdf b/tika-server/src/test/resources/testDigilite.fdf
new file mode 100644
index 0000000..64828b4
--- /dev/null
+++ b/tika-server/src/test/resources/testDigilite.fdf
@@ -0,0 +1 @@
+D+
\ No newline at end of file


[tika] 01/04: TIKA-2979 -- tika-server shouldn't throw an exception for a file format for which there is no parser.

Posted by ta...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tallison pushed a commit to branch branch_1x
in repository https://gitbox.apache.org/repos/asf/tika.git

View the commit online:
https://github.com/apache/tika/commit/f216d84a9a6430fe370233a406054d157dc5fedb

commit f216d84a9a6430fe370233a406054d157dc5fedb
Author: tallison <ta...@apache.org>
AuthorDate: Wed Nov 20 14:33:02 2019 -0500

    TIKA-2979 -- tika-server shouldn't throw an exception for
    a file format for which there is no parser.
    
    # Conflicts:
    #	tika-server/src/main/java/org/apache/tika/server/resource/TikaResource.java
---
 CHANGES.txt                                        |  3 +++
 .../apache/tika/server/resource/TikaResource.java  | 14 ------------
 .../org/apache/tika/server/StackTraceOffTest.java  | 26 +++++++++++++---------
 .../org/apache/tika/server/StackTraceTest.java     | 25 +++++++++++++--------
 .../apache/tika/server/UnpackerResourceTest.java   |  4 ++--
 5 files changed, 37 insertions(+), 35 deletions(-)

diff --git a/CHANGES.txt b/CHANGES.txt
index ce27843..906e97d 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -4,6 +4,9 @@ Release 1.23 - ??/??/???
      users configure OCR on rendered page images. This will have the effect
      of increasing rendered image size (TIKA-2624).
 
+   * NOTE: tika-server no longer returns 415 for file types for which there
+     is no parser.
+
    * Upgrade to POI 4.1.1 (TIKA-2851).
 
    * Upgrade to PDFBox 2.0.17 (TIKA-2951).
diff --git a/tika-server/src/main/java/org/apache/tika/server/resource/TikaResource.java b/tika-server/src/main/java/org/apache/tika/server/resource/TikaResource.java
index b0bbdd8..082228e 100644
--- a/tika-server/src/main/java/org/apache/tika/server/resource/TikaResource.java
+++ b/tika-server/src/main/java/org/apache/tika/server/resource/TikaResource.java
@@ -27,7 +27,6 @@ import org.apache.tika.config.TikaConfig;
 import org.apache.tika.detect.Detector;
 import org.apache.tika.exception.EncryptedDocumentException;
 import org.apache.tika.metadata.Metadata;
-import org.apache.tika.metadata.TikaCoreProperties;
 import org.apache.tika.metadata.TikaMetadataKeys;
 import org.apache.tika.mime.MediaType;
 import org.apache.tika.parser.AutoDetectParser;
@@ -117,19 +116,6 @@ public class TikaResource {
     public static Parser createParser() {
         final Parser parser = new AutoDetectParser(tikaConfig);
 
-        Map<MediaType, Parser> parsers = ((AutoDetectParser)parser).getParsers();
-
-        ((AutoDetectParser)parser).setParsers(parsers);
-
-        ((AutoDetectParser)parser).setFallback(new Parser() {
-            public Set<MediaType> getSupportedTypes(ParseContext parseContext) {
-                return parser.getSupportedTypes(parseContext);
-            }
-
-            public void parse(InputStream inputStream, ContentHandler contentHandler, Metadata metadata, ParseContext parseContext) {
-                throw new WebApplicationException(Response.Status.UNSUPPORTED_MEDIA_TYPE);
-            }
-        });
         if (digester != null) {
             return new DigestingParser(parser, digester);
         }
diff --git a/tika-server/src/test/java/org/apache/tika/server/StackTraceOffTest.java b/tika-server/src/test/java/org/apache/tika/server/StackTraceOffTest.java
index d385581..84c7806 100644
--- a/tika-server/src/test/java/org/apache/tika/server/StackTraceOffTest.java
+++ b/tika-server/src/test/java/org/apache/tika/server/StackTraceOffTest.java
@@ -38,6 +38,7 @@ import org.apache.tika.server.resource.TikaResource;
 import org.apache.tika.server.resource.UnpackerResource;
 import org.apache.tika.server.writer.CSVMessageBodyWriter;
 import org.apache.tika.server.writer.JSONMessageBodyWriter;
+import org.apache.tika.server.writer.MetadataListMessageBodyWriter;
 import org.apache.tika.server.writer.TextMessageBodyWriter;
 import org.apache.tika.server.writer.XMPMessageBodyWriter;
 import org.junit.Assert;
@@ -79,6 +80,7 @@ public class StackTraceOffTest extends CXFTestBase {
         providers.add(new CSVMessageBodyWriter());
         providers.add(new XMPMessageBodyWriter());
         providers.add(new TextMessageBodyWriter());
+        providers.add(new MetadataListMessageBodyWriter());
         sf.setProviders(providers);
     }
 
@@ -115,24 +117,28 @@ public class StackTraceOffTest extends CXFTestBase {
     }
 
     @Test
-    public void test415() throws Exception {
+    public void testEmptyParser() throws Exception {
+        //As of Tika 1.23, we're no longer returning 415 for file types
+        //that don't have a parser
         //no stack traces for 415
         for (String path : PATHS) {
+
             Response response = WebClient
                     .create(endPoint + path)
-                    .type("blechdeblah/deblechdeblah")
-                    .accept("*/*")
-                    .put(ClassLoader.getSystemResourceAsStream(TEST_NULL));
-            assertNotNull("null response: " + path, response);
-            assertEquals("bad type: " + path, 415, response.getStatus());
-            String msg = getStringFromInputStream((InputStream) response
-                    .getEntity());
-            assertEquals("should be empty: " + path, "", msg);
+                    .accept("*:*")
+                    .put(ClassLoader.getSystemResourceAsStream("testDigilite.fdf"));
+            if (path.equals("/unpack")) {
+                //"NO CONTENT"
+                assertEquals("bad type: " + path, 204, response.getStatus());
+            } else {
+                assertEquals("bad type: " + path, 200, response.getStatus());
+                assertNotNull("null response: " + path, response);
+            }
         }
     }
 
     //For now, make sure that non-complete document
-    //still returns BAD_REQUEST.  We may want to
+    //still returtestXDP.xdpns BAD_REQUEST.  We may want to
     //make MetadataResource return the same types of parse
     //exceptions as the others...
     @Test
diff --git a/tika-server/src/test/java/org/apache/tika/server/StackTraceTest.java b/tika-server/src/test/java/org/apache/tika/server/StackTraceTest.java
index 24882f7..b284d16 100644
--- a/tika-server/src/test/java/org/apache/tika/server/StackTraceTest.java
+++ b/tika-server/src/test/java/org/apache/tika/server/StackTraceTest.java
@@ -37,6 +37,7 @@ import org.apache.tika.server.resource.TikaResource;
 import org.apache.tika.server.resource.UnpackerResource;
 import org.apache.tika.server.writer.CSVMessageBodyWriter;
 import org.apache.tika.server.writer.JSONMessageBodyWriter;
+import org.apache.tika.server.writer.MetadataListMessageBodyWriter;
 import org.apache.tika.server.writer.TextMessageBodyWriter;
 import org.apache.tika.server.writer.XMPMessageBodyWriter;
 import org.junit.Assert;
@@ -73,6 +74,7 @@ public class StackTraceTest extends CXFTestBase {
         providers.add(new CSVMessageBodyWriter());
         providers.add(new XMPMessageBodyWriter());
         providers.add(new TextMessageBodyWriter());
+        providers.add(new MetadataListMessageBodyWriter());
         sf.setProviders(providers);
     }
 
@@ -111,22 +113,27 @@ public class StackTraceTest extends CXFTestBase {
     }
 
     @Test
-    public void test415() throws Exception {
+    public void testEmptyParser() throws Exception {
+        //As of Tika 1.23, we're no longer returning 415 for file types
+        //that don't have a parser
         //no stack traces for 415
         for (String path : PATHS) {
+
             Response response = WebClient
                     .create(endPoint + path)
-                    .type("blechdeblah/deblechdeblah")
-                    .accept("*/*")
-                    .put(ClassLoader.getSystemResourceAsStream(TEST_NULL));
-            assertNotNull("null response: " + path, response);
-            assertEquals("bad type: " + path, 415, response.getStatus());
-            String msg = getStringFromInputStream((InputStream) response
-                    .getEntity());
-            assertEquals("should be empty: " + path, "", msg);
+                    .accept("*:*")
+                    .put(ClassLoader.getSystemResourceAsStream("testDigilite.fdf"));
+            if (path.equals("/unpack")) {
+                //"NO CONTENT"
+                assertEquals("bad type: " + path, 204, response.getStatus());
+            } else {
+                assertEquals("bad type: " + path, 200, response.getStatus());
+                assertNotNull("null response: " + path, response);
+            }
         }
     }
 
+
     //For now, make sure that non-complete document
     //still returns BAD_REQUEST.  We may want to
     //make MetadataResource return the same types of parse
diff --git a/tika-server/src/test/java/org/apache/tika/server/UnpackerResourceTest.java b/tika-server/src/test/java/org/apache/tika/server/UnpackerResourceTest.java
index 64b8ab9..350257c 100644
--- a/tika-server/src/test/java/org/apache/tika/server/UnpackerResourceTest.java
+++ b/tika-server/src/test/java/org/apache/tika/server/UnpackerResourceTest.java
@@ -141,13 +141,13 @@ public class UnpackerResourceTest extends CXFTestBase {
     }
 
     @Test
-    public void test415() throws Exception {
+    public void test204() throws Exception {
         Response response = WebClient.create(endPoint + UNPACKER_PATH)
                 .type("xxx/xxx")
                 .accept("*/*")
                 .put(ClassLoader.getSystemResourceAsStream(TEST_DOC_WAV));
 
-        assertEquals(415, response.getStatus());
+        assertEquals(204, response.getStatus());
     }
 
     @Test