Bug 57254: XWPF: Correctly build internal list of styles when styles are added
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1646742 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
66de3ced8b
commit
68bb54e06a
@ -73,22 +73,18 @@ public class XWPFStyles extends POIXMLDocumentPart{
|
|||||||
* Read document
|
* Read document
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
protected void onDocumentRead() throws IOException{
|
protected void onDocumentRead() throws IOException{
|
||||||
StylesDocument stylesDoc;
|
StylesDocument stylesDoc;
|
||||||
try {
|
try {
|
||||||
InputStream is = getPackagePart().getInputStream();
|
InputStream is = getPackagePart().getInputStream();
|
||||||
stylesDoc = StylesDocument.Factory.parse(is);
|
stylesDoc = StylesDocument.Factory.parse(is);
|
||||||
ctStyles = stylesDoc.getStyles();
|
setStyles(stylesDoc.getStyles());
|
||||||
latentStyles = new XWPFLatentStyles(ctStyles.getLatentStyles(), this);
|
latentStyles = new XWPFLatentStyles(ctStyles.getLatentStyles(), this);
|
||||||
} catch (XmlException e) {
|
} catch (XmlException e) {
|
||||||
throw new POIXMLException("Unable to read styles", e);
|
throw new POIXMLException("Unable to read styles", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build up all the style objects
|
|
||||||
for(CTStyle style : ctStyles.getStyleArray()) {
|
|
||||||
listStyle.add(new XWPFStyle(style, this));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -113,8 +109,14 @@ public class XWPFStyles extends POIXMLDocumentPart{
|
|||||||
* Sets the ctStyles
|
* Sets the ctStyles
|
||||||
* @param styles
|
* @param styles
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
public void setStyles(CTStyles styles) {
|
public void setStyles(CTStyles styles) {
|
||||||
ctStyles = styles;
|
ctStyles = styles;
|
||||||
|
|
||||||
|
// Build up all the style objects
|
||||||
|
for(CTStyle style : ctStyles.getStyleArray()) {
|
||||||
|
listStyle.add(new XWPFStyle(style, this));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -20,17 +20,16 @@ package org.apache.poi.xwpf.usermodel;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.lang.String;
|
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import org.apache.poi.xwpf.XWPFTestDataSamples;
|
import org.apache.poi.xwpf.XWPFTestDataSamples;
|
||||||
|
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLatentStyles;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLatentStyles;
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyle;
|
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STStyleType;
|
|
||||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLsdException;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLsdException;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyle;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyles;
|
||||||
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STStyleType;
|
||||||
|
|
||||||
public class TestXWPFStyles extends TestCase {
|
public class TestXWPFStyles extends TestCase {
|
||||||
|
|
||||||
@ -59,17 +58,19 @@ public class TestXWPFStyles extends TestCase {
|
|||||||
XWPFDocument docOut = new XWPFDocument();
|
XWPFDocument docOut = new XWPFDocument();
|
||||||
XWPFStyles styles = docOut.createStyles();
|
XWPFStyles styles = docOut.createStyles();
|
||||||
|
|
||||||
String strStyleName = "headline1";
|
String strStyleId = "headline1";
|
||||||
CTStyle ctStyle = CTStyle.Factory.newInstance();
|
CTStyle ctStyle = CTStyle.Factory.newInstance();
|
||||||
|
|
||||||
ctStyle.setStyleId(strStyleName);
|
ctStyle.setStyleId(strStyleId);
|
||||||
XWPFStyle s = new XWPFStyle(ctStyle);
|
XWPFStyle s = new XWPFStyle(ctStyle);
|
||||||
styles.addStyle(s);
|
styles.addStyle(s);
|
||||||
|
|
||||||
|
assertTrue(styles.styleExist(strStyleId));
|
||||||
|
|
||||||
XWPFDocument docIn = XWPFTestDataSamples.writeOutAndReadBack(docOut);
|
XWPFDocument docIn = XWPFTestDataSamples.writeOutAndReadBack(docOut);
|
||||||
|
|
||||||
styles = docIn.getStyles();
|
styles = docIn.getStyles();
|
||||||
assertTrue(styles.styleExist(strStyleName));
|
assertTrue(styles.styleExist(strStyleId));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -118,4 +119,23 @@ public class TestXWPFStyles extends TestCase {
|
|||||||
assertEquals(true, ls.isLatentStyle("ex1"));
|
assertEquals(true, ls.isLatentStyle("ex1"));
|
||||||
assertEquals(false, ls.isLatentStyle("notex1"));
|
assertEquals(false, ls.isLatentStyle("notex1"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testSetStyles_Bug57254() throws IOException {
|
||||||
|
XWPFDocument docOut = new XWPFDocument();
|
||||||
|
XWPFStyles styles = docOut.createStyles();
|
||||||
|
|
||||||
|
CTStyles ctStyles = CTStyles.Factory.newInstance();
|
||||||
|
String strStyleId = "headline1";
|
||||||
|
CTStyle ctStyle = ctStyles.addNewStyle();
|
||||||
|
|
||||||
|
ctStyle.setStyleId(strStyleId);
|
||||||
|
styles.setStyles(ctStyles);
|
||||||
|
|
||||||
|
assertTrue(styles.styleExist(strStyleId));
|
||||||
|
|
||||||
|
XWPFDocument docIn = XWPFTestDataSamples.writeOutAndReadBack(docOut);
|
||||||
|
|
||||||
|
styles = docIn.getStyles();
|
||||||
|
assertTrue(styles.styleExist(strStyleId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user