diff options
author | Dominik Stadler <centic@apache.org> | 2019-03-02 12:28:19 +0000 |
---|---|---|
committer | Dominik Stadler <centic@apache.org> | 2019-03-02 12:28:19 +0000 |
commit | a9b2a8b2bd6e93ba85984be9a2aa8f9ac991c968 (patch) | |
tree | 20d3e5befc91d841ec77c54e09496e845d0c43a9 /src/integrationtest/org/apache/poi | |
parent | 53a30d796e27cf44eff2fdecf173b42e89430f61 (diff) | |
download | poi-a9b2a8b2bd6e93ba85984be9a2aa8f9ac991c968.tar.gz poi-a9b2a8b2bd6e93ba85984be9a2aa8f9ac991c968.zip |
Bug 63200: Avoid NullPointerException in XSLFShape.selectPaint() and check some more in integration tests
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1854639 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/integrationtest/org/apache/poi')
-rw-r--r-- | src/integrationtest/org/apache/poi/stress/SlideShowHandler.java | 80 |
1 files changed, 56 insertions, 24 deletions
diff --git a/src/integrationtest/org/apache/poi/stress/SlideShowHandler.java b/src/integrationtest/org/apache/poi/stress/SlideShowHandler.java index 374afa40af..9c0e7316d0 100644 --- a/src/integrationtest/org/apache/poi/stress/SlideShowHandler.java +++ b/src/integrationtest/org/apache/poi/stress/SlideShowHandler.java @@ -16,8 +16,18 @@ ==================================================================== */ package org.apache.poi.stress; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import org.apache.poi.sl.draw.Drawable; +import org.apache.poi.sl.usermodel.GroupShape; +import org.apache.poi.sl.usermodel.Notes; +import org.apache.poi.sl.usermodel.PictureData; +import org.apache.poi.sl.usermodel.Shape; +import org.apache.poi.sl.usermodel.SimpleShape; +import org.apache.poi.sl.usermodel.Slide; +import org.apache.poi.sl.usermodel.SlideShow; +import org.apache.poi.sl.usermodel.SlideShowFactory; +import org.apache.poi.sl.usermodel.TextParagraph; +import org.apache.poi.sl.usermodel.TextRun; +import org.apache.poi.sl.usermodel.TextShape; import java.awt.Dimension; import java.awt.Graphics2D; @@ -28,16 +38,8 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.lang.ref.WeakReference; -import org.apache.poi.sl.draw.Drawable; -import org.apache.poi.sl.usermodel.PictureData; -import org.apache.poi.sl.usermodel.Shape; -import org.apache.poi.sl.usermodel.ShapeContainer; -import org.apache.poi.sl.usermodel.Slide; -import org.apache.poi.sl.usermodel.SlideShow; -import org.apache.poi.sl.usermodel.SlideShowFactory; -import org.apache.poi.sl.usermodel.TextParagraph; -import org.apache.poi.sl.usermodel.TextRun; -import org.apache.poi.sl.usermodel.TextShape; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; public abstract class SlideShowHandler extends POIFSFileHandler { public void handleSlideShow(SlideShow<?,?> ss) throws IOException { @@ -73,20 +75,50 @@ public abstract class SlideShowHandler extends POIFSFileHandler { private void readContent(SlideShow<?,?> ss) { for (Slide<?,?> s : ss.getSlides()) { s.getTitle(); - readText(s); - readText(s.getNotes()); - readText(s.getMasterSheet()); + + for (Shape<?,?> shape : s) { + readShapes(shape); + } + + Notes<?, ?> notes = s.getNotes(); + if(notes != null) { + for (Shape<?, ?> shape : notes) { + readShapes(shape); + } + } + + for (Shape<?,?> shape : s.getMasterSheet()) { + readShapes(shape); + } } } - - private void readText(ShapeContainer<?,?> sc) { - if (sc == null) return; - for (Shape<?,?> s : sc) { - if (s instanceof TextShape) { - for (TextParagraph<?,?,?> tp : (TextShape<?,?>)s) { - for (TextRun tr : tp) { - tr.getRawText(); - } + + private void readShapes(Shape<?,?> s) { + // recursively walk group-shapes + if(s instanceof GroupShape) { + GroupShape<? extends Shape, ?> shapes = (GroupShape<? extends Shape, ?>) s; + for (Shape<? extends Shape, ?> shape : shapes) { + readShapes(shape); + } + } + + if(s instanceof SimpleShape) { + SimpleShape<?, ?> simpleShape = (SimpleShape<?, ?>) s; + + simpleShape.getFillColor(); + simpleShape.getFillStyle(); + simpleShape.getStrokeStyle(); + simpleShape.getLineDecoration(); + } + + readText(s); + } + + private void readText(Shape<?,?> s) { + if (s instanceof TextShape) { + for (TextParagraph<?,?,?> tp : (TextShape<?,?>)s) { + for (TextRun tr : tp) { + tr.getRawText(); } } } |