aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYegor Kozlov <yegor@apache.org>2012-02-23 12:07:16 +0000
committerYegor Kozlov <yegor@apache.org>2012-02-23 12:07:16 +0000
commit7d9173caa45e363731342a4f64564e90d00dfc6f (patch)
treee0cf00bbbab512106311a4aba916d0df086be892 /src
parent37149e9d6b8daed7d8820a8e3d01ee7da376566e (diff)
downloadpoi-7d9173caa45e363731342a4f64564e90d00dfc6f.tar.gz
poi-7d9173caa45e363731342a4f64564e90d00dfc6f.zip
Bugzilla 52745: fixed XSSFRichtextString.append to preserve leading / trailing spaces
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1292759 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
-rw-r--r--src/documentation/content/xdocs/status.xml1
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java7
-rw-r--r--src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java6
3 files changed, 12 insertions, 2 deletions
diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml
index d2d7aebf85..57161cd5ae 100644
--- a/src/documentation/content/xdocs/status.xml
+++ b/src/documentation/content/xdocs/status.xml
@@ -34,6 +34,7 @@
<changes>
<release version="3.8-beta6" date="2012-??-??">
+ <action dev="poi-developers" type="fix">52745 - fixed XSSFRichtextString.append to preserve leading / trailing spaces </action>
<action dev="poi-developers" type="fix">52716 - tolerate hyperlinks that have neither location nor relation </action>
<action dev="poi-developers" type="fix">52599 - avoid duplicate text when rendering slides in HSLF</action>
<action dev="poi-developers" type="fix">52598 - respect slide background when rendering slides in HSLF</action>
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java
index e3ed3223a7..39911f393a 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java
@@ -194,11 +194,14 @@ public class XSSFRichTextString implements RichTextString {
public void append(String text, XSSFFont font){
if(st.sizeOfRArray() == 0 && st.isSetT()) {
//convert <t>string</t> into a text run: <r><t>string</t></r>
- st.addNewR().setT(st.getT());
+ CTRElt lt = st.addNewR();
+ lt.setT(st.getT());
+ preserveSpaces(lt.xgetT());
st.unsetT();
}
CTRElt lt = st.addNewR();
lt.setT(text);
+ preserveSpaces(lt.xgetT());
CTRPrElt pr = lt.addNewRPr();
if(font != null) setRunAttributes(font.getCTFont(), pr);
}
@@ -392,7 +395,7 @@ public class XSSFRichTextString implements RichTextString {
if(st.sizeOfRArray() > 0) {
for (CTRElt r : st.getRArray()) {
CTRPrElt pr = r.getRPr();
- if(pr != null){
+ if(pr != null && pr.sizeOfRFontArray() > 0){
String fontName = pr.getRFontArray(0).getVal();
if(fontName.startsWith("#")){
int idx = Integer.parseInt(fontName.substring(1));
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java
index 30f7948828..481c56dd65 100644
--- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java
+++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java
@@ -140,6 +140,12 @@ public final class TestXSSFRichTextString extends TestCase {
rt.setString(" Apache");
assertEquals("<xml-fragment xml:space=\"preserve\"> Apache</xml-fragment>", xs.xmlText());
+ rt.append(" POI");
+ rt.append(" ");
+ assertEquals(" Apache POI ", rt.getString());
+ assertEquals("<xml-fragment xml:space=\"preserve\"> Apache</xml-fragment>", rt.getCTRst().getRArray(0).xgetT().xmlText());
+ assertEquals("<xml-fragment xml:space=\"preserve\"> POI</xml-fragment>", rt.getCTRst().getRArray(1).xgetT().xmlText());
+ assertEquals("<xml-fragment xml:space=\"preserve\"> </xml-fragment>", rt.getCTRst().getRArray(2).xgetT().xmlText());
}
/**