Author: centic
Date: Thu Apr 6 21:49:53 2017
New Revision: 1790472
URL: http://svn.apache.org/viewvc?rev=1790472&view=rev
Log:
Fix issue found via large corpus tests: HSSFPicture in a HSSFShapeGroup might
not have a patriarch set, so let's walk up the parents to try to find one.
Added:
poi/trunk/test-data/spreadsheet/angelo.edu_content_files_19555-nsse-2011-multiyear-benchmark.xls
Modified:
poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java
poi/trunk/src/ooxml/testcases/org/apache/poi/ss/extractor/TestEmbeddedExtractor.java
Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java?rev=1790472&r1=1790471&r2=1790472&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPicture.java Thu Apr
6 21:49:53 2017
@@ -204,7 +204,17 @@ public class HSSFPicture extends HSSFSim
* @return picture data for this shape
*/
public HSSFPictureData getPictureData(){
- InternalWorkbook iwb =
getPatriarch().getSheet().getWorkbook().getWorkbook();
+ HSSFPatriarch patriarch = getPatriarch();
+ HSSFShape parent = getParent();
+ while(patriarch == null && parent != null) {
+ patriarch = parent.getPatriarch();
+ parent = parent.getParent();
+ }
+ if(patriarch == null) {
+ throw new IllegalStateException("Could not find a patriarch for a
HSSPicture");
+ }
+
+ InternalWorkbook iwb =
patriarch.getSheet().getWorkbook().getWorkbook();
EscherBSERecord bse = iwb.getBSERecord(getPictureIndex());
EscherBlipRecord blipRecord = bse.getBlipRecord();
return new HSSFPictureData(blipRecord);
Modified:
poi/trunk/src/ooxml/testcases/org/apache/poi/ss/extractor/TestEmbeddedExtractor.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/ss/extractor/TestEmbeddedExtractor.java?rev=1790472&r1=1790471&r2=1790472&view=diff
==============================================================================
---
poi/trunk/src/ooxml/testcases/org/apache/poi/ss/extractor/TestEmbeddedExtractor.java
(original)
+++
poi/trunk/src/ooxml/testcases/org/apache/poi/ss/extractor/TestEmbeddedExtractor.java
Thu Apr 6 21:49:53 2017
@@ -18,6 +18,7 @@
package org.apache.poi.ss.extractor;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
import java.io.IOException;
import java.io.InputStream;
@@ -30,6 +31,8 @@ import javax.xml.bind.DatatypeConverter;
import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.POIDataSamples;
+import org.apache.poi.hssf.HSSFTestDataSamples;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
@@ -112,4 +115,20 @@ public class TestEmbeddedExtractor {
throw new RuntimeException(e);
}
}
+
+
+ @Test
+ public void testNPE() throws IOException {
+ HSSFWorkbook wb =
HSSFTestDataSamples.openSampleWorkbook("angelo.edu_content_files_19555-nsse-2011-multiyear-benchmark.xls");
+ EmbeddedExtractor ee = new EmbeddedExtractor();
+
+ for (Sheet s : wb) {
+ for (EmbeddedData ed : ee.extractAll(s)) {
+ assertNotNull(ed.getFilename());
+ assertNotNull(ed.getEmbeddedData());
+ assertNotNull(ed.getShape());
+ }
+ }
+
+ }
}
Added:
poi/trunk/test-data/spreadsheet/angelo.edu_content_files_19555-nsse-2011-multiyear-benchmark.xls
URL:
http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/angelo.edu_content_files_19555-nsse-2011-multiyear-benchmark.xls?rev=1790472&view=auto
==============================================================================
Binary files
poi/trunk/test-data/spreadsheet/angelo.edu_content_files_19555-nsse-2011-multiyear-benchmark.xls
(added) and
poi/trunk/test-data/spreadsheet/angelo.edu_content_files_19555-nsse-2011-multiyear-benchmark.xls
Thu Apr 6 21:49:53 2017 differ
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]