aboutsummaryrefslogtreecommitdiffstats
path: root/poi-ooxml
diff options
context:
space:
mode:
authorAndreas Beeker <kiwiwings@apache.org>2021-04-22 22:09:14 +0000
committerAndreas Beeker <kiwiwings@apache.org>2021-04-22 22:09:14 +0000
commit1d594451d8b0ebee8f771aae1b59080e46c982a0 (patch)
treee44fc121fe4f94e04c409bcec032cb4199331abf /poi-ooxml
parent48d3c6827086c2d0209852c08be37ef502fb4b0d (diff)
downloadpoi-1d594451d8b0ebee8f771aae1b59080e46c982a0.tar.gz
poi-1d594451d8b0ebee8f771aae1b59080e46c982a0.zip
#65228 - the method getCap() does not work correctly in xslf.usermodel.XSLFTextRun
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1889111 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'poi-ooxml')
-rw-r--r--poi-ooxml/src/main/java/org/apache/poi/xslf/model/CharacterPropertyFetcher.java10
-rw-r--r--poi-ooxml/src/test/java/org/apache/poi/xslf/TestXSLFBugs.java34
2 files changed, 25 insertions, 19 deletions
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xslf/model/CharacterPropertyFetcher.java b/poi-ooxml/src/main/java/org/apache/poi/xslf/model/CharacterPropertyFetcher.java
index beb8c5a431..0ad4ef8743 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xslf/model/CharacterPropertyFetcher.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xslf/model/CharacterPropertyFetcher.java
@@ -65,6 +65,7 @@ public final class CharacterPropertyFetcher<T> extends PropertyFetcher<T> {
if (!(sheet instanceof XSLFSlideMaster)) {
fetchRunProp();
+ fetchParagraphDefaultRunProp();
fetchShapeProp(shape);
fetchThemeProp(shape);
}
@@ -78,6 +79,15 @@ public final class CharacterPropertyFetcher<T> extends PropertyFetcher<T> {
fetchProp(run.getRPr(false));
}
+ private void fetchParagraphDefaultRunProp() {
+ if (!isSet()) {
+ CTTextParagraphProperties pr = run.getParagraph().getXmlObject().getPPr();
+ if (pr != null) {
+ fetchProp(pr.getDefRPr());
+ }
+ }
+ }
+
private void fetchShapeProp(XSLFShape shape) {
if (!isSet()) {
shape.fetchShapeProperty(this);
diff --git a/poi-ooxml/src/test/java/org/apache/poi/xslf/TestXSLFBugs.java b/poi-ooxml/src/test/java/org/apache/poi/xslf/TestXSLFBugs.java
index acbf365046..08250192ac 100644
--- a/poi-ooxml/src/test/java/org/apache/poi/xslf/TestXSLFBugs.java
+++ b/poi-ooxml/src/test/java/org/apache/poi/xslf/TestXSLFBugs.java
@@ -77,25 +77,7 @@ import org.apache.poi.sl.usermodel.TextShape;
import org.apache.poi.sl.usermodel.VerticalAlignment;
import org.apache.poi.util.IOUtils;
import org.apache.poi.util.NullPrintStream;
-import org.apache.poi.xslf.usermodel.XMLSlideShow;
-import org.apache.poi.xslf.usermodel.XSLFAutoShape;
-import org.apache.poi.xslf.usermodel.XSLFGroupShape;
-import org.apache.poi.xslf.usermodel.XSLFHyperlink;
-import org.apache.poi.xslf.usermodel.XSLFNotes;
-import org.apache.poi.xslf.usermodel.XSLFObjectShape;
-import org.apache.poi.xslf.usermodel.XSLFPictureData;
-import org.apache.poi.xslf.usermodel.XSLFPictureShape;
-import org.apache.poi.xslf.usermodel.XSLFRelation;
-import org.apache.poi.xslf.usermodel.XSLFShape;
-import org.apache.poi.xslf.usermodel.XSLFSlide;
-import org.apache.poi.xslf.usermodel.XSLFSlideLayout;
-import org.apache.poi.xslf.usermodel.XSLFSlideMaster;
-import org.apache.poi.xslf.usermodel.XSLFTable;
-import org.apache.poi.xslf.usermodel.XSLFTableCell;
-import org.apache.poi.xslf.usermodel.XSLFTableRow;
-import org.apache.poi.xslf.usermodel.XSLFTextBox;
-import org.apache.poi.xslf.usermodel.XSLFTextParagraph;
-import org.apache.poi.xslf.usermodel.XSLFTextRun;
+import org.apache.poi.xslf.usermodel.*;
import org.apache.poi.xslf.util.DummyGraphics2d;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
@@ -1080,4 +1062,18 @@ class TestXSLFBugs {
}
}
+ @Test
+ public void bug65228() throws IOException {
+ try (XMLSlideShow ppt = openSampleDocument("bug65228.pptx")) {
+ TextRun.TextCap act = ppt.getSlides().stream()
+ .flatMap(s -> s.getShapes().stream())
+ .filter(s -> "März 2021\u2026".equals(s.getShapeName()))
+ .map(XSLFTextShape.class::cast)
+ .flatMap(s -> s.getTextParagraphs().stream())
+ .flatMap(s -> s.getTextRuns().stream())
+ .map(XSLFTextRun::getTextCap)
+ .findFirst().orElse(null);
+ assertEquals(TextRun.TextCap.ALL, act);
+ }
+ }
}