Author: abearez
Date: Fri Mar 27 03:13:40 2020
New Revision: 1875747

URL: http://svn.apache.org/viewvc?rev=1875747&view=rev
Log:
XWPFNumbering.addAbstractNum will definitely throw an exception

Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFAbstractNum.java
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFNumbering.java
    
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFNumbering.java

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFAbstractNum.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFAbstractNum.java?rev=1875747&r1=1875746&r2=1875747&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFAbstractNum.java 
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFAbstractNum.java 
Fri Mar 27 03:13:40 2020
@@ -57,4 +57,8 @@ public class XWPFAbstractNum {
         return ctAbstractNum;
     }
 
+    public void setCtAbstractNum(CTAbstractNum ctAbstractNum) {
+        this.ctAbstractNum = ctAbstractNum;
+    }
+
 }

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFNumbering.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFNumbering.java?rev=1875747&r1=1875746&r2=1875747&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFNumbering.java 
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFNumbering.java 
Fri Mar 27 03:13:40 2020
@@ -23,6 +23,7 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.math.BigInteger;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import javax.xml.namespace.QName;
@@ -237,7 +238,7 @@ public class XWPFNumbering extends POIXM
         if (abstractNum.getAbstractNum() != null) { // Use the current 
CTAbstractNum if it exists
             ctNumbering.addNewAbstractNum().set(abstractNum.getAbstractNum());
         } else {
-            ctNumbering.addNewAbstractNum();
+            abstractNum.setCtAbstractNum(ctNumbering.addNewAbstractNum());
             
abstractNum.getAbstractNum().setAbstractNumId(BigInteger.valueOf(pos));
             ctNumbering.setAbstractNumArray(pos, abstractNum.getAbstractNum());
         }
@@ -283,5 +284,20 @@ public class XWPFNumbering extends POIXM
             return null;
         return num.getCTNum().getAbstractNumId().getVal();
     }
+
+    /**
+     * @return all abstractNums
+     */
+    public List<XWPFAbstractNum> getAbstractNums() {
+        return Collections.unmodifiableList(abstractNums);
+    }
+
+    /**
+     * @return all nums
+     */
+    public List<XWPFNum> getNums() {
+        return Collections.unmodifiableList(nums);
+    }
+
 }
 

Modified: 
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFNumbering.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFNumbering.java?rev=1875747&r1=1875746&r2=1875747&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFNumbering.java
 (original)
+++ 
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFNumbering.java
 Fri Mar 27 03:13:40 2020
@@ -26,6 +26,7 @@ import java.math.BigInteger;
 
 import org.apache.poi.xwpf.XWPFTestDataSamples;
 import org.junit.Test;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTAbstractNum;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNum;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNumLvl;
 
@@ -61,6 +62,45 @@ public class TestXWPFNumbering {
         XWPFNum num = numbering.getNum(numId);
 
         BigInteger compareAbstractNum = 
num.getCTNum().getAbstractNumId().getVal();
+        assertEquals(abstractNumId, compareAbstractNum);
+    }
+
+    @Test
+    public void testAddAbstractNumIfAbstractNumNotEqualNull() throws 
IOException {
+        BigInteger abstractNumId = BigInteger.valueOf(1);
+        XWPFDocument docOut = new XWPFDocument();
+        XWPFNumbering numbering = docOut.createNumbering();
+
+        CTAbstractNum cTAbstractNum = CTAbstractNum.Factory.newInstance();
+        // must set the AbstractNumId, Otherwise fail
+        cTAbstractNum.setAbstractNumId(abstractNumId);
+        XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum);
+        abstractNumId = numbering.addAbstractNum(abstractNum);
+        BigInteger numId = numbering.addNum(abstractNumId);
+
+        XWPFDocument docIn = XWPFTestDataSamples.writeOutAndReadBack(docOut);
+
+        numbering = docIn.getNumbering();
+        XWPFNum num = numbering.getNum(numId);
+        BigInteger compareAbstractNum = 
num.getCTNum().getAbstractNumId().getVal();
+        assertEquals(abstractNumId, compareAbstractNum);
+    }
+
+    @Test
+    public void testAddAbstractNumIfAbstractNumEqualNull() throws IOException {
+        XWPFDocument docOut = new XWPFDocument();
+        XWPFNumbering numbering = docOut.createNumbering();
+
+        XWPFAbstractNum abstractNum = new XWPFAbstractNum();
+        BigInteger abstractNumId = numbering.addAbstractNum(abstractNum);
+        BigInteger numId = numbering.addNum(abstractNumId);
+
+        XWPFDocument docIn = XWPFTestDataSamples.writeOutAndReadBack(docOut);
+
+        numbering = docIn.getNumbering();
+        XWPFNum num = numbering.getNum(numId);
+
+        BigInteger compareAbstractNum = 
num.getCTNum().getAbstractNumId().getVal();
         assertEquals(abstractNumId, compareAbstractNum);
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org
For additional commands, e-mail: commits-h...@poi.apache.org

Reply via email to