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("*/*")
