mirror of https://github.com/apache/poi.git
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
This commit is contained in:
parent
6449c03a53
commit
caf2d32393
|
@ -228,8 +228,8 @@ public class XWPFStyles extends POIXMLDocumentPart {
|
||||||
String nextStyleID = style.getNextStyleID();
|
String nextStyleID = style.getNextStyleID();
|
||||||
XWPFStyle nextStyle = getStyle(nextStyleID);
|
XWPFStyle nextStyle = getStyle(nextStyleID);
|
||||||
if ((nextStyle != null) && (!usedStyleList.contains(nextStyle))) {
|
if ((nextStyle != null) && (!usedStyleList.contains(nextStyle))) {
|
||||||
usedStyleList.add(linkStyle);
|
usedStyleList.add(nextStyle);
|
||||||
getUsedStyleList(linkStyle, usedStyleList);
|
getUsedStyleList(nextStyle, usedStyleList);
|
||||||
}
|
}
|
||||||
return usedStyleList;
|
return usedStyleList;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.assertFalse;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
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 static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.poi.util.Units;
|
import org.apache.poi.util.Units;
|
||||||
import org.apache.poi.xwpf.XWPFTestDataSamples;
|
import org.apache.poi.xwpf.XWPFTestDataSamples;
|
||||||
|
@ -230,4 +232,33 @@ class TestXWPFBugs {
|
||||||
|
|
||||||
documentNumbering.addNum(abstractNumID);
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -170,7 +170,7 @@ public final class TestXWPFStyles {
|
||||||
assertNull(r.getColor());
|
assertNull(r.getColor());
|
||||||
assertNull(r.getFontFamily());
|
assertNull(r.getFontFamily());
|
||||||
assertNull(r.getFontName());
|
assertNull(r.getFontName());
|
||||||
assertEquals(-1, r.getFontSize());
|
assertNull(r.getFontSizeAsDouble());
|
||||||
}
|
}
|
||||||
|
|
||||||
// On page two, has explicit styles, but on runs not on
|
// 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);
|
XWPFRun r = p.getRuns().get(0);
|
||||||
assertEquals("Arial Black", r.getFontFamily());
|
assertEquals("Arial Black", r.getFontFamily());
|
||||||
assertEquals("Arial Black", r.getFontName());
|
assertEquals("Arial Black", r.getFontName());
|
||||||
assertEquals(16, r.getFontSize());
|
assertEquals(16.0, r.getFontSizeAsDouble(), 0.01);
|
||||||
assertEquals("548DD4", r.getColor());
|
assertEquals("548DD4", r.getColor());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,7 +203,7 @@ public final class TestXWPFStyles {
|
||||||
assertNotNull(styles.getDefaultRunStyle());
|
assertNotNull(styles.getDefaultRunStyle());
|
||||||
assertNotNull(styles.getDefaultParagraphStyle());
|
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(11.0, styles.getDefaultRunStyle().getFontSizeAsDouble(), 0.01);
|
||||||
assertEquals(200, styles.getDefaultParagraphStyle().getSpacingAfter());
|
assertEquals(200, styles.getDefaultParagraphStyle().getSpacingAfter());
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue