]> source.dussan.org Git - poi.git/commitdiff
Bugzilla 52570: misc fixes in XWPFDocument
authorYegor Kozlov <yegor@apache.org>
Tue, 7 Feb 2012 09:48:22 +0000 (09:48 +0000)
committerYegor Kozlov <yegor@apache.org>
Tue, 7 Feb 2012 09:48:22 +0000 (09:48 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1241398 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java

index 4cb412931e609b81f83cc49cd3a69ba51edd460a..94b326811b5353947966f9675e2161030c780c18 100644 (file)
@@ -302,6 +302,10 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody {
        return Collections.unmodifiableList(bodyElements);
     }
     
+    public Iterator<IBodyElement> getBodyElementsIterator() {
+       return bodyElements.iterator();
+    }
+
     /**
         * @see org.apache.poi.xwpf.usermodel.IBody#getParagraphs()
      */
@@ -492,7 +496,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody {
     }
     
     /**
-     * Look up the paragraph at the specified position in the body elemnts list
+     * Look up the paragraph at the specified position in the body elements list
      * and return this paragraphs position in the paragraphs list
      * 
      * @param pos
@@ -604,7 +608,6 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody {
             cursor.toParent();
             CTTbl t = (CTTbl) cursor.getObject();
             XWPFTable newT = new XWPFTable(t, this);
-            cursor.removeXmlContents();
             XmlObject o = null;
             while (!(o instanceof CTTbl) && (cursor.toPrevSibling())) {
                 o = cursor.getObject();
@@ -616,16 +619,22 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody {
                 tables.add(pos, newT);
             }
             int i = 0;
-            cursor = t.newCursor();
+            XmlCursor tableCursor = t.newCursor();
+            try {
+                cursor.toCursor(tableCursor);
             while (cursor.toPrevSibling()) {
                 o = cursor.getObject();
                 if (o instanceof CTP || o instanceof CTTbl)
                     i++;
             }
             bodyElements.add(i, newT);
-            cursor = t.newCursor();
+               cursor.toCursor(tableCursor);
             cursor.toEndToken();
             return newT;
+        }
+            finally {
+               tableCursor.dispose();
+            }
         }
         return null;
     }
@@ -1317,7 +1326,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody {
                        return null;
                }
                XWPFTableRow tableRow = table.getRow(row);
-               if(row == null){
+               if (tableRow == null) {
                        return null;
                }
                return tableRow.getTableCell(cell);