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/12/03 18:09:39 UTC

[tika] branch branch_1x updated: TIKA-2992 -- ensure opcode matches asm version in XHTMLClassVisitor

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


The following commit(s) were added to refs/heads/branch_1x by this push:
     new 887b27a  TIKA-2992 -- ensure opcode matches asm version in XHTMLClassVisitor
887b27a is described below

commit 887b27a5ca2f1c98c2c5ae8422b96aa0f39fdb75
Author: tballison <ta...@apache.org>
AuthorDate: Tue Dec 3 12:56:17 2019 -0500

    TIKA-2992 -- ensure opcode matches asm version in XHTMLClassVisitor
    
    # Conflicts:
    #	CHANGES.txt
---
 CHANGES.txt                                            |   6 +++++-
 tika-parsers/pom.xml                                   |   4 ++++
 .../org/apache/tika/parser/asm/XHTMLClassVisitor.java  |   2 +-
 .../org/apache/tika/parser/asm/ClassParserTest.java    |  17 +++++++++++------
 .../test-documents/AppleSingleFileParser.class         | Bin 0 -> 7601 bytes
 5 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/CHANGES.txt b/CHANGES.txt
index 67dda93..ad36ac1 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,7 @@
+Release 1.24 - ???
+
+   * Fix bug in ASM parser configuration (TIKA-2992).
+
 Release 1.23 - 12/02/2019
 
    * NOTE: The PDFParser now relies on OCRDPI to render page images when
@@ -26,7 +30,7 @@ Release 1.23 - 12/02/2019
 
    * Add an XLZ Parser (TIKA-2976).
    
-   * Fix deadlock with ForkParser when InputStream throws IOException (TIKA-2892)
+   * Fix deadlock with ForkParser when InputStream throws IOException (TIKA-2892).
 
 Release 1.22 - 07/29/2019
 
diff --git a/tika-parsers/pom.xml b/tika-parsers/pom.xml
index 0424efc..2c4b046 100644
--- a/tika-parsers/pom.xml
+++ b/tika-parsers/pom.xml
@@ -299,6 +299,10 @@
       <artifactId>tagsoup</artifactId>
       <version>1.2.1</version>
     </dependency>
+    <!-- WARNING: when you upgrade asm make sure that you update the
+      OpCode in the initializer in org.apache.tika.parser.asm.XHTMLClassVisitor
+      See TIKA-2992.
+    -->
     <dependency>
       <groupId>org.ow2.asm</groupId>
       <artifactId>asm</artifactId>
diff --git a/tika-parsers/src/main/java/org/apache/tika/parser/asm/XHTMLClassVisitor.java b/tika-parsers/src/main/java/org/apache/tika/parser/asm/XHTMLClassVisitor.java
index c8ea317..450e5e5 100644
--- a/tika-parsers/src/main/java/org/apache/tika/parser/asm/XHTMLClassVisitor.java
+++ b/tika-parsers/src/main/java/org/apache/tika/parser/asm/XHTMLClassVisitor.java
@@ -49,7 +49,7 @@ class XHTMLClassVisitor extends ClassVisitor {
     private String packageName;
 
     public XHTMLClassVisitor(ContentHandler handler, Metadata metadata) {
-        super(Opcodes.ASM5);
+        super(Opcodes.ASM7);
         this.xhtml = new XHTMLContentHandler(handler, metadata);
         this.metadata = metadata;
     }
diff --git a/tika-parsers/src/test/java/org/apache/tika/parser/asm/ClassParserTest.java b/tika-parsers/src/test/java/org/apache/tika/parser/asm/ClassParserTest.java
index 3a8a66c..b184318 100644
--- a/tika-parsers/src/test/java/org/apache/tika/parser/asm/ClassParserTest.java
+++ b/tika-parsers/src/test/java/org/apache/tika/parser/asm/ClassParserTest.java
@@ -18,7 +18,7 @@ package org.apache.tika.parser.asm;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
-import org.apache.tika.Tika;
+import org.apache.tika.TikaTest;
 import org.apache.tika.metadata.Metadata;
 import org.apache.tika.metadata.TikaCoreProperties;
 import org.junit.Test;
@@ -26,15 +26,12 @@ import org.junit.Test;
 /**
  * Test case for parsing Java class files.
  */
-public class ClassParserTest {
+public class ClassParserTest extends TikaTest {
 
     @Test
     public void testClassParsing() throws Exception {
-        String path = "/test-documents/AutoDetectParser.class";
         Metadata metadata = new Metadata();
-        String content = new Tika().parseToString(
-                ClassParserTest.class.getResourceAsStream(path), metadata);
-
+        String content = getText("AutoDetectParser.class", metadata);
         assertEquals("AutoDetectParser", metadata.get(TikaCoreProperties.TITLE));
         assertEquals(
                 "AutoDetectParser.class",
@@ -56,4 +53,12 @@ public class ClassParserTest {
                 + " throws java.io.IOException;"));
     }
 
+    @Test
+    public void testJava11() throws Exception {
+        //Make sure that this java 11 target .class
+        //file doesn't throw an exception
+        //TIKA-2992
+        XMLResult xmlResult = getXML("AppleSingleFileParser.class");
+        assertContains("<title>AppleSingleFileParser</title>", xmlResult.xml);
+    }
 }
diff --git a/tika-parsers/src/test/resources/test-documents/AppleSingleFileParser.class b/tika-parsers/src/test/resources/test-documents/AppleSingleFileParser.class
new file mode 100644
index 0000000..1b402d9
Binary files /dev/null and b/tika-parsers/src/test/resources/test-documents/AppleSingleFileParser.class differ