Author: abearez Date: Wed May 27 01:18:15 2020 New Revision: 1878147 URL: http://svn.apache.org/viewvc?rev=1878147&view=rev Log: Bug 63290: retrieve default run properties from paragraph
Added: poi/trunk/test-data/slideshow/bug63290.pptx Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextRun.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextRun.java poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/text/TestXDDFTextRun.java poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextRun.java Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextRun.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextRun.java?rev=1878147&r1=1878146&r2=1878147&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextRun.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/text/XDDFTextRun.java Wed May 27 01:18:15 2020 @@ -612,7 +612,8 @@ public class XDDFTextRun { } else if (isRegularRun() && _rtr.isSetRPr()) { return _rtr.getRPr(); } - return null; + XDDFRunProperties defaultProperties = _parent.getDefaultRunProperties(); + return (defaultProperties == null) ? null : defaultProperties.getXmlObject(); } private XDDFRunProperties getOrCreateProperties() { Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextRun.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextRun.java?rev=1878147&r1=1878146&r2=1878147&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextRun.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextRun.java Wed May 27 01:18:15 2020 @@ -492,6 +492,9 @@ public class XSLFTextRun implements Text return tr.addNewRPr(); } } + if (_p.getXmlObject().isSetPPr() && _p.getXmlObject().getPPr().isSetDefRPr()) { + return _p.getXmlObject().getPPr().getDefRPr(); + } return null; } Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/text/TestXDDFTextRun.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/text/TestXDDFTextRun.java?rev=1878147&r1=1878146&r2=1878147&view=diff ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/text/TestXDDFTextRun.java (original) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/text/TestXDDFTextRun.java Wed May 27 01:18:15 2020 @@ -18,16 +18,22 @@ package org.apache.poi.xddf.usermodel.te import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.io.IOException; +import java.io.InputStream; import java.util.List; +import org.apache.poi.POIDataSamples; import org.apache.poi.util.LocaleUtil; import org.apache.poi.xslf.usermodel.XMLSlideShow; +import org.apache.poi.xslf.usermodel.XSLFShape; import org.apache.poi.xslf.usermodel.XSLFSlide; +import org.apache.poi.xslf.usermodel.XSLFTextParagraph; +import org.apache.poi.xslf.usermodel.XSLFTextRun; import org.apache.poi.xslf.usermodel.XSLFTextShape; import org.apache.poi.xssf.usermodel.XSSFClientAnchor; import org.apache.poi.xssf.usermodel.XSSFDrawing; @@ -133,4 +139,29 @@ public class TestXDDFTextRun { assertNotNull(run.getText()); } } + + @Test + public void testDefaultRunProperties() throws IOException { + // bug #63290 + POIDataSamples pds = POIDataSamples.getSlideShowInstance(); + try (InputStream is = pds.openResourceAsStream("bug63290.pptx"); + XMLSlideShow ppt = new XMLSlideShow(is)) { + XSLFSlide slide = ppt.getSlides().get(0); + for (XSLFShape shape : slide.getShapes()) { + if (shape instanceof XSLFTextShape) { + XSLFTextShape text = (XSLFTextShape) shape; + XDDFTextParagraph paragraph = text.getTextBody().getParagraph(0); + XDDFTextRun defaultRun = paragraph.getTextRuns().get(0); + assertEquals("DefaultRunProperties", defaultRun.getText().trim()); + XDDFTextRun explicitRun = paragraph.getTextRuns().get(1); + assertEquals("ExplicitRunProperties", explicitRun.getText().trim()); + assertEquals(defaultRun.getDirty(), explicitRun.getDirty()); + assertEquals(defaultRun.getFontSize(), explicitRun.getFontSize()); + assertEquals(defaultRun.getLanguage(), explicitRun.getLanguage()); + assertEquals(defaultRun.getSpellError(), explicitRun.getSpellError()); + assertNotEquals(defaultRun.getFontColor(), explicitRun.getFontColor()); + } + } + } + } } Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextRun.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextRun.java?rev=1878147&r1=1878146&r2=1878147&view=diff ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextRun.java (original) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFTextRun.java Wed May 27 01:18:15 2020 @@ -21,11 +21,15 @@ package org.apache.poi.xslf.usermodel; import static org.apache.poi.sl.TestCommonSL.getColor; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertTrue; import java.awt.Color; import java.io.IOException; +import java.io.InputStream; +import org.apache.poi.POIDataSamples; +import org.apache.poi.ooxml.POIXMLDocumentPart; import org.apache.poi.sl.draw.DrawTextParagraph; import org.junit.Test; import org.openxmlformats.schemas.drawingml.x2006.main.CTTextLineBreak; @@ -118,4 +122,27 @@ public class TestXSLFTextRun { r.copy(s); } + + @Test + public void testDefaultRunProperties() throws IOException { + // bug #63290 + POIDataSamples pds = POIDataSamples.getSlideShowInstance(); + try (InputStream is = pds.openResourceAsStream("bug63290.pptx"); + XMLSlideShow ppt = new XMLSlideShow(is)) { + XSLFSlide slide = ppt.getSlides().get(0); + for (XSLFShape shape : slide.getShapes()) { + if (shape instanceof XSLFTextShape) { + XSLFTextShape text = (XSLFTextShape) shape; + XSLFTextParagraph paragraph = text.getTextParagraphs().get(0); + XSLFTextRun defaultRun = paragraph.getTextRuns().get(0); + assertEquals("DefaultRunProperties", defaultRun.getRawText().trim()); + XSLFTextRun explicitRun = paragraph.getTextRuns().get(1); + assertEquals("ExplicitRunProperties", explicitRun.getRawText().trim()); + assertEquals(defaultRun.getFontSize(), explicitRun.getFontSize()); + assertNotEquals(defaultRun.getFontColor(), explicitRun.getFontColor()); + } + } + } + } + } Added: poi/trunk/test-data/slideshow/bug63290.pptx URL: http://svn.apache.org/viewvc/poi/trunk/test-data/slideshow/bug63290.pptx?rev=1878147&view=auto ============================================================================== Binary files poi/trunk/test-data/slideshow/bug63290.pptx (added) and poi/trunk/test-data/slideshow/bug63290.pptx Wed May 27 01:18:15 2020 differ --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org