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 <[email protected]>
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("*/*")

Reply via email to