Author: fanningpj
Date: Sun Jun 19 11:02:01 2022
New Revision: 1902057

URL: http://svn.apache.org/viewvc?rev=1902057&view=rev
Log:
remove use of some calls to deprecated cursor dispose()

Modified:
    poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/util/XPathHelper.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/SignatureLine.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESSignatureFacet.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/draw/geom/XSLFPath.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFChart.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFColor.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFFreeformShape.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFObjectShape.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFPropertiesDelegate.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFShape.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSheet.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTable.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFGraphicFrame.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFObjectData.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTableStyle.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/helpers/XSSFPasswordHelper.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFComment.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFSDTContentCell.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTableCell.java
    
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java
    
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFExamples.java

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/util/XPathHelper.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/util/XPathHelper.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/util/XPathHelper.java 
(original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/ooxml/util/XPathHelper.java 
Sun Jun 19 11:02:01 2022
@@ -109,9 +109,8 @@ public final class XPathHelper {
     public static <T extends XmlObject> T selectProperty(XmlObject 
startObject, Class<T> resultClass, XSLFShape.ReparseFactory<T> factory, 
QName[]... path)
             throws XmlException {
         XmlObject xo = startObject;
-        XmlCursor cur = xo.newCursor();
         XmlCursor innerCur = null;
-        try {
+        try (XmlCursor cur = startObject.newCursor()) {
             innerCur = selectProperty(cur, path, 0, factory != null, false);
             if (innerCur == null) {
                 return null;
@@ -133,9 +132,8 @@ public final class XPathHelper {
 
             return (T)xo;
         } finally {
-            cur.dispose();
             if (innerCur != null) {
-                innerCur.dispose();
+                innerCur.close();
             }
         }
     }
@@ -187,22 +185,17 @@ public final class XPathHelper {
         for (int i=0; i<choices; i++) {
             // TODO: check [Requires] attribute of [Choice] element, if we can 
handle the content
             AlternateContentDocument.AlternateContent.Choice choice = 
alterCont.getChoiceArray(i);
-            XmlCursor cCur = choice.newCursor();
             XmlCursor innerCur = null;
-            try {
+            try (XmlCursor cCur = choice.newCursor()) {
                 String requiresNS = 
cCur.namespaceForPrefix(choice.getRequires());
                 if (MAC_DML_NS.equalsIgnoreCase(requiresNS)) {
                     // Mac DML usually contains PDFs ...
                     continue;
                 }
                 innerCur = selectProperty(cCur, path, offset, 
reparseAlternate, true);
-                if (innerCur != null) {
+                if (innerCur != null && innerCur != cCur) {
                     return innerCur;
                 }
-            } finally {
-                if (innerCur != cCur) {
-                    cCur.dispose();
-                }
             }
         }
 
@@ -217,7 +210,7 @@ public final class XPathHelper {
             return innerCur;
         } finally {
             if (innerCur != fCur) {
-                fCur.dispose();
+                fCur.close();
             }
         }
     }

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/SignatureLine.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/SignatureLine.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/SignatureLine.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/SignatureLine.java
 Sun Jun 19 11:02:01 2022
@@ -195,10 +195,10 @@ public abstract class SignatureLine {
     }
 
     public void setSignatureShape(CTSignatureLine signatureLine) {
-        XmlCursor cur = signatureLine.newCursor();
-        cur.toParent();
-        this.signatureShape = (CTShape)cur.getObject();
-        cur.dispose();
+        try (XmlCursor cur = signatureLine.newCursor()) {
+            cur.toParent();
+            this.signatureShape = (CTShape)cur.getObject();
+        }
     }
 
     public void updateSignatureConfig(SignatureConfig config) throws 
IOException {
@@ -231,12 +231,9 @@ public abstract class SignatureLine {
         setSuggestedSigner(signatureLine.getSuggestedsigner());
         setSuggestedSigner2(signatureLine.getSuggestedsigner2());
         setSuggestedSignerEmail(signatureLine.getSuggestedsigneremail());
-        XmlCursor cur = signatureLine.newCursor();
-        try {
+        try (XmlCursor cur = signatureLine.newCursor()) {
             // the signinginstructions are actually qualified, but our schema 
version is too old
             setSigningInstructions(cur.getAttributeText(new 
QName(MS_OFFICE_URN, "signinginstructions")));
-        } finally {
-            cur.dispose();
         }
     }
 
@@ -260,14 +257,14 @@ public abstract class SignatureLine {
             CTGroup grp = CTGroup.Factory.newInstance();
             grp.addNewShape();
 
-            XmlCursor contCur = signatureContainer.newCursor();
-            contCur.toEndToken();
-            XmlCursor otherC = grp.newCursor();
-            otherC.copyXmlContents(contCur);
-            otherC.dispose();
-            contCur.toPrevSibling();
-            signatureShape = (CTShape)contCur.getObject();
-            contCur.dispose();
+            try (XmlCursor contCur = signatureContainer.newCursor()) {
+                contCur.toEndToken();
+                try (XmlCursor otherC = grp.newCursor()) {
+                    otherC.copyXmlContents(contCur);
+                }
+                contCur.toPrevSibling();
+                signatureShape = (CTShape)contCur.getObject();
+            }
 
             signatureShape.setAlt("Microsoft Office Signature Line...");
             signatureShape.setStyle("width:191.95pt;height:96.05pt");
@@ -298,9 +295,9 @@ public abstract class SignatureLine {
             xsl.setProvid("{00000000-0000-0000-0000-000000000000}");
             xsl.setExt(STExt.EDIT);
             xsl.setSigninginstructionsset(STTrueFalse.T);
-            XmlCursor cur = xsl.newCursor();
-            cur.setAttributeText(new QName(MS_OFFICE_URN, 
"signinginstructions"), signingInstructions);
-            cur.dispose();
+            try (XmlCursor cur = xsl.newCursor()) {
+                cur.setAttributeText(new QName(MS_OFFICE_URN, 
"signinginstructions"), signingInstructions);
+            }
         } catch (IOException | InvalidFormatException e) {
             // shouldn't happen ...
             throw new POIXMLException("Can't generate signature line image", 
e);

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESSignatureFacet.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESSignatureFacet.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESSignatureFacet.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/poifs/crypt/dsig/facets/XAdESSignatureFacet.java
 Sun Jun 19 11:02:01 2022
@@ -351,21 +351,20 @@ public class XAdESSignatureFacet impleme
     }
 
     protected static void insertXChild(XmlObject root, XmlObject child) {
-        XmlCursor rootCursor = root.newCursor();
-        rootCursor.toEndToken();
-        XmlCursor childCursor = child.newCursor();
-        childCursor.toNextToken();
-        childCursor.moveXml(rootCursor);
-        childCursor.dispose();
-        rootCursor.dispose();
+        try (XmlCursor rootCursor = root.newCursor()) {
+            rootCursor.toEndToken();
+            try (XmlCursor childCursor = child.newCursor()) {
+                childCursor.toNextToken();
+                childCursor.moveXml(rootCursor);
+            }
+        }
     }
 
     /**
      * Workaround for Document.importNode, which causes SIGSEGV in JDK14 
(Ubuntu)
      */
     private static Element importNode(Document document, XmlObject xo) {
-        XmlCursor cur = xo.newCursor();
-        try {
+        try (XmlCursor cur = xo.newCursor()) {
             QName elName = cur.getName();
             Element lastNode = 
document.createElementNS(elName.getNamespaceURI(), elName.getLocalPart());
             while (cur.hasNextToken()) {
@@ -415,8 +414,6 @@ public class XAdESSignatureFacet impleme
                 }
             }
             return lastNode;
-        } finally {
-            cur.dispose();
         }
     }
 }
\ No newline at end of file

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/draw/geom/XSLFPath.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/draw/geom/XSLFPath.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/draw/geom/XSLFPath.java 
(original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/draw/geom/XSLFPath.java 
Sun Jun 19 11:02:01 2022
@@ -56,8 +56,7 @@ public class XSLFPath implements PathIf
     @Override
     public Path2D.Double getPath(Context ctx) {
         Path2D.Double path2D = new Path2D.Double();
-        XmlCursor cur = pathXml.newCursor();
-        try {
+        try (XmlCursor cur = pathXml.newCursor()) {
             for (boolean hasNext = cur.toFirstChild(); hasNext; hasNext = 
cur.toNextSibling()) {
                 XmlObject xo = cur.getObject();
                 PathCommand pc;
@@ -78,8 +77,6 @@ public class XSLFPath implements PathIf
                 }
                 pc.execute(path2D, ctx);
             }
-        } finally {
-            cur.dispose();
         }
         return path2D;
     }

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFChart.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFChart.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFChart.java 
(original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFChart.java 
Sun Jun 19 11:02:01 2022
@@ -138,13 +138,10 @@ public final class XSLFChart extends XDD
         xfrm.setOff(off);
 
         CTGraphicalObjectData gr = frame.addNewGraphic().addNewGraphicData();
-        XmlCursor grCur = gr.newCursor();
-        try {
+        try (XmlCursor grCur = gr.newCursor()) {
             grCur.toNextToken();
             grCur.beginElement(new QName(CHART_URI, "chart"));
             grCur.insertAttributeWithValue("id", 
PackageRelationshipTypes.CORE_PROPERTIES_ECMA376_NS, rID);
-        } finally {
-            grCur.dispose();
         }
 
         gr.setUri(CHART_URI);

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFColor.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFColor.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFColor.java 
(original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFColor.java 
Sun Jun 19 11:02:01 2022
@@ -141,9 +141,8 @@ public class XSLFColor {
             return _phClr == null ? null : toColor(_phClr, theme);
         }
 
-        final XmlCursor cur = obj.newCursor();
         Color color = null;
-        try {
+        try (XmlCursor cur = obj.newCursor()) {
             XmlObject ch;
             for (int idx=0; color == null && (ch = nextObject(obj, cur, idx)) 
!= null; idx++) {
                 if (ch instanceof CTHslColor) {
@@ -162,8 +161,6 @@ public class XSLFColor {
                     throw new IllegalArgumentException("Unexpected color 
choice: " + ch.getClass());
                 }
             }
-        } finally {
-            cur.dispose();
         }
         return color;
     }
@@ -254,8 +251,7 @@ public class XSLFColor {
             if (obj == null) {
                 continue;
             }
-            XmlCursor cur = obj.newCursor();
-            try {
+            try (XmlCursor cur = obj.newCursor()) {
                 if (!(
                         cur.toChild(XSLFRelation.NS_DRAWINGML, elem) ||
                         (cur.toFirstChild() && 
cur.toChild(XSLFRelation.NS_DRAWINGML, elem))
@@ -266,8 +262,6 @@ public class XSLFColor {
                 if (str != null && !"".equals(str)) {
                     return Integer.parseInt(str);
                 }
-            } finally {
-                cur.dispose();
             }
         }
         return -1;

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFFreeformShape.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFFreeformShape.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFFreeformShape.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFFreeformShape.java
 Sun Jun 19 11:02:01 2022
@@ -143,9 +143,8 @@ public class XSLFFreeformShape extends X
         }
 
         final CTCustomGeometry2D geom = ((CTShapeProperties)xo).getCustGeom();
-        for(CTPath2D spPath : geom.getPathLst().getPathArray()){
-            XmlCursor cursor = spPath.newCursor();
-            try {
+        for(CTPath2D spPath : geom.getPathLst().getPathArray()) {
+            try (XmlCursor cursor = spPath.newCursor()) {
                 if (cursor.toFirstChild()) {
                     do {
                         final XmlObject ch = cursor.getObject();
@@ -164,8 +163,6 @@ public class XSLFFreeformShape extends X
                         }
                     } while (cursor.toNextSibling());
                 }
-            } finally {
-                cursor.dispose();
             }
         }
 

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java
 Sun Jun 19 11:02:01 2022
@@ -190,12 +190,9 @@ public class XSLFGraphicFrame extends XS
             String xpath = "declare namespace c='" + DRAWINGML_CHART_URI + "' 
c:chart";
             XmlObject[] obj = getGraphicalData().selectPath(xpath);
             if (obj != null && obj.length == 1) {
-                XmlCursor c = obj[0].newCursor();
-                try {
+                try (XmlCursor c = obj[0].newCursor()) {
                     QName idQualifiedName = new 
QName(CORE_PROPERTIES_ECMA376_NS, "id");
                     id = c.getAttributeText(idQualifiedName);
-                } finally {
-                    c.dispose();
                 }
             }
             if (id == null) {
@@ -230,8 +227,7 @@ public class XSLFGraphicFrame extends XS
         String xpath = "declare namespace c='" + DRAWINGML_CHART_URI + "' 
c:chart";
         XmlObject[] obj = objData.selectPath(xpath);
         if (obj != null && obj.length == 1) {
-            XmlCursor c = obj[0].newCursor();
-            try {
+            try (XmlCursor c = obj[0].newCursor()) {
                 // duplicate chart with embedded workbook
                 QName idQualifiedName = new QName(CORE_PROPERTIES_ECMA376_NS, 
"id");
                 String id = c.getAttributeText(idQualifiedName);
@@ -254,8 +250,6 @@ public class XSLFGraphicFrame extends XS
                 }
             } catch (InvalidFormatException | IOException e) {
                 throw new POIXMLException(e);
-            } finally {
-                c.dispose();
             }
         }
     }
@@ -265,10 +259,8 @@ public class XSLFGraphicFrame extends XS
         String xpath = "declare namespace dgm='" + DRAWINGML_DIAGRAM_URI + "' 
$this//dgm:relIds";
         XmlObject[] obj = objData.selectPath(xpath);
         if(obj != null && obj.length == 1) {
-            XmlCursor c = obj[0].newCursor();
-
             XSLFSheet sheet = srcShape.getSheet();
-            try {
+            try (XmlCursor c = obj[0].newCursor()) {
                 String dm = c.getAttributeText(new 
QName(CORE_PROPERTIES_ECMA376_NS, "dm"));
                 PackageRelationship dmRel = 
sheet.getPackagePart().getRelationship(dm);
                 PackagePart dmPart = 
sheet.getPackagePart().getRelatedPart(dmRel);
@@ -291,8 +283,6 @@ public class XSLFGraphicFrame extends XS
 
             } catch (InvalidFormatException e){
                 throw new POIXMLException(e);
-            } finally {
-                c.dispose();
             }
         }
     }

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFObjectShape.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFObjectShape.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFObjectShape.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFObjectShape.java
 Sun Jun 19 11:02:01 2022
@@ -250,8 +250,7 @@ public class XSLFObjectShape extends XSL
         frame.addNewXfrm();
         CTGraphicalObjectData gr = frame.addNewGraphic().addNewGraphicData();
         gr.setUri(OLE_URI);
-        XmlCursor grCur = gr.newCursor();
-        try {
+        try (XmlCursor grCur = gr.newCursor()) {
             grCur.toEndToken();
             grCur.beginElement(new QName(PML_NS, "oleObj"));
             grCur.insertElement(new QName(PML_NS, "embed"));
@@ -281,15 +280,10 @@ public class XSLFObjectShape extends XSL
 
             spPr.addNewPrstGeom().setPrst(STShapeType.RECT);
 
-            XmlCursor picCur = grpShp.newCursor();
-            try {
+            try (XmlCursor picCur = grpShp.newCursor()) {
                 picCur.toStartDoc();
                 picCur.moveXmlContents(grCur);
-            } finally {
-                picCur.dispose();
             }
-        } finally {
-            grCur.dispose();
         }
 
         return frame;

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFPictureShape.java
 Sun Jun 19 11:02:01 2022
@@ -240,14 +240,11 @@ public class XSLFPictureShape extends XS
         if (bitmapId == -1) {
             extBitmap = extLst.addNewExt();
             extBitmap.setUri(BITMAP_URI);
-            XmlCursor cur = extBitmap.newCursor();
-            try {
+            try (XmlCursor cur = extBitmap.newCursor()) {
                 cur.toEndToken();
                 cur.beginElement(new QName(MS_DML_NS, "useLocalDpi", "a14"));
                 cur.insertNamespace("a14", MS_DML_NS);
                 cur.insertAttributeWithValue("val", "0");
-            } finally {
-                cur.dispose();
             }
         }
 
@@ -263,14 +260,11 @@ public class XSLFPictureShape extends XS
 
         CTOfficeArtExtension svgBitmap = extLst.addNewExt();
         svgBitmap.setUri(SVG_URI);
-        XmlCursor cur = svgBitmap.newCursor();
-        try {
+        try (XmlCursor cur = svgBitmap.newCursor()) {
             cur.toEndToken();
             cur.beginElement(new QName(MS_SVG_NS, "svgBlip", "asvg"));
             cur.insertNamespace("asvg", MS_SVG_NS);
             cur.insertAttributeWithValue(EMBED_TAG, svgRelId);
-        } finally {
-            cur.dispose();
         }
     }
 
@@ -337,14 +331,11 @@ public class XSLFPictureShape extends XS
 
         int size = extLst.sizeOfExtArray();
         for (int i = 0; i < size; i++) {
-            XmlCursor cur = extLst.getExtArray(i).newCursor();
-            try {
+            try (XmlCursor cur = extLst.getExtArray(i).newCursor()) {
                 if (cur.toChild(MS_SVG_NS, "svgBlip")) {
                     String svgRelId = cur.getAttributeText(EMBED_TAG);
                     return (svgRelId != null) ? (XSLFPictureData) 
getSheet().getRelationById(svgRelId) : null;
                 }
-            } finally {
-                cur.dispose();
             }
         }
         return null;
@@ -431,13 +422,10 @@ public class XSLFPictureShape extends XS
                 String xpath = "declare namespace a14='"+ MS_DML_NS +"' 
$this//a14:imgProps/a14:imgLayer";
                 XmlObject[] obj = ext.selectPath(xpath);
                 if(obj != null && obj.length == 1) {
-                    XmlCursor c = obj[0].newCursor();
-                    try {
+                    try (XmlCursor c = obj[0].newCursor()) {
                         String id = c.getAttributeText(EMBED_TAG);
                         String newId = getSheet().importBlip(id, p.getSheet());
                         c.setAttributeText(EMBED_TAG, newId);
-                    } finally {
-                        c.dispose();
                     }
                 }
             }

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFPropertiesDelegate.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFPropertiesDelegate.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFPropertiesDelegate.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFPropertiesDelegate.java
 Sun Jun 19 11:02:01 2022
@@ -1154,12 +1154,9 @@ import org.openxmlformats.schemas.presen
         
         @Override
         public boolean isLineStyle() {
-            XmlCursor cur = props.newCursor();
-            try {
+            try (XmlCursor cur = props.newCursor()) {
                 String name = cur.getName().getLocalPart();
                 return "lnRef".equals(name);
-            } finally {
-                cur.dispose();
             }
         }
     }

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFShape.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFShape.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFShape.java 
(original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFShape.java 
Sun Jun 19 11:02:01 2022
@@ -256,16 +256,13 @@ public abstract class XSLFShape implemen
     @SuppressWarnings({"unchecked", "WeakerAccess", "unused", 
"SameParameterValue"})
     protected <T extends XmlObject> T getChild(Class<T> childClass, String 
namespace, String nodename) {
         T child = null;
-        XmlCursor cur = getXmlObject().newCursor();
-        try {
+        try (XmlCursor cur = getXmlObject().newCursor()) {
             if (cur.toChild(namespace, nodename)) {
                 child = (T)cur.getObject();
             }
             if (cur.toChild(XSLFRelation.NS_DRAWINGML, nodename)) {
                 child = (T)cur.getObject();
             }
-        } finally {
-            cur.dispose();
         }
         return child;
     }
@@ -461,13 +458,10 @@ public abstract class XSLFShape implemen
             return null;
         }
         XSLFFillProperties fp = null;
-        XmlCursor cur = styleLst.newCursor();
-        try {
+        try (XmlCursor cur = styleLst.newCursor()) {
             if (cur.toChild(Math.toIntExact(childIdx))) {
                 fp = XSLFPropertiesDelegate.getFillDelegate(cur.getObject());
             }
-        } finally {
-            cur.dispose();
         }
 
         CTSchemeColor phClr = fillRef.getSchemeClr();

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSheet.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSheet.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSheet.java 
(original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFSheet.java 
Sun Jun 19 11:02:01 2022
@@ -140,8 +140,7 @@ implements XSLFShapeContainer, Sheet<XSL
         final XSLFSheet sheet = (parent instanceof XSLFSheet) ? 
(XSLFSheet)parent : ((XSLFShape)parent).getSheet();
 
         List<XSLFShape> shapes = new ArrayList<>();
-        XmlCursor cur = spTree.newCursor();
-        try {
+        try (XmlCursor cur = spTree.newCursor()) {
             for (boolean b = cur.toFirstChild(); b; b = cur.toNextSibling()) {
                 XmlObject ch = cur.getObject();
                 if(ch instanceof CTShape){
@@ -174,8 +173,6 @@ implements XSLFShapeContainer, Sheet<XSL
                     cur.pop();
                 }
             }
-        } finally {
-            cur.dispose();
         }
 
         for (final XSLFShape s : shapes) {

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTable.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTable.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTable.java 
(original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTable.java 
Sun Jun 19 11:02:01 2022
@@ -63,8 +63,7 @@ public class XSLFTable extends XSLFGraph
         super(shape, sheet);
 
         CTGraphicalObjectData god = shape.getGraphic().getGraphicData();
-        XmlCursor xc = god.newCursor();
-        try {
+        try (XmlCursor xc = god.newCursor()) {
             if (!xc.toChild(XSLFRelation.NS_DRAWINGML, "tbl")) {
                 throw new IllegalStateException("a:tbl element was not found 
in\n " + god);
             }
@@ -81,8 +80,6 @@ public class XSLFTable extends XSLFGraph
                 throw new IllegalStateException(errStr);
             }
             _table = (CTTable)xo;
-        } finally {
-            xc.dispose();
         }
 
         _rows = new ArrayList<>(_table.sizeOfTrArray());
@@ -260,22 +257,16 @@ public class XSLFTable extends XSLFGraph
 
         frame.addNewXfrm();
         CTGraphicalObjectData gr = frame.addNewGraphic().addNewGraphicData();
-        XmlCursor grCur = gr.newCursor();
-        try {
+        try (XmlCursor grCur = gr.newCursor()) {
             grCur.toNextToken();
             grCur.beginElement(new QName(XSLFRelation.NS_DRAWINGML, "tbl"));
 
             CTTable tbl = CTTable.Factory.newInstance();
             tbl.addNewTblPr();
             tbl.addNewTblGrid();
-            XmlCursor tblCur = tbl.newCursor();
-            try {
+            try (XmlCursor tblCur = tbl.newCursor()) {
                 tblCur.moveXmlContents(grCur);
-            } finally {
-                tblCur.dispose();
             }
-        } finally {
-            grCur.dispose();
         }
         gr.setUri(TABLE_URI);
         return frame;

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java
 Sun Jun 19 11:02:01 2022
@@ -66,8 +66,7 @@ public class XSLFTextParagraph implement
         _runs = new ArrayList<>();
         _shape = shape;
 
-        XmlCursor c = _p.newCursor();
-        try {
+        try (XmlCursor c = _p.newCursor()) {
             if (c.toFirstChild()) {
                 do {
                     XmlObject r = c.getObject();
@@ -78,8 +77,6 @@ public class XSLFTextParagraph implement
                     }
                 } while (c.toNextSibling());
             }
-        } finally {
-            c.dispose();
         }
     }
 
@@ -751,8 +748,7 @@ public class XSLFTextParagraph implement
         for (XSLFSheet m = masterSheet; m != null; m = 
(XSLFSheet)m.getMasterSheet()) {
             masterSheet = m;
             XmlObject xo = masterSheet.getXmlObject();
-            XmlCursor cur = xo.newCursor();
-            try {
+            try (XmlCursor cur = xo.newCursor()) {
                 cur.push();
                 if ((cur.toChild(nsPML, "txStyles") && cur.toChild(nsPML, 
defaultStyleSelector)) ||
                     (cur.pop() && cur.toChild(nsPML, "notesStyle"))) {
@@ -765,8 +761,6 @@ public class XSLFTextParagraph implement
                         level--;
                     }
                 }
-            } finally {
-                cur.dispose();
             }
         }
 
@@ -805,17 +799,11 @@ public class XSLFTextParagraph implement
             thisP.removeFld(i-1);
         }
 
-        XmlCursor thisC = thisP.newCursor();
-        try {
+        try (XmlCursor thisC = thisP.newCursor()) {
             thisC.toEndToken();
-            XmlCursor otherC = otherP.newCursor();
-            try {
+            try (XmlCursor otherC = otherP.newCursor()) {
                 otherC.copyXmlContents(thisC);
-            } finally {
-                otherC.dispose();
             }
-        } finally {
-            thisC.dispose();
         }
 
         for (XSLFTextRun tr : other.getTextRuns()) {

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java
 Sun Jun 19 11:02:01 2022
@@ -462,8 +462,7 @@ public final class XSSFDrawing extends P
         ole1.setId(olePR.getId());
 
         CTTwoCellAnchor ctAnchor;
-        final XmlCursor cur1 = ole1.newCursor();
-        try {
+        try (XmlCursor cur1 = ole1.newCursor()) {
             cur1.toEndToken();
             cur1.beginElement("objectPr", XSSFRelation.NS_SPREADSHEETML);
             cur1.insertAttributeWithValue("id", 
PackageRelationshipTypes.CORE_PROPERTIES_ECMA376_NS, imgSheetPR.getId());
@@ -473,11 +472,8 @@ public final class XSSFDrawing extends P
 
             ctAnchor = createTwoCellAnchor((XSSFClientAnchor) anchor);
 
-            final XmlCursor cur2 = ctAnchor.newCursor();
-            try {
+            try (XmlCursor cur2 = ctAnchor.newCursor()) {
                 cur2.copyXmlContents(cur1);
-            } finally {
-                cur2.dispose();
             }
 
             cur1.toParent();
@@ -485,8 +481,6 @@ public final class XSSFDrawing extends P
             cur1.setName(new QName(XSSFRelation.NS_SPREADSHEETML, "from"));
             cur1.toNextSibling();
             cur1.setName(new QName(XSSFRelation.NS_SPREADSHEETML, "to"));
-        } finally {
-            cur1.dispose();
         }
 
         // add a new shape and link OLE & image part
@@ -503,12 +497,9 @@ public final class XSSFDrawing extends P
         cNvPr.setId(shapeId);
         cNvPr.setName("Object " + shapeId);
 
-        XmlCursor extCur = cNvPr.getExtLst().getExtArray(0).newCursor();
-        try {
+        try (XmlCursor extCur = cNvPr.getExtLst().getExtArray(0).newCursor()) {
             extCur.toFirstChild();
             extCur.setAttributeText(new QName("spid"), "_x0000_s" + shapeId);
-        } finally {
-            extCur.dispose();
         }
 
         XSSFObjectData shape = new XSSFObjectData(this, ctShape);
@@ -595,13 +586,10 @@ public final class XSSFDrawing extends P
      */
     public List<XSSFShape> getShapes() {
         List<XSSFShape> lst = new ArrayList<>();
-        XmlCursor cur = drawing.newCursor();
-        try {
+        try (XmlCursor cur = drawing.newCursor()) {
             if (cur.toFirstChild()) {
                 addShapes(cur, lst);
             }
-        } finally {
-            cur.dispose();
         }
         return lst;
     }
@@ -611,87 +599,76 @@ public final class XSSFDrawing extends P
      */
     public List<XSSFShape> getShapes(XSSFShapeGroup groupshape) {
         List<XSSFShape> lst = new ArrayList<>();
-        XmlCursor cur = groupshape.getCTGroupShape().newCursor();
-        try {
+        try (XmlCursor cur = groupshape.getCTGroupShape().newCursor()) {
             addShapes(cur, lst);
-        } finally {
-            cur.dispose();
         }
         return lst;
     }
 
     private void addShapes(XmlCursor cur, List<XSSFShape> lst) {
-        try {
-            do {
-                cur.push();
-                if (cur.toFirstChild()) {
-                    do {
-                        XmlObject obj = cur.getObject();
-
-                        XSSFShape shape;
-                        if (obj instanceof CTMarker) {
-                            // ignore anchor elements
-                            continue;
-                        } else if (obj instanceof CTPicture) {
-                            shape = new XSSFPicture(this, (CTPicture) obj);
-                        } else if (obj instanceof CTConnector) {
-                            shape = new XSSFConnector(this, (CTConnector) obj);
-                        } else if (obj instanceof CTShape) {
-                            shape = hasOleLink(obj) ? new XSSFObjectData(this, 
(CTShape) obj)
-                                : new XSSFSimpleShape(this, (CTShape) obj);
-                        } else if (obj instanceof CTGraphicalObjectFrame) {
-                            shape = new XSSFGraphicFrame(this, 
(CTGraphicalObjectFrame) obj);
-                        } else if (obj instanceof CTGroupShape) {
-                            shape = new XSSFShapeGroup(this, (CTGroupShape) 
obj);
-                        } else if (obj instanceof XmlAnyTypeImpl) {
-                            LOG.atWarn().log("trying to parse 
AlternateContent, this unlinks the returned Shapes from the underlying xml 
content, so those shapes can't be used to modify the drawing, i.e. 
modifications will be ignored!");
-
-                            // XmlAnyTypeImpl is returned for AlternateContent
-                            // parts, which might contain a CTDrawing
-                            cur.push();
-                            cur.toFirstChild();
-                            XmlCursor cur2 = null;
-                            try {
-                                // need to parse AlternateContent again,
-                                // otherwise the child elements aren't typed,
-                                // but also XmlAnyTypes
-                                CTDrawing alterWS = 
CTDrawing.Factory.parse(cur.newXMLStreamReader());
-                                cur2 = alterWS.newCursor();
+        do {
+            cur.push();
+            if (cur.toFirstChild()) {
+                do {
+                    XmlObject obj = cur.getObject();
+
+                    XSSFShape shape;
+                    if (obj instanceof CTMarker) {
+                        // ignore anchor elements
+                        continue;
+                    } else if (obj instanceof CTPicture) {
+                        shape = new XSSFPicture(this, (CTPicture) obj);
+                    } else if (obj instanceof CTConnector) {
+                        shape = new XSSFConnector(this, (CTConnector) obj);
+                    } else if (obj instanceof CTShape) {
+                        shape = hasOleLink(obj) ? new XSSFObjectData(this, 
(CTShape) obj)
+                            : new XSSFSimpleShape(this, (CTShape) obj);
+                    } else if (obj instanceof CTGraphicalObjectFrame) {
+                        shape = new XSSFGraphicFrame(this, 
(CTGraphicalObjectFrame) obj);
+                    } else if (obj instanceof CTGroupShape) {
+                        shape = new XSSFShapeGroup(this, (CTGroupShape) obj);
+                    } else if (obj instanceof XmlAnyTypeImpl) {
+                        LOG.atWarn().log("trying to parse AlternateContent, 
this unlinks the returned Shapes from the underlying xml content, so those 
shapes can't be used to modify the drawing, i.e. modifications will be 
ignored!");
+
+                        // XmlAnyTypeImpl is returned for AlternateContent
+                        // parts, which might contain a CTDrawing
+                        cur.push();
+                        cur.toFirstChild();
+                        try {
+                            // need to parse AlternateContent again,
+                            // otherwise the child elements aren't typed,
+                            // but also XmlAnyTypes
+                            CTDrawing alterWS = 
CTDrawing.Factory.parse(cur.newXMLStreamReader());
+                            try (XmlCursor cur2 = alterWS.newCursor()) {
                                 if (cur2.toFirstChild()) {
                                     addShapes(cur2, lst);
                                 }
-                            } catch (XmlException e) {
-                                LOG.atWarn().withThrowable(e).log("unable to 
parse CTDrawing in alternate content.");
-                            } finally {
-                                if (cur2 != null) {
-                                    cur2.dispose();
-                                }
-                                cur.pop();
                             }
-                            continue;
-                        } else {
-                            // ignore anything else
-                            continue;
+                        } catch (XmlException e) {
+                            LOG.atWarn().withThrowable(e).log("unable to parse 
CTDrawing in alternate content.");
+                        } finally {
+                            cur.pop();
                         }
+                        continue;
+                    } else {
+                        // ignore anything else
+                        continue;
+                    }
+
+                    assert (shape != null);
+                    shape.anchor = getAnchorFromParent(obj);
+                    lst.add(shape);
 
-                        assert (shape != null);
-                        shape.anchor = getAnchorFromParent(obj);
-                        lst.add(shape);
-
-                    } while (cur.toNextSibling());
-                }
-                cur.pop();
-            } while (cur.toNextSibling());
-        } finally {
-            cur.dispose();
-        }
+                } while (cur.toNextSibling());
+            }
+            cur.pop();
+        } while (cur.toNextSibling());
     }
 
     private boolean hasOleLink(XmlObject shape) {
         QName uriName = new QName(null, "uri");
         String xquery = "declare namespace a='" + XSSFRelation.NS_DRAWINGML + 
"' .//a:extLst/a:ext";
-        XmlCursor cur = shape.newCursor();
-        try {
+        try (XmlCursor cur = shape.newCursor()) {
             cur.selectPath(xquery);
             while (cur.toNextSelection()) {
                 String uri = cur.getAttributeText(uriName);
@@ -699,8 +676,6 @@ public final class XSSFDrawing extends P
                     return true;
                 }
             }
-        } finally {
-            cur.dispose();
         }
         return false;
     }
@@ -709,13 +684,10 @@ public final class XSSFDrawing extends P
         XSSFAnchor anchor = null;
 
         XmlObject parentXbean = null;
-        XmlCursor cursor = obj.newCursor();
-        try {
+        try (XmlCursor cursor = obj.newCursor()) {
             if (cursor.toParent()) {
                 parentXbean = cursor.getObject();
             }
-        } finally {
-            cursor.dispose();
         }
         if (parentXbean != null) {
             if (parentXbean instanceof CTTwoCellAnchor) {

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFGraphicFrame.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFGraphicFrame.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFGraphicFrame.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFGraphicFrame.java
 Sun Jun 19 11:02:01 2022
@@ -192,13 +192,10 @@ public final class XSSFGraphicFrame exte
     private void appendChartElement(CTGraphicalObjectData data, String id) {
         String r_namespaceUri = 
STRelationshipId.type.getName().getNamespaceURI();
         String c_namespaceUri = XSSFDrawing.NAMESPACE_C;
-        XmlCursor cursor = data.newCursor();
-        try {
+        try (XmlCursor cursor = data.newCursor()) {
             cursor.toNextToken();
             cursor.beginElement(new QName(c_namespaceUri, "chart", "c"));
             cursor.insertAttributeWithValue(new QName(r_namespaceUri, "id", 
"r"), id);
-        } finally {
-            cursor.dispose();
         }
         data.setUri(c_namespaceUri);
     }

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFObjectData.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFObjectData.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFObjectData.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFObjectData.java
 Sun Jun 19 11:02:01 2022
@@ -82,14 +82,11 @@ public class XSSFObjectData extends XSSF
             // 
https://msdn.microsoft.com/en-us/library/dd911027(v=office.12).aspx
             CTOfficeArtExtension ext = extLst.addNewExt();
             ext.setUri("{63B3BB69-23CF-44E3-9099-C40C66FF867C}");
-            XmlCursor cur = ext.newCursor();
-            try {
+            try (XmlCursor cur = ext.newCursor()) {
                 cur.toEndToken();
                 cur.beginElement(new QName(drawNS, "compatExt", "a14"));
                 cur.insertNamespace("a14", drawNS);
                 cur.insertAttributeWithValue("spid", "_x0000_s1");
-            } finally {
-                cur.dispose();
             }
 
             nv.addNewCNvSpPr();
@@ -188,15 +185,12 @@ public class XSSFObjectData extends XSSF
 
     @Override
     public XSSFPictureData getPictureData() {
-        XmlCursor cur = getOleObject().newCursor();
-        try {
+        try (XmlCursor cur = getOleObject().newCursor()) {
             if (cur.toChild(XSSFRelation.NS_SPREADSHEETML, "objectPr")) {
                 String blipId = cur.getAttributeText(new 
QName(PackageRelationshipTypes.CORE_PROPERTIES_ECMA376_NS, "id"));
                 return (XSSFPictureData)getSheet().getRelationById(blipId);
             }
             return null;
-        } finally {
-            cur.dispose();
         }
     }
 

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java
 Sun Jun 19 11:02:01 2022
@@ -489,12 +489,9 @@ public class XSSFRichTextString implemen
             char firstChar = text.charAt(0);
             char lastChar  = text.charAt(text.length() - 1);
             if(Character.isWhitespace(firstChar) || 
Character.isWhitespace(lastChar)) {
-                XmlCursor c = xs.newCursor();
-                try {
+                try (XmlCursor c = xs.newCursor()) {
                     c.toNextToken();
                     c.insertAttributeWithValue(new 
QName("http://www.w3.org/XML/1998/namespace";, "space"), "preserve");
-                } finally {
-                    c.dispose();
                 }
             }
         }

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java 
(original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFSheet.java 
Sun Jun 19 11:02:01 2022
@@ -4725,8 +4725,7 @@ public class XSSFSheet extends POIXMLDoc
 
         // we use a XmlCursor here to handle oleObject with-/out 
AlternateContent wrappers
         String xquery = "declare namespace 
p='"+XSSFRelation.NS_SPREADSHEETML+"' .//p:oleObject";
-        XmlCursor cur = getCTWorksheet().getOleObjects().newCursor();
-        try {
+        try (XmlCursor cur = getCTWorksheet().getOleObjects().newCursor()) {
             cur.selectPath(xquery);
             CTOleObject coo = null;
             while (cur.toNextSelection()) {
@@ -4765,8 +4764,6 @@ public class XSSFSheet extends POIXMLDoc
                 }
             }
             return coo;
-        } finally {
-            cur.dispose();
         }
     }
 

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTableStyle.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTableStyle.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTableStyle.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTableStyle.java
 Sun Jun 19 11:02:01 2022
@@ -59,8 +59,7 @@ public class XSSFTableStyle implements T
         List<CTDxf> dxfList = new ArrayList<>();
 
         // CT* classes don't handle "mc:AlternateContent" elements, so get the 
Dxf instances manually
-        final XmlCursor cur = dxfs.newCursor();
-        try {
+        try (XmlCursor cur = dxfs.newCursor()) {
             // sometimes there are namespaces sometimes not.
             String xquery = "declare namespace 
x='"+XSSFRelation.NS_SPREADSHEETML+"' .//x:dxf | .//dxf";
             cur.selectPath(xquery);
@@ -82,8 +81,6 @@ public class XSSFTableStyle implements T
                     }
                 }
             }
-        } finally {
-            cur.dispose();
         }
 
         for (CTTableStyleElement element : 
tableStyle.getTableStyleElementList()) {

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java
 Sun Jun 19 11:02:01 2022
@@ -150,9 +150,7 @@ public final class XSSFVMLDrawing extend
             " xmlns=\""+NS_SPREADSHEETML+"\"", "")
             , xopt);
 
-        XmlCursor cur = root.getXml().newCursor();
-
-        try {
+        try (XmlCursor cur = root.getXml().newCursor()) {
             for (boolean found = cur.toFirstChild(); found; found = 
cur.toNextSibling()) {
                 XmlObject xo = cur.getObject();
                 if (xo instanceof CTShapetype) {
@@ -168,21 +166,16 @@ public final class XSSFVMLDrawing extend
                     }
                 }
             }
-        } finally {
-            cur.dispose();
         }
     }
 
     protected List<XmlObject> getItems(){
         List<XmlObject> items = new ArrayList<>();
 
-        XmlCursor cur = root.getXml().newCursor();
-        try {
+        try (XmlCursor cur = root.getXml().newCursor()) {
             for (boolean found = cur.toFirstChild(); found; found = 
cur.toNextSibling()) {
                 items.add(cur.getObject());
             }
-        } finally {
-            cur.dispose();
         }
 
         return items;
@@ -207,8 +200,7 @@ public final class XSSFVMLDrawing extend
      */
     private void newDrawing(){
         root = XmlDocument.Factory.newInstance();
-        final XmlCursor xml = root.addNewXml().newCursor();
-        try {
+        try (final XmlCursor xml = root.addNewXml().newCursor()) {
             ShapelayoutDocument layDoc = 
ShapelayoutDocument.Factory.newInstance();
             CTShapeLayout layout = layDoc.addNewShapelayout();
             layout.setExt(STExt.EDIT);
@@ -217,11 +209,8 @@ public final class XSSFVMLDrawing extend
             idmap.setData("1");
 
             xml.toEndToken();
-            final XmlCursor layCur = layDoc.newCursor();
-            try {
+            try (XmlCursor layCur = layDoc.newCursor()) {
                 layCur.copyXmlContents(xml);
-            } finally {
-                layCur.dispose();
             }
 
             CTGroup grp = CTGroup.Factory.newInstance();
@@ -237,16 +226,10 @@ public final class XSSFVMLDrawing extend
             path.setConnecttype(STConnectType.RECT);
 
             xml.toEndToken();
-            final XmlCursor grpCur = grp.newCursor();
-            try {
+            try (XmlCursor grpCur = grp.newCursor()) {
                 grpCur.copyXmlContents(xml);
-            } finally {
-                grpCur.dispose();
             }
-        } finally {
-            xml.dispose();
         }
-
     }
 
     /**
@@ -278,19 +261,13 @@ public final class XSSFVMLDrawing extend
         cldata.addNewRow().setBigIntegerValue(BigInteger.valueOf(0));
         cldata.addNewColumn().setBigIntegerValue(BigInteger.valueOf(0));
 
-        XmlCursor xml = root.getXml().newCursor();
-        try {
+        try (final XmlCursor xml = root.getXml().newCursor()){
             xml.toEndToken();
-            XmlCursor grpCur = grp.newCursor();
-            try {
+            try (final XmlCursor grpCur = grp.newCursor()){
                 grpCur.copyXmlContents(xml);
                 xml.toPrevSibling();
                 shape = (CTShape)xml.getObject();
-            } finally {
-                grpCur.dispose();
             }
-        } finally {
-            xml.dispose();
         }
 
         return shape;
@@ -302,16 +279,13 @@ public final class XSSFVMLDrawing extend
      * @return the comment shape or <code>null</code>
      */
     public CTShape findCommentShape(int row, int col){
-        XmlCursor cur = root.getXml().newCursor();
-        try {
+        try (final XmlCursor cur = root.getXml().newCursor()){
             for (boolean found = cur.toFirstChild(); found; found = 
cur.toNextSibling()) {
                 XmlObject itm = cur.getObject();
                 if (matchCommentShape(itm, row, col)) {
                     return (CTShape)itm;
                 }
             }
-        } finally {
-            cur.dispose();
         }
         return null;
     }
@@ -337,8 +311,7 @@ public final class XSSFVMLDrawing extend
     }
 
     protected boolean removeCommentShape(int row, int col){
-        XmlCursor cur = root.getXml().newCursor();
-        try {
+        try (final XmlCursor cur = root.getXml().newCursor()) {
             for (boolean found = cur.toFirstChild(); found; found = 
cur.toNextSibling()) {
                 XmlObject itm = cur.getObject();
                 if (matchCommentShape(itm, row, col)) {
@@ -346,8 +319,6 @@ public final class XSSFVMLDrawing extend
                     return true;
                 }
             }
-        } finally {
-            cur.dispose();
         }
         return false;
     }

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/helpers/XSSFPasswordHelper.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/helpers/XSSFPasswordHelper.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/helpers/XSSFPasswordHelper.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/helpers/XSSFPasswordHelper.java
 Sun Jun 19 11:02:01 2022
@@ -49,8 +49,7 @@ public final class XSSFPasswordHelper {
      * @param prefix the prefix of the password attributes, may be null
      */
     public static void setPassword(XmlObject xobj, String password, 
HashAlgorithm hashAlgo, String prefix) {
-        XmlCursor cur = xobj.newCursor();
-        try {
+        try (final XmlCursor cur = xobj.newCursor()) {
             if (password == null) {
                 cur.removeAttribute(getAttrName(prefix, "password"));
                 cur.removeAttribute(getAttrName(prefix, "algorithmName"));
@@ -84,8 +83,6 @@ public final class XSSFPasswordHelper {
                 cur.insertAttributeWithValue(getAttrName(prefix, "saltValue"), 
enc64.encodeToString(salt));
                 cur.insertAttributeWithValue(getAttrName(prefix, "spinCount"), 
""+spinCount);
             }
-        } finally {
-            cur.dispose();
         }
     }
 
@@ -103,9 +100,8 @@ public final class XSSFPasswordHelper {
     public static boolean validatePassword(XmlObject xobj, String password, 
String prefix) {
         // TODO: is "velvetSweatshop" the default password?
         if (password == null) return false;
-        
-        XmlCursor cur = xobj.newCursor();
-        try {
+
+        try (final XmlCursor cur = xobj.newCursor()) {
             String xorHashVal = cur.getAttributeText(getAttrName(prefix, 
"password"));
             String algoName = cur.getAttributeText(getAttrName(prefix, 
"algorithmName"));
             String hashVal = cur.getAttributeText(getAttrName(prefix, 
"hashValue"));
@@ -129,8 +125,6 @@ public final class XSSFPasswordHelper {
                 byte[] hash2 = CryptoFunctions.hashPassword(password, 
hashAlgo, salt, spinCnt, false);
                 return Arrays.equals(hash1, hash2);
             }
-        } finally {
-            cur.dispose();
         }
     }
     

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFComment.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFComment.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFComment.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFComment.java
 Sun Jun 19 11:02:01 2022
@@ -46,25 +46,25 @@ public class XWPFComment implements IBod
     }
 
     protected void init() {
-        XmlCursor cursor = ctComment.newCursor();
-        cursor.selectPath("./*");
-        while (cursor.toNextSelection()) {
-            XmlObject o = cursor.getObject();
-            if (o instanceof CTP) {
-                XWPFParagraph p = new XWPFParagraph((CTP) o, this);
-                bodyElements.add(p);
-                paragraphs.add(p);
-            } else if (o instanceof CTTbl) {
-                XWPFTable t = new XWPFTable((CTTbl) o, this);
-                bodyElements.add(t);
-                tables.add(t);
-            } else if (o instanceof CTSdtBlock) {
-                XWPFSDT c = new XWPFSDT((CTSdtBlock) o, this);
-                bodyElements.add(c);
-            }
+        try (XmlCursor cursor = ctComment.newCursor()) {
+            cursor.selectPath("./*");
+            while (cursor.toNextSelection()) {
+                XmlObject o = cursor.getObject();
+                if (o instanceof CTP) {
+                    XWPFParagraph p = new XWPFParagraph((CTP) o, this);
+                    bodyElements.add(p);
+                    paragraphs.add(p);
+                } else if (o instanceof CTTbl) {
+                    XWPFTable t = new XWPFTable((CTTbl) o, this);
+                    bodyElements.add(t);
+                    tables.add(t);
+                } else if (o instanceof CTSdtBlock) {
+                    XWPFSDT c = new XWPFSDT((CTSdtBlock) o, this);
+                    bodyElements.add(c);
+                }
 
+            }
         }
-        cursor.dispose();
     }
 
     /**
@@ -174,30 +174,29 @@ public class XWPFComment implements IBod
                 paragraphs.add(pos, newP);
             }
             int i = 0;
-            XmlCursor p2 = p.newCursor();
-            cursor.toCursor(p2);
-            p2.dispose();
+            try (XmlCursor p2 = p.newCursor()) {
+                cursor.toCursor(p2);
+            }
             while (cursor.toPrevSibling()) {
                 o = cursor.getObject();
                 if (o instanceof CTP || o instanceof CTTbl)
                     i++;
             }
             bodyElements.add(i, newP);
-            p2 = p.newCursor();
-            cursor.toCursor(p2);
-            cursor.toEndToken();
-            p2.dispose();
+            try (XmlCursor p2 = p.newCursor()) {
+                cursor.toCursor(p2);
+                cursor.toEndToken();
+            }
             return newP;
         }
         return null;
     }
 
     private boolean isCursorInCmt(XmlCursor cursor) {
-        XmlCursor verify = cursor.newCursor();
-        verify.toParent();
-        boolean result = (verify.getObject() == this.ctComment);
-        verify.dispose();
-        return result;
+        try (XmlCursor verify = cursor.newCursor()) {
+            verify.toParent();
+            return (verify.getObject() == this.ctComment);
+        }
     }
 
     @Override
@@ -221,19 +220,19 @@ public class XWPFComment implements IBod
                 tables.add(pos, newT);
             }
             int i = 0;
-            XmlCursor cursor2 = t.newCursor();
-            while (cursor2.toPrevSibling()) {
-                o = cursor2.getObject();
-                if (o instanceof CTP || o instanceof CTTbl) {
-                    i++;
+            try (XmlCursor cursor2 = t.newCursor()) {
+                while (cursor2.toPrevSibling()) {
+                    o = cursor2.getObject();
+                    if (o instanceof CTP || o instanceof CTTbl) {
+                        i++;
+                    }
                 }
             }
-            cursor2.dispose();
             bodyElements.add(i, newT);
-            cursor2 = t.newCursor();
-            cursor.toCursor(cursor2);
-            cursor.toEndToken();
-            cursor2.dispose();
+            try (XmlCursor cursor2 = t.newCursor()) {
+                cursor.toCursor(cursor2);
+                cursor.toEndToken();
+            }
             return newT;
         }
         return null;
@@ -257,19 +256,15 @@ public class XWPFComment implements IBod
     public XWPFTableCell getTableCell(CTTc cell) {
         XmlObject o;
         CTRow row;
-        final XmlCursor cursor = cell.newCursor();
-        try {
+        try (final XmlCursor cursor = cell.newCursor()) {
             cursor.toParent();
             o = cursor.getObject();
             if (!(o instanceof CTRow)) {
-                cursor.dispose();
                 return null;
             }
             row = (CTRow) o;
             cursor.toParent();
             o = cursor.getObject();
-        } finally {
-            cursor.dispose();
         }
         if (!(o instanceof CTTbl)) {
             return null;
@@ -314,9 +309,9 @@ public class XWPFComment implements IBod
     public void removeParagraph(XWPFParagraph paragraph) {
         if (paragraphs.contains(paragraph)) {
             CTP ctP = paragraph.getCTP();
-            XmlCursor c = ctP.newCursor();
-            c.removeXml();
-            c.dispose();
+            try (XmlCursor c = ctP.newCursor()) {
+                c.removeXml();
+            }
             paragraphs.remove(paragraph);
             bodyElements.remove(paragraph);
         }
@@ -325,17 +320,16 @@ public class XWPFComment implements IBod
     public void removeTable(XWPFTable table) {
         if (tables.contains(table)) {
             CTTbl ctTbl = table.getCTTbl();
-            XmlCursor c = ctTbl.newCursor();
-            c.removeXml();
-            c.dispose();
+            try (XmlCursor c = ctTbl.newCursor()) {
+                c.removeXml();
+            }
             tables.remove(table);
             bodyElements.remove(table);
         }
     }
 
     public XWPFTable createTable(int rows, int cols) {
-        XWPFTable table = new XWPFTable(ctComment.addNewTbl(), this, rows,
-                cols);
+        XWPFTable table = new XWPFTable(ctComment.addNewTbl(), this, rows, 
cols);
         tables.add(table);
         bodyElements.add(table);
         return table;

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java
 Sun Jun 19 11:02:01 2022
@@ -554,8 +554,7 @@ public abstract class XWPFHeaderFooter e
     public XWPFTableCell getTableCell(CTTc cell) {
         XmlObject o;
         CTRow row;
-        final XmlCursor cursor = cell.newCursor();
-        try {
+        try (XmlCursor cursor = cell.newCursor()) {
             cursor.toParent();
             o = cursor.getObject();
             if (!(o instanceof CTRow)) {
@@ -564,8 +563,6 @@ public abstract class XWPFHeaderFooter e
             row = (CTRow) o;
             cursor.toParent();
             o = cursor.getObject();
-        } finally {
-            cursor.dispose();
         }
         if (!(o instanceof CTTbl)) {
             return null;

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
 Sun Jun 19 11:02:01 2022
@@ -113,8 +113,7 @@ public class XWPFParagraph implements IB
      */
     @SuppressWarnings("deprecation")
     private void buildRunsInOrderFromXml(XmlObject object) {
-        XmlCursor c = object.newCursor();
-        try {
+        try (XmlCursor c = object.newCursor()) {
             c.selectPath("child::*");
             while (c.toNextSelection()) {
                 XmlObject o = c.getObject();
@@ -166,8 +165,6 @@ public class XWPFParagraph implements IB
                     }
                 }
             }
-        } finally {
-            c.dispose();
         }
     }
 

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java
 Sun Jun 19 11:02:01 2022
@@ -43,48 +43,48 @@ public class XWPFSDTContent implements I
         if (sdtRun == null) {
             return;
         }
-        XmlCursor cursor = sdtRun.newCursor();
-        cursor.selectPath("./*");
-        while (cursor.toNextSelection()) {
-            XmlObject o = cursor.getObject();
-            if (o instanceof CTR) {
-                XWPFRun run = new XWPFRun((CTR) o, parent);
-                bodyElements.add(run);
-            } else if (o instanceof CTSdtRun) {
-                XWPFSDT c = new XWPFSDT(((CTSdtRun) o), part);
-                bodyElements.add(c);
+        try (final XmlCursor cursor = sdtRun.newCursor()) {
+            cursor.selectPath("./*");
+            while (cursor.toNextSelection()) {
+                XmlObject o = cursor.getObject();
+                if (o instanceof CTR) {
+                    XWPFRun run = new XWPFRun((CTR) o, parent);
+                    bodyElements.add(run);
+                } else if (o instanceof CTSdtRun) {
+                    XWPFSDT c = new XWPFSDT(((CTSdtRun) o), part);
+                    bodyElements.add(c);
+                }
             }
         }
-        cursor.dispose();
     }
 
     public XWPFSDTContent(CTSdtContentBlock block, IBody part, IRunBody 
parent) {
         if (block == null) {
             return;
         }
-        XmlCursor cursor = block.newCursor();
-        cursor.selectPath("./*");
-        while (cursor.toNextSelection()) {
-            XmlObject o = cursor.getObject();
-            if (o instanceof CTP) {
-                XWPFParagraph p = new XWPFParagraph((CTP) o, part);
-                bodyElements.add(p);
-                // paragraphs.add(p);
-            } else if (o instanceof CTTbl) {
-                XWPFTable t = new XWPFTable((CTTbl) o, part);
-                bodyElements.add(t);
-                // tables.add(t);
-            } else if (o instanceof CTSdtBlock) {
-                XWPFSDT c = new XWPFSDT(((CTSdtBlock) o), part);
-                bodyElements.add(c);
-                // contentControls.add(c);
-            } else if (o instanceof CTR) {
-                XWPFRun run = new XWPFRun((CTR) o, parent);
-                // runs.add(run);
-                bodyElements.add(run);
+        try (final XmlCursor cursor = block.newCursor()) {
+            cursor.selectPath("./*");
+            while (cursor.toNextSelection()) {
+                XmlObject o = cursor.getObject();
+                if (o instanceof CTP) {
+                    XWPFParagraph p = new XWPFParagraph((CTP) o, part);
+                    bodyElements.add(p);
+                    // paragraphs.add(p);
+                } else if (o instanceof CTTbl) {
+                    XWPFTable t = new XWPFTable((CTTbl) o, part);
+                    bodyElements.add(t);
+                    // tables.add(t);
+                } else if (o instanceof CTSdtBlock) {
+                    XWPFSDT c = new XWPFSDT(((CTSdtBlock) o), part);
+                    bodyElements.add(c);
+                    // contentControls.add(c);
+                } else if (o instanceof CTR) {
+                    XWPFRun run = new XWPFRun((CTR) o, parent);
+                    // runs.add(run);
+                    bodyElements.add(run);
+                }
             }
         }
-        cursor.dispose();
     }
 
     @Override

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFSDTContentCell.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFSDTContentCell.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFSDTContentCell.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFSDTContentCell.java
 Sun Jun 19 11:02:01 2022
@@ -50,49 +50,47 @@ public class XWPFSDTContentCell implemen
             return;
         }
         StringBuilder sb = new StringBuilder();
-        XmlCursor cursor = sdtContentCell.newCursor();
+        try (final XmlCursor cursor = sdtContentCell.newCursor()) {
+            //keep track of the following,
+            //and add "\n" only before the start of a body
+            //element if it is not the first body element.
 
-        //keep track of the following,
-        //and add "\n" only before the start of a body
-        //element if it is not the first body element.
+            //index of cell in row
+            int tcCnt = 0;
+            //count of body objects
+            int iBodyCnt = 0;
+            int depth = 1;
 
-        //index of cell in row
-        int tcCnt = 0;
-        //count of body objects
-        int iBodyCnt = 0;
-        int depth = 1;
-
-        while (cursor.hasNextToken() && depth > 0) {
-            TokenType t = cursor.toNextToken();
-            if (t.isText()) {
-                sb.append(cursor.getTextValue());
-            } else if (isStartToken(cursor, "tr")) {
-                tcCnt = 0;
-                iBodyCnt = 0;
-            } else if (isStartToken(cursor, "tc")) {
-                if (tcCnt++ > 0) {
-                    sb.append("\t");
+            while (cursor.hasNextToken() && depth > 0) {
+                TokenType t = cursor.toNextToken();
+                if (t.isText()) {
+                    sb.append(cursor.getTextValue());
+                } else if (isStartToken(cursor, "tr")) {
+                    tcCnt = 0;
+                    iBodyCnt = 0;
+                } else if (isStartToken(cursor, "tc")) {
+                    if (tcCnt++ > 0) {
+                        sb.append("\t");
+                    }
+                    iBodyCnt = 0;
+                } else if (isStartToken(cursor, "p") ||
+                        isStartToken(cursor, "tbl") ||
+                        isStartToken(cursor, "sdt")) {
+                    if (iBodyCnt > 0) {
+                        sb.append("\n");
+                    }
+                    iBodyCnt++;
                 }
-                iBodyCnt = 0;
-            } else if (isStartToken(cursor, "p") ||
-                    isStartToken(cursor, "tbl") ||
-                    isStartToken(cursor, "sdt")) {
-                if (iBodyCnt > 0) {
-                    sb.append("\n");
+                if (cursor.isStart()) {
+                    depth++;
+                } else if (cursor.isEnd()) {
+                    depth--;
                 }
-                iBodyCnt++;
-            }
-            if (cursor.isStart()) {
-                depth++;
-            } else if (cursor.isEnd()) {
-                depth--;
             }
+            text = sb.toString();
         }
-        text = sb.toString();
-        cursor.dispose();
     }
 
-
     private boolean isStartToken(XmlCursor cursor, String string) {
         if (!cursor.isStart()) {
             return false;

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTableCell.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTableCell.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTableCell.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTableCell.java
 Sun Jun 19 11:02:01 2022
@@ -86,8 +86,7 @@ public class XWPFTableCell implements IB
         paragraphs = new ArrayList<>();
         tables = new ArrayList<>();
 
-        XmlCursor cursor = ctTc.newCursor();
-        try {
+        try (XmlCursor cursor = ctTc.newCursor()) {
             cursor.selectPath("./*");
             while (cursor.toNextSelection()) {
                 XmlObject o = cursor.getObject();
@@ -110,8 +109,6 @@ public class XWPFTableCell implements IB
                     bodyElements.add(c);
                 }
             }
-        } finally {
-            cursor.dispose();
         }
     }
 
@@ -279,11 +276,8 @@ public class XWPFTableCell implements IB
             paragraphs.add(pos, newP);
         }
         int i = 0;
-        final XmlCursor p2 = p.newCursor();
-        try {
+        try (XmlCursor p2 = p.newCursor()) {
             cursor.toCursor(p2);
-        } finally {
-            p2.dispose();
         }
         while (cursor.toPrevSibling()) {
             o = cursor.getObject();
@@ -291,11 +285,8 @@ public class XWPFTableCell implements IB
                 i++;
         }
         bodyElements.add(i, newP);
-        final XmlCursor p3 = p.newCursor();
-        try {
+        try (XmlCursor p3 = p.newCursor()) {
             cursor.toCursor(p3);
-        } finally {
-            p3.dispose();
         }
         cursor.toEndToken();
         return newP;
@@ -322,23 +313,17 @@ public class XWPFTableCell implements IB
                 tables.add(pos, newT);
             }
             int i = 0;
-            final XmlCursor cursor2 = t.newCursor();
-            try {
+            try (XmlCursor cursor2 = t.newCursor()) {
                 while (cursor2.toPrevSibling()) {
                     o = cursor2.getObject();
                     if (o instanceof CTP || o instanceof CTTbl)
                         i++;
                 }
-            } finally {
-                cursor2.dispose();
             }
             bodyElements.add(i, newT);
-            final XmlCursor cursor3 = t.newCursor();
-            try {
+            try (XmlCursor cursor3 = t.newCursor()) {
                 cursor.toCursor(cursor3);
                 cursor.toEndToken();
-            } finally {
-                cursor3.dispose();
             }
             return newT;
         }
@@ -349,13 +334,10 @@ public class XWPFTableCell implements IB
      * verifies that cursor is on the right position
      */
     private boolean isCursorInTableCell(XmlCursor cursor) {
-        XmlCursor verify = cursor.newCursor();
-        try {
+        try (XmlCursor verify = cursor.newCursor()) {
             verify.toParent();
             boolean result = (verify.getObject() == this.ctTc);
             return result;
-        } finally {
-            verify.dispose();
         }
     }
 
@@ -495,8 +477,7 @@ public class XWPFTableCell implements IB
     public XWPFTableCell getTableCell(CTTc cell) {
         XmlObject o;
         CTRow row;
-        final XmlCursor cursor = cell.newCursor();
-        try {
+        try (final XmlCursor cursor = cell.newCursor()) {
             cursor.toParent();
             o = cursor.getObject();
             if (!(o instanceof CTRow)) {
@@ -505,8 +486,6 @@ public class XWPFTableCell implements IB
             row = (CTRow) o;
             cursor.toParent();
             o = cursor.getObject();
-        } finally {
-            cursor.dispose();
         }
         if (!(o instanceof CTTbl)) {
             return null;

Modified: 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java
 Sun Jun 19 11:02:01 2022
@@ -180,8 +180,7 @@ public class XWPFTableRow {
         List<ICell> cells = new ArrayList<>();
         //Can't use ctRow.getTcList because that only gets table cells
         //Can't use ctRow.getSdtList because that only gets sdts that are at 
cell level
-        XmlCursor cursor = ctRow.newCursor();
-        try {
+        try (XmlCursor cursor = ctRow.newCursor()) {
             cursor.selectPath("./*");
             while (cursor.toNextSelection()) {
                 XmlObject o = cursor.getObject();
@@ -191,8 +190,6 @@ public class XWPFTableRow {
                     cells.add(new XWPFSDTCell((CTSdtCell) o, this, 
table.getBody()));
                 }
             }
-        } finally {
-            cursor.dispose();
         }
         return cells;
     }

Modified: 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFExamples.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFExamples.java?rev=1902057&r1=1902056&r2=1902057&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFExamples.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFExamples.java
 Sun Jun 19 11:02:01 2022
@@ -84,13 +84,12 @@ class TestXSLFExamples {
             ext.setUri("{DAA4B4D4-6D71-4841-9C94-3DE7FCFB9230}");
 
             String p14Ns = 
"http://schemas.microsoft.com/office/powerpoint/2010/main";;
-            XmlCursor cur = ext.newCursor();
-            cur.toEndToken();
-            cur.beginElement(new QName(p14Ns, "media", "p14"));
-            cur.insertNamespace("p14", p14Ns);
-            cur.insertAttributeWithValue(new QName(CORE_PROPERTIES_ECMA376_NS, 
"link"), prsEmbed1.getId());
-            cur.dispose();
-
+            try (XmlCursor cur = ext.newCursor()) {
+                cur.toEndToken();
+                cur.beginElement(new QName(p14Ns, "media", "p14"));
+                cur.insertNamespace("p14", p14Ns);
+                cur.insertAttributeWithValue(new 
QName(CORE_PROPERTIES_ECMA376_NS, "link"), prsEmbed1.getId());
+            }
 
             CTSlide xslide = slide1.getXmlObject();
             CTTimeNodeList ctnl;



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

Reply via email to