You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2020/05/16 13:05:54 UTC

svn commit: r1877814 - in /poi/trunk: src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java test-data/spreadsheet/64420.xlsm

Author: centic
Date: Sat May 16 13:05:53 2020
New Revision: 1877814

URL: http://svn.apache.org/viewvc?rev=1877814&view=rev
Log:
Fix bug 64420: NPE in XSSFReader for files with macro-sheets

Added:
    poi/trunk/test-data/spreadsheet/64420.xlsm
Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java?rev=1877814&r1=1877813&r2=1877814&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java Sat May 16 13:05:53 2020
@@ -69,10 +69,9 @@ public class XSSFReader {
 
     private static final Set<String> WORKSHEET_RELS =
             Collections.unmodifiableSet(new HashSet<>(
-                    Arrays.asList(new String[]{
-                            XSSFRelation.WORKSHEET.getRelation(),
+                    Arrays.asList(XSSFRelation.WORKSHEET.getRelation(),
                             XSSFRelation.CHARTSHEET.getRelation(),
-                    })
+                            XSSFRelation.MACRO_SHEET_BIN.getRelation())
             ));
     private static final POILogger LOGGER = POILogFactory.getLogger(XSSFReader.class);
 

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java?rev=1877814&r1=1877813&r2=1877814&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestXSSFReader.java Sat May 16 13:05:53 2020
@@ -19,13 +19,18 @@ package org.apache.poi.xssf.eventusermod
 
 import static org.apache.poi.POITestCase.assertContains;
 import static org.apache.poi.POITestCase.assertNotContained;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import java.io.InputStream;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
-import java.util.HashSet;
 
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.ooxml.POIXMLException;
@@ -36,7 +41,6 @@ import org.apache.poi.util.IOUtils;
 import org.apache.poi.xssf.XSSFTestDataSamples;
 import org.apache.poi.xssf.model.CommentsTable;
 import org.apache.poi.xssf.model.StylesTable;
-import org.apache.poi.xssf.usermodel.XSSFRichTextString;
 import org.apache.poi.xssf.usermodel.XSSFShape;
 import org.apache.poi.xssf.usermodel.XSSFSimpleShape;
 import org.junit.Ignore;
@@ -88,8 +92,8 @@ public final class TestXSSFReader {
 
             XSSFReader r = new XSSFReader(pkg);
 
-            assertEquals(11, r.getSharedStringsTable().getItems().size());
-            assertEquals("Test spreadsheet", new XSSFRichTextString(r.getSharedStringsTable().getEntryAt(0)).toString());
+            assertEquals(11, r.getSharedStringsTable().getSharedStringItems().size());
+            assertEquals("Test spreadsheet", r.getSharedStringsTable().getItemAt(0).toString());
         }
 	}
 
@@ -173,7 +177,7 @@ public final class TestXSSFReader {
           assertEquals(3, count);
       }
 	}
-   
+
    /**
     * Iterating over a workbook with chart sheets in it, using the
     *  XSSFReader method
@@ -293,7 +297,7 @@ public final class TestXSSFReader {
      * bug 61304: Call to XSSFReader.getSheetsData() returns duplicate sheets.
      *
      * The problem seems to be caused only by those xlsx files which have a specific
-     * order of the attributes inside the &lt;sheet&gt; tag of workbook.xml 
+     * order of the attributes inside the &lt;sheet&gt; tag of workbook.xml
      *
      * Example (which causes the problems):
      * &lt;sheet name="Sheet6" r:id="rId6" sheetId="4"/&gt;
@@ -325,4 +329,21 @@ public final class TestXSSFReader {
             System.out.println("workbook.getName(\"total\").getSheetName() returned: " + name.getSheetName());
         }
     }
+
+    @Test
+    public void test64420() throws Exception {
+        try (OPCPackage pkg = OPCPackage.open(_ssTests.openResourceAsStream("64420.xlsm"))) {
+            XSSFReader reader = new XSSFReader(pkg);
+
+            Iterator<InputStream> iter = reader.getSheetsData();
+            byte[] data = new byte[4096];
+            while (iter.hasNext()) {
+                InputStream stream = iter.next();
+                assertNotNull(stream);
+                int read = IOUtils.readFully(stream, data);
+                assertTrue(read > 0);
+                stream.close();
+            }
+        }
+    }
 }

Added: poi/trunk/test-data/spreadsheet/64420.xlsm
URL: http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/64420.xlsm?rev=1877814&view=auto
==============================================================================
Binary files poi/trunk/test-data/spreadsheet/64420.xlsm (added) and poi/trunk/test-data/spreadsheet/64420.xlsm Sat May 16 13:05:53 2020 differ



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org