Browse Source

Bug 65099: Fix incorrect handling of styles in XWPFStyle.getUsedStyleList

Closes github #216

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1886063 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_5_1_0
Dominik Stadler 3 years ago
parent
commit
caf2d32393

+ 2
- 2
src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java View File

@@ -228,8 +228,8 @@ public class XWPFStyles extends POIXMLDocumentPart {
String nextStyleID = style.getNextStyleID();
XWPFStyle nextStyle = getStyle(nextStyleID);
if ((nextStyle != null) && (!usedStyleList.contains(nextStyle))) {
usedStyleList.add(linkStyle);
getUsedStyleList(linkStyle, usedStyleList);
usedStyleList.add(nextStyle);
getUsedStyleList(nextStyle, usedStyleList);
}
return usedStyleList;
}

+ 31
- 0
src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java View File

@@ -20,12 +20,14 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.util.List;

import org.apache.poi.util.Units;
import org.apache.poi.xwpf.XWPFTestDataSamples;
@@ -230,4 +232,33 @@ class TestXWPFBugs {

documentNumbering.addNum(abstractNumID);
}

@Test
public void test65099() throws IOException {
try (XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("65099.docx")) {
XWPFStyles styles = doc.getStyles();
assertNotNull(styles);

XWPFStyle normal = styles.getStyle("Normal");
assertNotNull(normal);

XWPFStyle style1 = styles.getStyle("EdfTitre3Car");
assertNotNull(style1);

List<XWPFStyle> list = styles.getUsedStyleList(normal);
assertNotNull(list);
assertEquals(1, list.size());

list = styles.getUsedStyleList(style1);
assertNotNull(list);
assertEquals(7, list.size());

assertThrows(NullPointerException.class,
() -> styles.getUsedStyleList(null),
"Pasisng in 'null' triggers an exception");

XWPFStyle style = doc.getStyles().getStyle("TableauGrille41");
doc.getStyles().getUsedStyleList(style);
}
}
}

+ 3
- 3
src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java View File

@@ -170,7 +170,7 @@ public final class TestXWPFStyles {
assertNull(r.getColor());
assertNull(r.getFontFamily());
assertNull(r.getFontName());
assertEquals(-1, r.getFontSize());
assertNull(r.getFontSizeAsDouble());
}

// On page two, has explicit styles, but on runs not on
@@ -184,7 +184,7 @@ public final class TestXWPFStyles {
XWPFRun r = p.getRuns().get(0);
assertEquals("Arial Black", r.getFontFamily());
assertEquals("Arial Black", r.getFontName());
assertEquals(16, r.getFontSize());
assertEquals(16.0, r.getFontSizeAsDouble(), 0.01);
assertEquals("548DD4", r.getColor());
}

@@ -203,7 +203,7 @@ public final class TestXWPFStyles {
assertNotNull(styles.getDefaultRunStyle());
assertNotNull(styles.getDefaultParagraphStyle());

assertEquals(11, styles.getDefaultRunStyle().getFontSize());
assertEquals(11.0, styles.getDefaultRunStyle().getFontSizeAsDouble(), 0.01);
assertEquals(11.0, styles.getDefaultRunStyle().getFontSizeAsDouble(), 0.01);
assertEquals(200, styles.getDefaultParagraphStyle().getSpacingAfter());
}

BIN
test-data/document/65099.docx View File


Loading…
Cancel
Save