Author: fanningpj
Date: Mon Aug  1 11:35:22 2022
New Revision: 1903163

URL: http://svn.apache.org/viewvc?rev=1903163&view=rev
Log:
[bug-66187] issue with XWPFRun creating run properties unnecessarily

Modified:
    poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java?rev=1903163&r1=1903162&r2=1903163&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java 
(original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFRun.java 
Mon Aug  1 11:35:22 2022
@@ -40,12 +40,7 @@ import org.apache.poi.util.Internal;
 import org.apache.poi.util.Removal;
 import org.apache.poi.util.Units;
 import org.apache.poi.wp.usermodel.CharacterRun;
-import org.apache.xmlbeans.SimpleValue;
-import org.apache.xmlbeans.XmlCursor;
-import org.apache.xmlbeans.XmlException;
-import org.apache.xmlbeans.XmlObject;
-import org.apache.xmlbeans.XmlString;
-import org.apache.xmlbeans.XmlToken;
+import org.apache.xmlbeans.*;
 import org.apache.xmlbeans.impl.values.XmlAnyTypeImpl;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTChart;
 import org.openxmlformats.schemas.drawingml.x2006.main.CTBlip;
@@ -239,8 +234,7 @@ public class XWPFRun implements ISDTCont
      */
     public String getLang() {
         CTRPr pr = getRunProperties(false);
-        Object lang = (pr == null || pr.sizeOfLangArray() == 0) ? null : 
pr.getLangArray(0).getVal();
-        return (String) lang;
+        return (pr == null || pr.sizeOfLangArray() == 0) ? null : 
pr.getLangArray(0).getVal();
     }
 
     /**
@@ -299,7 +293,7 @@ public class XWPFRun implements ISDTCont
     }
 
     /**
-     * Get text color. The returned value is a string in the hex form "RRGGBB".
+     * Get text color. The returned value is a string in the hex form 
"RRGGBB". This can be <code>null</code>.
      */
     public String getColor() {
         String color = null;
@@ -963,10 +957,10 @@ public class XWPFRun implements ISDTCont
     }
 
     /**
-     *
+     * Not yet implemented.
      */
     public void removeBreak() {
-        // TODO
+        // TODO not yet implemented
     }
 
     /**
@@ -1506,11 +1500,14 @@ public class XWPFRun implements ISDTCont
     /**
      * Gets the highlight color for the run
      *
-     * @return {@link STHighlightColor} for the run.
+     * @return {@link STHighlightColor} for the run. The default is 
<code>NONE</code>;
      * @since 5.2.3
      */
     public STHighlightColor.Enum getTextHighlightColor() {
-        CTRPr pr = getRunProperties(true);
+        CTRPr pr = getRunProperties(false);
+        if (pr == null) {
+            return STHighlightColor.NONE;
+        }
         CTHighlight highlight = pr.sizeOfHighlightArray() > 0 ? 
pr.getHighlightArray(0) : pr.addNewHighlight();
         STHighlightColor color = highlight.xgetVal();
         if (color == null) {
@@ -1527,7 +1524,7 @@ public class XWPFRun implements ISDTCont
      * @since 4.0.0
      */
     public boolean isVanish() {
-        CTRPr pr = getRunProperties(true);
+        CTRPr pr = getRunProperties(false);
         return pr != null && pr.sizeOfVanishArray() > 0 && 
isCTOnOff(pr.getVanishArray(0));
     }
 
@@ -1546,11 +1543,15 @@ public class XWPFRun implements ISDTCont
     /**
      * Get the vertical alignment value
      *
-     * @return {@link STVerticalAlignRun.Enum} value (see 22.9.2.17 
ST_VerticalAlignRun (Vertical Positioning Location))
+     * @return {@link STVerticalAlignRun.Enum} value (see 22.9.2.17 
ST_VerticalAlignRun (Vertical Positioning Location)).
+     * The default is <code>BASELINE</code>.
      * @since 4.0.0
      */
     public STVerticalAlignRun.Enum getVerticalAlignment() {
-        CTRPr pr = getRunProperties(true);
+        CTRPr pr = getRunProperties(false);
+        if (pr == null) {
+            return STVerticalAlignRun.BASELINE;
+        }
         CTVerticalAlignRun vertAlign = pr.sizeOfVertAlignArray() > 0 ? 
pr.getVertAlignArray(0) : pr.addNewVertAlign();
         STVerticalAlignRun.Enum val = vertAlign.getVal();
         if (val == null) {
@@ -1585,10 +1586,14 @@ public class XWPFRun implements ISDTCont
      * Get the emphasis mark value for the run.
      *
      * @return {@link STEm.Enum} emphasis mark type enumeration. See 17.18.24 
ST_Em (Emphasis Mark Type).
+     * The default is <code>NONE</code>.
      * @since 4.0.0
      */
     public STEm.Enum getEmphasisMark() {
-        CTRPr pr = getRunProperties(true);
+        CTRPr pr = getRunProperties(false);
+        if (pr == null) {
+            return STEm.NONE;
+        }
         CTEm emphasis = pr.sizeOfEmArray() > 0 ? pr.getEmArray(0) : 
pr.addNewEm();
 
         STEm.Enum val = emphasis.getVal();



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to