From 8f04bf295e6cc71d94e72cf9c16d8f1a22d254dd Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Fri, 16 May 2014 07:09:55 +0000 Subject: [PATCH] Fix Bug 56514, add missing null-check if simple shape does not have any text git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1595127 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/XSSFSimpleShape.java | 29 +++------------- .../poi/xssf/usermodel/TestXSSFDrawing.java | 31 ++++++++++++++++-- test-data/spreadsheet/56514.xlsx | Bin 0 -> 10525 bytes 3 files changed, 33 insertions(+), 27 deletions(-) create mode 100644 test-data/spreadsheet/56514.xlsx diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSimpleShape.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSimpleShape.java index 44fc91bbf..7ce8c4e0d 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSimpleShape.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSimpleShape.java @@ -25,28 +25,7 @@ import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.VerticalAlignment; import org.apache.poi.util.Internal; import org.apache.poi.util.Units; -import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps; -import org.openxmlformats.schemas.drawingml.x2006.main.CTPoint2D; -import org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D; -import org.openxmlformats.schemas.drawingml.x2006.main.CTPresetGeometry2D; -import org.openxmlformats.schemas.drawingml.x2006.main.CTRegularTextRun; -import org.openxmlformats.schemas.drawingml.x2006.main.CTSRgbColor; -import org.openxmlformats.schemas.drawingml.x2006.main.CTShapeProperties; -import org.openxmlformats.schemas.drawingml.x2006.main.CTSolidColorFillProperties; -import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBody; -import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBodyProperties; -import org.openxmlformats.schemas.drawingml.x2006.main.CTTextCharacterProperties; -import org.openxmlformats.schemas.drawingml.x2006.main.CTTextFont; -import org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraph; -import org.openxmlformats.schemas.drawingml.x2006.main.CTTransform2D; -import org.openxmlformats.schemas.drawingml.x2006.main.STShapeType; -import org.openxmlformats.schemas.drawingml.x2006.main.STTextAlignType; -import org.openxmlformats.schemas.drawingml.x2006.main.STTextAnchoringType; -import org.openxmlformats.schemas.drawingml.x2006.main.STTextHorzOverflowType; -import org.openxmlformats.schemas.drawingml.x2006.main.STTextUnderlineType; -import org.openxmlformats.schemas.drawingml.x2006.main.STTextVertOverflowType; -import org.openxmlformats.schemas.drawingml.x2006.main.STTextVerticalType; -import org.openxmlformats.schemas.drawingml.x2006.main.STTextWrappingType; +import org.openxmlformats.schemas.drawingml.x2006.main.*; import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTShape; import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTShapeNonVisual; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRElt; @@ -81,8 +60,10 @@ public class XSSFSimpleShape extends XSSFShape implements Iterable shapes = drawing.getShapes(); + assertEquals(4, shapes.size()); + + wb = XSSFTestDataSamples.writeOutAndReadBack(wb); + + shapes = drawing.getShapes(); + assertEquals(4, shapes.size()); + +/* OutputStream stream = new FileOutputStream(new File("C:\\temp\\56514.xlsx")); + try { + wb.write(stream); + } finally { + stream.close(); + }*/ + } } diff --git a/test-data/spreadsheet/56514.xlsx b/test-data/spreadsheet/56514.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..29163a5febe535294233460d2d78844998387ecb GIT binary patch literal 10525 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 literal 0 HcmV?d00001