Modified: xmlbeans/trunk/src/test/java/xmlcursor/checkin/StoreTests.java
URL: 
http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/checkin/StoreTests.java?rev=1896764&r1=1896763&r2=1896764&view=diff
==============================================================================
--- xmlbeans/trunk/src/test/java/xmlcursor/checkin/StoreTests.java (original)
+++ xmlbeans/trunk/src/test/java/xmlcursor/checkin/StoreTests.java Thu Jan  6 
17:54:30 2022
@@ -42,7 +42,10 @@ public class StoreTests {
     private void streamTest(String xml)
         throws Exception {
         XmlObject x1 = XmlObject.Factory.parse(xml);
-        XmlObject x2 = 
XmlObject.Factory.parse(x1.newCursor().newXMLStreamReader());
+        XmlObject x2;
+        try (XmlCursor c = x1.newCursor()) {
+            x2 = XmlObject.Factory.parse(c.newXMLStreamReader());
+        }
 
         String x1Text = x1.xmlText();
         String x2Text = x2.xmlText();
@@ -79,23 +82,25 @@ public class StoreTests {
 
         xDst = XmlObject.Factory.parse("<bar/>");
         xSrc = XmlObject.Factory.parse("<foo/>");
-        XmlCursor c = xDst.newCursor();
-        c.toNextToken();
-        xDst = c.getObject();
-        xDst.set(xSrc);
-        c.toStartDoc();
-        xDst = c.getObject();
+        try (XmlCursor c = xDst.newCursor()) {
+            c.toNextToken();
+            xDst = c.getObject();
+            xDst.set(xSrc);
+            c.toStartDoc();
+            xDst = c.getObject();
+        }
         assertEquals("<bar><foo/></bar>", xDst.xmlText());
 
         xDst = XmlObject.Factory.parse("<bar x='y'/>");
         xSrc = XmlObject.Factory.parse("<foo>moo</foo>");
-        c = xDst.newCursor();
-        c.toNextToken();
-        c.toNextToken();
-        xDst = c.getObject();
-        xDst.set(xSrc);
-        c.toStartDoc();
-        xDst = c.getObject();
+        try (XmlCursor c = xDst.newCursor()) {
+            c.toNextToken();
+            c.toNextToken();
+            xDst = c.getObject();
+            xDst.set(xSrc);
+            c.toStartDoc();
+            xDst = c.getObject();
+        }
         assertEquals("<bar x=\"moo\"/>", xDst.xmlText());
     }
 
@@ -129,16 +134,17 @@ public class StoreTests {
     @Test
     public void testCursorStack() throws Exception {
         XmlObject x = XmlObject.Factory.parse("<foo x='y'/>");
-        XmlCursor c = x.newCursor();
-        c.push();
-        c.toNextToken();
-        c.push();
-        c.toNextToken();
-        assertTrue(c.isAttr());
-        c.pop();
-        assertTrue(c.isStart());
-        c.pop();
-        assertTrue(c.isStartdoc());
+        try (XmlCursor c = x.newCursor()) {
+            c.push();
+            c.toNextToken();
+            c.push();
+            c.toNextToken();
+            assertTrue(c.isAttr());
+            c.pop();
+            assertTrue(c.isStart());
+            c.pop();
+            assertTrue(c.isStartdoc());
+        }
     }
 
     @Test
@@ -152,13 +158,13 @@ public class StoreTests {
         options.setSaveImplicitNamespaces(namespaces);
 
         XmlObject x = XmlObject.Factory.newInstance();
-        XmlCursor c = x.newCursor();
-
-        c.toNextToken();
+        try (XmlCursor c = x.newCursor()) {
+            c.toNextToken();
 
-        c.beginElement("a", "foo.com");
-        c.beginElement("b", "default.com");
-        c.beginElement("c", "bar.com");
+            c.beginElement("a", "foo.com");
+            c.beginElement("b", "default.com");
+            c.beginElement("c", "bar.com");
+        }
 
         assertEquals("<foo:a><b><bar:c/></b></foo:a>", x.xmlText(options));
     }
@@ -383,39 +389,39 @@ public class StoreTests {
         int line = 1;
         int col = 1;
 
-        XmlCursor c =
-            XmlObject.Factory.parse(
+        try (XmlCursor c = XmlObject.Factory.parse(
                 xml, new XmlOptions().setLoadLineNumbers()).
-                newCursor();
+                newCursor()) {
 
-        for (int i = 0; i < xml.length(); i++) {
-            char ch = xml.charAt(i);
+            for (int i = 0; i < xml.length(); i++) {
+                char ch = xml.charAt(i);
 
-            if (ch == '<' && Character.isLetter(xml.charAt(i + 1))) {
-                while (!c.currentTokenType().isStart()) {
-                    c.toNextToken();
-                }
+                if (ch == '<' && Character.isLetter(xml.charAt(i + 1))) {
+                    while (!c.currentTokenType().isStart()) {
+                        c.toNextToken();
+                    }
 
-                assertTrue(c.currentTokenType().isStart());
+                    assertTrue(c.currentTokenType().isStart());
 
-                XmlLineNumber ln =
-                    (XmlLineNumber)
-                        c.getBookmark(XmlLineNumber.class);
+                    XmlLineNumber ln =
+                        (XmlLineNumber)
+                            c.getBookmark(XmlLineNumber.class);
 
-                assertNotNull(ln);
+                    assertNotNull(ln);
 
-                assertTrue(ln.getLine() == -1 || ln.getLine() == line);
-                assertTrue(ln.getColumn() == -1 || ln.getColumn() == col);
-                assertTrue(ln.getOffset() == -1 || ln.getOffset() == i);
+                    assertTrue(ln.getLine() == -1 || ln.getLine() == line);
+                    assertTrue(ln.getColumn() == -1 || ln.getColumn() == col);
+                    assertTrue(ln.getOffset() == -1 || ln.getOffset() == i);
 
-                c.toNextToken();
-            }
+                    c.toNextToken();
+                }
 
-            if (ch == '\n') {
-                line++;
-                col = 1;
-            } else {
-                col++;
+                if (ch == '\n') {
+                    line++;
+                    col = 1;
+                } else {
+                    col++;
+                }
             }
         }
     }
@@ -714,74 +720,76 @@ public class StoreTests {
         throws Exception {
         XmlObject x = XmlObject.Factory.parse("<foo 
x='y'>abcdefg<!---->xy</foo>");
 
-        XmlCursor c = x.newCursor();
-        MyMark m1 = new MyMark();
-        c.setBookmark(m1);
-
-        c.toNextToken();
-        MyMark m2 = new MyMark();
-        c.setBookmark(m2);
-
-        c.toNextToken();
-        MyMark m3 = new MyMark();
-        c.setBookmark(m3);
-
-        c.toNextToken();
-        MyMark m4 = new MyMark();
-        c.setBookmark(m4);
-
-        c.toNextChar(1);
-        MyMark m5 = new MyMark();
-        c.setBookmark(m5);
-
-        c.toNextChar(3);
-        MyMark m6 = new MyMark();
-        c.setBookmark(m6);
-
-        c.toNextToken();
-        c.toNextToken();
-        c.toNextToken();
-        MyMark m7 = new MyMark();
-        c.setBookmark(m7);
-
-        c.toNextToken();
-        MyMark m8 = new MyMark();
-        c.setBookmark(m8);
-
-        c.toStartDoc();
-
-        assertSame(c.getBookmark(MyMark.class), m1);
-        assertSame(c.toNextBookmark(MyMark.class), m2);
-        assertSame(c.toNextBookmark(MyMark.class), m3);
-        assertSame(c.toNextBookmark(MyMark.class), m4);
-        assertSame(c.toNextBookmark(MyMark.class), m5);
-        assertSame(c.toNextBookmark(MyMark.class), m6);
-        assertSame(c.toNextBookmark(MyMark.class), m7);
-        assertSame(c.toNextBookmark(MyMark.class), m8);
-        assertNull(c.toNextBookmark(MyMark.class));
-
-        c.toEndDoc();
-
-        assertSame(c.getBookmark(MyMark.class), m8);
-        assertSame(c.toPrevBookmark(MyMark.class), m7);
-        assertSame(c.toPrevBookmark(MyMark.class), m6);
-        assertSame(c.toPrevBookmark(MyMark.class), m5);
-        assertSame(c.toPrevBookmark(MyMark.class), m4);
-        assertSame(c.toPrevBookmark(MyMark.class), m3);
-        assertSame(c.toPrevBookmark(MyMark.class), m2);
-        assertSame(c.toPrevBookmark(MyMark.class), m1);
-        assertNull(c.toPrevBookmark(MyMark.class));
+        try (XmlCursor c = x.newCursor()) {
+            MyMark m1 = new MyMark();
+            c.setBookmark(m1);
+
+            c.toNextToken();
+            MyMark m2 = new MyMark();
+            c.setBookmark(m2);
+
+            c.toNextToken();
+            MyMark m3 = new MyMark();
+            c.setBookmark(m3);
+
+            c.toNextToken();
+            MyMark m4 = new MyMark();
+            c.setBookmark(m4);
+
+            c.toNextChar(1);
+            MyMark m5 = new MyMark();
+            c.setBookmark(m5);
+
+            c.toNextChar(3);
+            MyMark m6 = new MyMark();
+            c.setBookmark(m6);
+
+            c.toNextToken();
+            c.toNextToken();
+            c.toNextToken();
+            MyMark m7 = new MyMark();
+            c.setBookmark(m7);
+
+            c.toNextToken();
+            MyMark m8 = new MyMark();
+            c.setBookmark(m8);
+
+            c.toStartDoc();
+
+            assertSame(c.getBookmark(MyMark.class), m1);
+            assertSame(c.toNextBookmark(MyMark.class), m2);
+            assertSame(c.toNextBookmark(MyMark.class), m3);
+            assertSame(c.toNextBookmark(MyMark.class), m4);
+            assertSame(c.toNextBookmark(MyMark.class), m5);
+            assertSame(c.toNextBookmark(MyMark.class), m6);
+            assertSame(c.toNextBookmark(MyMark.class), m7);
+            assertSame(c.toNextBookmark(MyMark.class), m8);
+            assertNull(c.toNextBookmark(MyMark.class));
+
+            c.toEndDoc();
+
+            assertSame(c.getBookmark(MyMark.class), m8);
+            assertSame(c.toPrevBookmark(MyMark.class), m7);
+            assertSame(c.toPrevBookmark(MyMark.class), m6);
+            assertSame(c.toPrevBookmark(MyMark.class), m5);
+            assertSame(c.toPrevBookmark(MyMark.class), m4);
+            assertSame(c.toPrevBookmark(MyMark.class), m3);
+            assertSame(c.toPrevBookmark(MyMark.class), m2);
+            assertSame(c.toPrevBookmark(MyMark.class), m1);
+            assertNull(c.toPrevBookmark(MyMark.class));
+        }
     }
 
     @Test
     public void testSetName()
         throws Exception {
         XmlObject x = XmlObject.Factory.parse("<foo x='a'/>");
-        XmlCursor c = x.newCursor();
-        c.toNextToken();
-        c.setName(new QName("bar"));
-        c.toNextToken();
-        c.setName(new QName("y"));
+        try (XmlCursor c = x.newCursor()) {
+            c.toNextToken();
+            c.setName(new QName("bar"));
+            c.toNextToken();
+            c.setName(new QName("y"));
+        }
 
         assertEquals("<bar y=\"a\"/>", x.xmlText());
     }
@@ -792,21 +800,21 @@ public class StoreTests {
     @Test
     public void testBasicXml()
         throws Exception {
-        XmlCursor c = XmlObject.Factory.parse(Common.XML_ATTR_TEXT, 
null).newCursor();
-
-        int n = 0;
+        try (XmlCursor c = XmlObject.Factory.parse(Common.XML_ATTR_TEXT, 
null).newCursor()) {
+            int n = 0;
 
-        for (; ; ) {
-            TokenType t = c.toNextToken();
+            for (; ; ) {
+                TokenType t = c.toNextToken();
 
-            n++;
+                n++;
 
-            if (t == TokenType.NONE) {
-                break;
+                if (t == TokenType.NONE) {
+                    break;
+                }
             }
-        }
 
-        assertEquals(6, n);
+            assertEquals(6, n);
+        }
     }
 
     //
@@ -818,24 +826,23 @@ public class StoreTests {
         throws Exception {
         ArrayList<TokenType> l = new ArrayList<>();
 
-        XmlCursor c = XmlObject.Factory.parse(Common.XML_ATTR_TEXT, 
null).newCursor();
-
-
-        do {
-            // System.err.println(c.currentTokenType());
-            l.add(c.currentTokenType());
+        try (XmlCursor c = XmlObject.Factory.parse(Common.XML_ATTR_TEXT, 
null).newCursor()) {
+            do {
+                // System.err.println(c.currentTokenType());
+                l.add(c.currentTokenType());
 
-        } while (c.toNextToken() != TokenType.NONE);
+            } while (c.toNextToken() != TokenType.NONE);
 
-        c.toEndDoc();
-        // System.err.println("Reversing");
+            c.toEndDoc();
+            // System.err.println("Reversing");
 
-        for (int i = l.size() - 1; ; i--) {
-            // System.err.println(c.currentTokenType());
-            assertEquals(l.get(i), c.currentTokenType());
+            for (int i = l.size() - 1; ; i--) {
+                // System.err.println(c.currentTokenType());
+                assertEquals(l.get(i), c.currentTokenType());
 
-            if (c.toPrevToken() == TokenType.NONE) {
-                break;
+                if (c.toPrevToken() == TokenType.NONE) {
+                    break;
+                }
             }
         }
     }
@@ -845,34 +852,36 @@ public class StoreTests {
     @Test(expected = IllegalStateException.class)
     public void testIllegalTextInsert()
         throws Exception {
-        XmlCursor c = XmlObject.Factory.parse(Common.XML_ATTR_TEXT, 
null).newCursor();
-        c.insertChars("Ho ho ho");
+        try (XmlCursor c = XmlObject.Factory.parse(Common.XML_ATTR_TEXT, 
null).newCursor()) {
+            c.insertChars("Ho ho ho");
+        }
     }
 
     // Make sure getText works in a basic way
     @Test
     public void testgetText()
         throws Exception {
-        XmlCursor c = XmlObject.Factory.parse(Common.XML_ATTR_TEXT, 
null).newCursor();
-        assertEquals("ab", c.getTextValue()); // Doc node
+        try (XmlCursor c = XmlObject.Factory.parse(Common.XML_ATTR_TEXT, 
null).newCursor()) {
+            assertEquals("ab", c.getTextValue()); // Doc node
 
-        c.toNextToken();
-        assertEquals("ab", c.getTextValue()); // Doc elem
+            c.toNextToken();
+            assertEquals("ab", c.getTextValue()); // Doc elem
 
-        c.toNextToken();
-        assertEquals("y", c.getTextValue()); // Attr x
+            c.toNextToken();
+            assertEquals("y", c.getTextValue()); // Attr x
 
-        c.toNextToken();
-        assertEquals("ab", c.getChars()); // Text
+            c.toNextToken();
+            assertEquals("ab", c.getChars()); // Text
 
-        c.toNextChar(1);
-        assertEquals("b", c.getChars()); // Text
+            c.toNextChar(1);
+            assertEquals("b", c.getChars()); // Text
 
-        c.toNextToken();
-        assertEquals(0, c.getChars().length());       // End tag
+            c.toNextToken();
+            assertEquals(0, c.getChars().length());       // End tag
 
-        c.toNextToken();
-        assertEquals(0, c.getChars().length());       // End doc
+            c.toNextToken();
+            assertEquals(0, c.getChars().length());       // End doc
+        }
     }
 
     //
@@ -880,8 +889,9 @@ public class StoreTests {
     //
 
     private void doSaverTest(String xml) throws Exception {
-        XmlCursor c = XmlObject.Factory.parse(xml).newCursor();
-        assertEquals(xml, c.xmlText());
+        try (XmlCursor c = XmlObject.Factory.parse(xml).newCursor()) {
+            assertEquals(xml, c.xmlText());
+        }
     }
 
     private void doSaveTest(String xml) throws Exception {
@@ -894,8 +904,9 @@ public class StoreTests {
         String xml = "<foo>Unable to render embedded object: 
<![CDATA[>>>>>>>><<<<<<<<<<<]]></foo>";
         String expected = "<foo><![CDATA[Unable to render embedded object: 
>>>>>>>><<<<<<<<<<<]]></foo>";
         XmlOptions options = new XmlOptions().setSaveCDataLengthThreshold(0);
-        XmlCursor c = XmlObject.Factory.parse(xml, options).newCursor();
-        assertEquals(expected, c.xmlText(options));
+        try (XmlCursor c = XmlObject.Factory.parse(xml, options).newCursor()) {
+            assertEquals(expected, c.xmlText(options));
+        }
     }
 
     @Test
@@ -915,21 +926,21 @@ public class StoreTests {
         XmlObject x =
             XmlObject.Factory.parse("<foo xmlns:a='a.com'><bar 
xmlns:a='b.com'/></foo>");
 
-        XmlCursor c = x.newCursor();
+        try (XmlCursor c = x.newCursor()) {
+            c.toFirstChild();
+            c.toFirstChild();
 
-        c.toFirstChild();
-        c.toFirstChild();
+            assertEquals("<bar xmlns:a=\"b.com\"/>", c.xmlText());
 
-        assertEquals("<bar xmlns:a=\"b.com\"/>", c.xmlText());
-
-        x = XmlObject.Factory.parse("<foo xmlns:a='a.com'><bar/></foo>");
-
-        c = x.newCursor();
+            x = XmlObject.Factory.parse("<foo xmlns:a='a.com'><bar/></foo>");
+        }
 
-        c.toFirstChild();
-        c.toFirstChild();
+        try (XmlCursor c = x.newCursor()) {
+            c.toFirstChild();
+            c.toFirstChild();
 
-        assertEquals("<bar xmlns:a=\"a.com\"/>", c.xmlText());
+            assertEquals("<bar xmlns:a=\"a.com\"/>", c.xmlText());
+        }
     }
 
 
@@ -1035,17 +1046,17 @@ public class StoreTests {
     public void testOps()
         throws Exception {
         XmlObject x, x2, y;
-        XmlCursor cFrom, cTo, cTemp, cTemp2, c, d;
         XmlBookmark anno;
 
         //
 
         x = XmlObject.Factory.parse("<foo>abcdef</foo>");
-        cFrom = navDoc(x, "d");
-        cTo = navNewCursor(cFrom, "");
-        assertTrue(cFrom.moveXml(cTo));
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
+        try (XmlCursor cFrom = navDoc(x, "d");
+            XmlCursor cTo = navNewCursor(cFrom, "")) {
+            assertTrue(cFrom.moveXml(cTo));
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+        }
 
         XmlOptions options = new XmlOptions();
 
@@ -1059,11 +1070,12 @@ public class StoreTests {
 
         x = XmlObject.Factory.parse("<foo>abcdef</foo>");
 
-        cFrom = navDoc(x, "d");
-        cTo = navNewCursor(cFrom, "ttt");
-        assertTrue(cFrom.moveXml(cTo));
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
+        try (XmlCursor cFrom = navDoc(x, "d");
+            XmlCursor cTo = navNewCursor(cFrom, "ttt")) {
+            assertTrue(cFrom.moveXml(cTo));
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+        }
 
         assertTrue(
             
x.xmlText(options).equals("<bar><foo>abcdef</foo>[FROM][TO]</bar>") ||
@@ -1073,11 +1085,12 @@ public class StoreTests {
 
         x = XmlObject.Factory.parse("<foo>abcdef</foo>");
 
-        cFrom = navDoc(x, "d");
-        cTo = navNewCursor(cFrom, "t3c");
-        assertFalse(cFrom.moveXml(cTo));
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
+        try (XmlCursor cFrom = navDoc(x, "d");
+            XmlCursor cTo = navNewCursor(cFrom, "t3c")) {
+            assertFalse(cFrom.moveXml(cTo));
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+        }
 
         assertEquals("<bar>[FROM]<foo>abc[TO]def</foo></bar>", 
x.xmlText(options));
 
@@ -1085,11 +1098,12 @@ public class StoreTests {
 
         x = XmlObject.Factory.parse("<r><a>xyz</a><b>pqr</b></r>");
 
-        cFrom = navDoc(x, "dd");
-        cTo = navNewCursor(cFrom, "r-1t");
-        assertTrue(cFrom.moveXml(cTo));
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
+        try (XmlCursor cFrom = navDoc(x, "dd");
+            XmlCursor cTo = navNewCursor(cFrom, "r-1t")) {
+            assertTrue(cFrom.moveXml(cTo));
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+        }
 
         assertEquals("<r>[FROM]<b>pqr</b><a>xyz</a>[TO]</r>", x.xmlText());
 
@@ -1097,11 +1111,12 @@ public class StoreTests {
 
         x = XmlObject.Factory.parse("<r><a>xyz</a><b>pqr</b>AB</r>");
 
-        cFrom = navDoc(x, "dd");
-        cTo = navNewCursor(cFrom, "r-1t-1c");
-        assertTrue(cFrom.moveXml(cTo));
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
+        try (XmlCursor cFrom = navDoc(x, "dd");
+            XmlCursor cTo = navNewCursor(cFrom, "r-1t-1c")) {
+            assertTrue(cFrom.moveXml(cTo));
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+        }
 
         assertEquals("<r>[FROM]<b>pqr</b>A<a>xyz</a>[TO]B</r>", x.xmlText());
 
@@ -1109,11 +1124,12 @@ public class StoreTests {
 
         x = XmlObject.Factory.parse("<r><a>xyz</a><b>pqr</b>AB</r>");
 
-        cFrom = navDoc(x, "dd");
-        cTo = navNewCursor(cFrom, "stc");
-        assertTrue(cFrom.moveXml(cTo));
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
+        try (XmlCursor cFrom = navDoc(x, "dd");
+            XmlCursor cTo = navNewCursor(cFrom, "stc")) {
+            assertTrue(cFrom.moveXml(cTo));
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+        }
 
         assertEquals("<r>[FROM]<b>p<a>xyz</a>[TO]qr</b>AB</r>", x.xmlText());
 
@@ -1121,11 +1137,12 @@ public class StoreTests {
 
         x = XmlObject.Factory.parse("<r><a>xyz</a><b>pqr</b>AB</r>");
 
-        cFrom = navDoc(x, "dd");
-        cTo = navDoc(x, "d");
-        assertTrue(cFrom.moveXml(cTo));
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
+        try (XmlCursor cFrom = navDoc(x, "dd");
+            XmlCursor cTo = navDoc(x, "d")) {
+            assertTrue(cFrom.moveXml(cTo));
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+        }
 
         testTextFrag(x.xmlText(), "<a>xyz</a>[TO]<r>[FROM]<b>pqr</b>AB</r>");
 
@@ -1133,11 +1150,12 @@ public class StoreTests {
 
         x = XmlObject.Factory.parse("<r><a>xyz</a><b>pqr</b>AB</r>");
 
-        cFrom = navDoc(x, "dd");
-        cTo = navDoc(x, "r");
-        assertTrue(cFrom.moveXml(cTo));
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
+        try (XmlCursor cFrom = navDoc(x, "dd");
+            XmlCursor cTo = navDoc(x, "r")) {
+            assertTrue(cFrom.moveXml(cTo));
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+        }
 
         assertEquals("<bar><r>[FROM]<b>pqr</b>AB</r><a>xyz</a>[TO]</bar>", 
x.xmlText(options));
 
@@ -1146,11 +1164,12 @@ public class StoreTests {
         x = XmlObject.Factory.parse("<r><a>xyz</a></r>");
         x2 = XmlObject.Factory.parse("<s></s>");
 
-        cFrom = navDoc(x, "dd");
-        cTo = navDoc(x2, "dt");
-        assertTrue(cFrom.moveXml(cTo));
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
+        try (XmlCursor cFrom = navDoc(x, "dd");
+            XmlCursor cTo = navDoc(x2, "dt")) {
+            assertTrue(cFrom.moveXml(cTo));
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+        }
 
         assertEquals("<r>[FROM]</r>", x.xmlText());
         assertEquals("<s><a>xyz</a>[TO]</s>", x2.xmlText());
@@ -1159,13 +1178,14 @@ public class StoreTests {
 
         x = XmlObject.Factory.parse("<r><a>pq</a><b></b></r>");
 
-        cFrom = navDoc(x, "dd");
-        cTo = navDoc(x, "ddst");
-        cTemp = navDoc(x, "ddt1c");
-        assertTrue(cFrom.moveXml(cTo));
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
-        cTemp.insertChars("[TEMP]");
+        try (XmlCursor cFrom = navDoc(x, "dd");
+            XmlCursor cTo = navDoc(x, "ddst");
+            XmlCursor cTemp = navDoc(x, "ddt1c")) {
+            assertTrue(cFrom.moveXml(cTo));
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+            cTemp.insertChars("[TEMP]");
+        }
 
         assertEquals("<r>[FROM][TEMP]<b><a>pq</a>[TO]</b></r>", x.xmlText());
 
@@ -1173,11 +1193,12 @@ public class StoreTests {
 
         x = XmlObject.Factory.parse("<foo>abcdef</foo>");
 
-        cFrom = navDoc(x, "2t2c");
-        cTo = navNewCursor(cFrom, "-1c");
-        cFrom.moveChars(2, cTo);
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
+        try (XmlCursor cFrom = navDoc(x, "2t2c");
+            XmlCursor cTo = navNewCursor(cFrom, "-1c")) {
+            cFrom.moveChars(2, cTo);
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+        }
 
         assertEquals("<foo>acd[TO]b[FROM]ef</foo>", x.xmlText());
 
@@ -1185,11 +1206,12 @@ public class StoreTests {
 
         x = XmlObject.Factory.parse("<foo>abcdef</foo>");
 
-        cFrom = navDoc(x, "2t2c");
-        cTo = navNewCursor(cFrom, "3c");
-        cFrom.moveChars(2, cTo);
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
+        try (XmlCursor cFrom = navDoc(x, "2t2c");
+            XmlCursor cTo = navNewCursor(cFrom, "3c")) {
+            cFrom.moveChars(2, cTo);
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+        }
 
         assertEquals("<foo>ab[FROM]ecd[TO]f</foo>", x.xmlText());
 
@@ -1197,11 +1219,12 @@ public class StoreTests {
 
         x = 
XmlObject.Factory.parse("<bar><foo>abcdef</foo><foo>123456</foo></bar>");
 
-        cFrom = navDoc(x, "3t2c");
-        cTo = navNewCursor(cFrom, "3t3c");
-        cFrom.moveChars(2, cTo);
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
+        try (XmlCursor cFrom = navDoc(x, "3t2c");
+            XmlCursor cTo = navNewCursor(cFrom, "3t3c")) {
+            cFrom.moveChars(2, cTo);
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+        }
 
         
assertEquals("<bar><foo>ab[FROM]ef</foo><foo>123cd[TO]456</foo></bar>", 
x.xmlText());
 
@@ -1209,11 +1232,12 @@ public class StoreTests {
 
         x = 
XmlObject.Factory.parse("<bar><foo>abcdef</foo><foo>123456</foo></bar>");
 
-        cFrom = navDoc(x, "2d");
-        cTo = navDoc(x, "2dst2c");
-        assertTrue(cFrom.copyXml(cTo));
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
+        try (XmlCursor cFrom = navDoc(x, "2d");
+            XmlCursor cTo = navDoc(x, "2dst2c")) {
+            assertTrue(cFrom.copyXml(cTo));
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+        }
 
         assertEquals(x.xmlText(),
             "<bar>[FROM]<foo>abcdef</foo><foo>12" +
@@ -1224,11 +1248,12 @@ public class StoreTests {
         x = XmlObject.Factory.parse("<r><a>xyz</a></r>");
         x2 = XmlObject.Factory.parse("<s></s>");
 
-        cFrom = navDoc(x, "dd");
-        cTo = navDoc(x2, "dt");
-        assertTrue(cFrom.copyXml(cTo));
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
+        try (XmlCursor cFrom = navDoc(x, "dd");
+            XmlCursor cTo = navDoc(x2, "dt")) {
+            assertTrue(cFrom.copyXml(cTo));
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+        }
 
         assertEquals("<r>[FROM]<a>xyz</a></r>", x.xmlText());
         assertEquals("<s><a>xyz</a>[TO]</s>", x2.xmlText());
@@ -1238,11 +1263,12 @@ public class StoreTests {
         x = XmlObject.Factory.parse(
             "<bar><foo>abcdef</foo>blah<foo>123456</foo></bar>");
 
-        cFrom = navDoc(x, "2d");
-        cTo = navDoc(x, "2dst2c");
-        assertTrue(cFrom.copyXml(cTo));
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
+        try (XmlCursor cFrom = navDoc(x, "2d");
+            XmlCursor cTo = navDoc(x, "2dst2c")) {
+            assertTrue(cFrom.copyXml(cTo));
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+        }
 
         assertEquals(x.xmlText(), "<bar>[FROM]<foo>abcdef</foo>blah<foo>12" +
                                   "<foo>abcdef</foo>[TO]3456</foo></bar>");
@@ -1252,13 +1278,14 @@ public class StoreTests {
         x = XmlObject.Factory.parse(
             "<bar><foo x='y'>abcdef</foo><foo>123456</foo>7890</bar>");
 
-        cFrom = navDoc(x, "2dt");
-        cTo = navDoc(x, "2dst");
-        cTemp = navDoc(x, "2dst3c");
-        cTemp2 = navDoc(x, "2ds3t2c");
-        assertTrue(cFrom.copyXml(cTo));
-        cTemp.insertChars("[TEMP]");
-        cTemp2.insertChars("[TEMP2]");
+        try (XmlCursor cFrom = navDoc(x, "2dt");
+            XmlCursor cTo = navDoc(x, "2dst");
+            XmlCursor cTemp = navDoc(x, "2dst3c");
+            XmlCursor cTemp2 = navDoc(x, "2ds3t2c")) {
+            assertTrue(cFrom.copyXml(cTo));
+            cTemp.insertChars("[TEMP]");
+            cTemp2.insertChars("[TEMP2]");
+        }
 
         assertEquals(x.xmlText(),
             "<bar><foo x=\"y\">abcdef</foo>" +
@@ -1269,13 +1296,13 @@ public class StoreTests {
         x = XmlObject.Factory.parse(
             "<bar>xy<foo x='y'>abcdef</foo>pqr<foo>123456</foo></bar>");
 
-        cFrom = navDoc(x, "2d");
-        cTo = navDoc(x, "2ds-2c");
-
-        assertTrue(cFrom.removeXml());
+        try (XmlCursor cFrom = navDoc(x, "2d");
+            XmlCursor cTo = navDoc(x, "2ds-2c")) {
+            assertTrue(cFrom.removeXml());
 
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+        }
 
         assertEquals("<bar>xy[FROM]p[TO]qr<foo>123456</foo></bar>", 
x.xmlText());
 
@@ -1284,13 +1311,13 @@ public class StoreTests {
         x = XmlObject.Factory.parse(
             "<bar>xy<foo x='y'>abcdef</foo>pqr<foo>123456</foo></bar>");
 
-        cFrom = navDoc(x, "2d2t2c");
-        cTo = navDoc(x, "2d2t5c");
-
-        cFrom.removeChars(2);
+        try (XmlCursor cFrom = navDoc(x, "2d2t2c");
+            XmlCursor cTo = navDoc(x, "2d2t5c")) {
+            cFrom.removeChars(2);
 
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+        }
 
         assertEquals(x.xmlText(),
             "<bar>xy<foo x=\"y\">ab[FROM]e[TO]f" +
@@ -1300,13 +1327,13 @@ public class StoreTests {
 
         x = XmlObject.Factory.parse("<bar><!---->abc</bar>");
 
-        cFrom = navDoc(x, "tt");
-        cTo = navDoc(x, "tttc");
-
-        assertTrue(cFrom.removeXml());
+        try (XmlCursor cFrom = navDoc(x, "tt");
+            XmlCursor cTo = navDoc(x, "tttc")) {
+            assertTrue(cFrom.removeXml());
 
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+        }
 
         assertEquals("<bar>[FROM]a[TO]bc</bar>", x.xmlText());
 
@@ -1314,12 +1341,13 @@ public class StoreTests {
 
         x = XmlObject.Factory.newInstance();
 
-        cTo = navDoc(x, "t");
-        cTo.insertElement("boo");
-        cTo.toPrevToken();
-        cTo.insertElement("moo");
-        cTo.toPrevToken();
-        cTo.insertElement("goo");
+        try (XmlCursor cTo = navDoc(x, "t")) {
+            cTo.insertElement("boo");
+            cTo.toPrevToken();
+            cTo.insertElement("moo");
+            cTo.toPrevToken();
+            cTo.insertElement("goo");
+        }
 
         assertEquals("<boo><moo><goo/></moo></boo>", x.xmlText());
 
@@ -1327,34 +1355,39 @@ public class StoreTests {
 
         x = XmlObject.Factory.newInstance();
 
-        cTo = navDoc(x, "t");
-        cTo.insertElement("boo");
-        cTo.toPrevToken();
-        cTo.insertElement("moo");
-        cTo.toPrevToken();
-        cTo.insertAttributeWithValue("x", "y");
+        try (XmlCursor cTo = navDoc(x, "t")) {
+            cTo.insertElement("boo");
+            cTo.toPrevToken();
+            cTo.insertElement("moo");
+            cTo.toPrevToken();
+            cTo.insertAttributeWithValue("x", "y");
+        }
 
         assertEquals("<boo><moo x=\"y\"/></boo>", x.xmlText());
 
         //
 
         x = XmlObject.Factory.parse("<bar x='y'>abc</bar>");
-        cTo = navDoc(x, "tt");
-        cTo.insertAttributeWithValue("p", "q");
+        try (XmlCursor cTo = navDoc(x, "tt")) {
+            cTo.insertAttributeWithValue("p", "q");
+        }
 
         assertEquals("<bar p=\"q\" x=\"y\">abc</bar>", x.xmlText());
 
         // Text XmlBookmark
 
         x = XmlObject.Factory.parse("<r><foo>abc</foo><bar></bar></r>");
-        cFrom = navDoc(x, "tt");
-        anno = new Anno();
-        cFrom.setBookmark(anno);
-        cTo = navDoc(x, "6t");
-        assertTrue(cFrom.moveXml(cTo));
-        cFrom.insertChars("[FROM]");
-        cTo.insertChars("[TO]");
-        anno.createCursor().insertChars("[ANNO]");
+        try (XmlCursor cFrom = navDoc(x, "tt");
+            XmlCursor cTo = navDoc(x, "6t")) {
+            anno = new Anno();
+            cFrom.setBookmark(anno);
+            assertTrue(cFrom.moveXml(cTo));
+            cFrom.insertChars("[FROM]");
+            cTo.insertChars("[TO]");
+            try (XmlCursor c = anno.createCursor()) {
+                c.insertChars("[ANNO]");
+            }
+        }
 
         assertEquals("<r>[FROM]<bar>[ANNO]<foo>abc</foo>[TO]</bar></r>", 
x.xmlText());
 
@@ -1362,31 +1395,38 @@ public class StoreTests {
 
         x = XmlObject.Factory.parse("<foo x='y'>abc</foo>");
         y = XmlObject.Factory.newInstance();
-        d = y.newCursor();
-        d.toNextToken();
-        x.newCursor().moveXmlContents(d);
+        try (XmlCursor d = y.newCursor()) {
+            d.toNextToken();
+            try (XmlCursor c = x.newCursor()) {
+                c.moveXmlContents(d);
+            }
+        }
         assertEquals("<foo x=\"y\">abc</foo>", y.xmlText());
 
         x = XmlObject.Factory.parse("<bar><foo x='y'>abc</foo></bar>");
         y = XmlObject.Factory.newInstance();
-        c = x.newCursor();
-        c.toNextToken();
-        d = y.newCursor();
-        d.toNextToken();
-        c.moveXmlContents(d);
+        try (XmlCursor c = x.newCursor();
+            XmlCursor d = y.newCursor()) {
+            c.toNextToken();
+            d.toNextToken();
+            c.moveXmlContents(d);
+        }
         assertEquals("<foo x=\"y\">abc</foo>", y.xmlText());
 
         x = XmlObject.Factory.parse("<bar><foo x='y'>abc</foo></bar>");
-        c = x.newCursor();
-        c.toNextToken();
-        c.removeXmlContents();
+        try (XmlCursor c = x.newCursor()) {
+            c.toNextToken();
+            c.removeXmlContents();
+        }
         assertEquals("<bar/>", x.xmlText());
 
         x = XmlObject.Factory.parse("<foo x='y'>abc</foo>");
         y = XmlObject.Factory.newInstance();
-        d = y.newCursor();
-        d.toNextToken();
-        x.newCursor().copyXmlContents(d);
+        try (XmlCursor d = y.newCursor();
+            XmlCursor  e = x.newCursor()) {
+            d.toNextToken();
+            e.copyXmlContents(d);
+        }
         assertEquals("<foo x=\"y\">abc</foo>", y.xmlText());
     }
 
@@ -1396,7 +1436,7 @@ public class StoreTests {
     @Test
     public void testSave() throws Exception {
         XmlObject x;
-        XmlCursor cTo;
+        XmlOptions options;
 
         //
 
@@ -1414,8 +1454,9 @@ public class StoreTests {
 
         x = XmlObject.Factory.parse("<foo></foo>");
 
-        cTo = navDoc(x, "dt");
-        cTo.insertChars("&<");
+        try (XmlCursor cTo = navDoc(x, "dt")) {
+            cTo.insertChars("&<");
+        }
 
         assertEquals("<foo>&amp;&lt;</foo>", x.xmlText());
 
@@ -1423,83 +1464,80 @@ public class StoreTests {
 
         x = XmlObject.Factory.parse("<foo><boo>bar</boo></foo>");
 
-        cTo = navDoc(x, "dt");
-
-        assertEquals("<boo>bar</boo>", cTo.xmlText());
+        try (XmlCursor cTo = navDoc(x, "dt")) {
+            assertEquals("<boo>bar</boo>", cTo.xmlText());
+        }
 
         //
 
         x = XmlObject.Factory.parse("<foo><boo x=\"y\">bar</boo></foo>");
 
-        cTo = navDoc(x, "dt");
-
-        assertEquals("<boo x=\"y\">bar</boo>", cTo.xmlText());
+        try (XmlCursor cTo = navDoc(x, "dt")) {
+            assertEquals("<boo x=\"y\">bar</boo>", cTo.xmlText());
+        }
 
         // Tests fragment saving and loading
 
         x = XmlObject.Factory.parse("<foo>Eric</foo>");
 
-        cTo = navDoc(x, "dt");
-
-        x = XmlObject.Factory.parse(cTo.xmlText());
-
-        cTo = navDoc(x, "");
+        try (XmlCursor cTo = navDoc(x, "dt")) {
+            x = XmlObject.Factory.parse(cTo.xmlText());
+        }
 
-        assertEquals("Eric", cTo.getTextValue());
+        try (XmlCursor cTo = navDoc(x, "")) {
+            assertEquals("Eric", cTo.getTextValue());
+        }
 
         // test save where I replace the name of an element
 
         x = XmlObject.Factory.parse("<foo>Eric</foo>");
 
-        cTo = navDoc(x, "d");
-
-        XmlOptions options = new XmlOptions();
-
+        options = new XmlOptions();
         options.setSaveSyntheticDocumentElement(new QName(null, "bar"));
+        try (XmlCursor cTo = navDoc(x, "d")) {
+            x = XmlObject.Factory.parse(cTo.xmlText(options));
+        }
 
-        x = XmlObject.Factory.parse(cTo.xmlText(options));
-
-        cTo = navDoc(x, "");
-
-        assertEquals("<bar>Eric</bar>", cTo.xmlText());
+        try (XmlCursor cTo = navDoc(x, "")) {
+            assertEquals("<bar>Eric</bar>", cTo.xmlText());
+        }
 
         // test save where I replace the name of the document
 
         x = XmlObject.Factory.parse("<foo>Eric</foo>");
 
-        cTo = navDoc(x, "");
-
-        options = new XmlOptions();
-
-        options.setSaveSyntheticDocumentElement(new QName(null, "bar"));
-
-        x = XmlObject.Factory.parse(cTo.xmlText(options));
+        try (XmlCursor cTo = navDoc(x, "")) {
+            options = new XmlOptions();
+            options.setSaveSyntheticDocumentElement(new QName(null, "bar"));
 
-        cTo = navDoc(x, "");
+            x = XmlObject.Factory.parse(cTo.xmlText(options));
+        }
 
-        assertEquals("<bar><foo>Eric</foo></bar>", cTo.xmlText());
+        try (XmlCursor cTo = navDoc(x, "")) {
+            assertEquals("<bar><foo>Eric</foo></bar>", cTo.xmlText());
+        }
 
         x = XmlObject.Factory.parse("<a xmlns='foo'/>");
 
-        XmlCursor c = x.newCursor();
-
-        c.toFirstContentToken();
-        c.toFirstContentToken();
-
-        c.insertElement("b");
-        c.toPrevSibling();
-        assertEquals("b", c.getName().getLocalPart());
-        assertEquals(0, c.getName().getNamespaceURI().length());
+        try (XmlCursor c = x.newCursor()) {
+            c.toFirstContentToken();
+            c.toFirstContentToken();
 
-        x = XmlObject.Factory.parse(x.xmlText());
+            c.insertElement("b");
+            c.toPrevSibling();
+            assertEquals("b", c.getName().getLocalPart());
+            assertEquals(0, c.getName().getNamespaceURI().length());
 
-        c = x.newCursor();
+            x = XmlObject.Factory.parse(x.xmlText());
+        }
 
-        c.toFirstContentToken();
-        c.toFirstContentToken();
+        try (XmlCursor c = x.newCursor()) {
+            c.toFirstContentToken();
+            c.toFirstContentToken();
 
-        assertEquals("b", c.getName().getLocalPart());
-        assertEquals(0, c.getName().getNamespaceURI().length());
+            assertEquals("b", c.getName().getLocalPart());
+            assertEquals(0, c.getName().getNamespaceURI().length());
+        }
     }
 
     private void testTextFrag(String actual, String expected) {
@@ -1517,55 +1555,46 @@ public class StoreTests {
     @Test
     public void testSaveFrag() {
         XmlObject x;
-        XmlCursor c;
 
         x = XmlObject.Factory.newInstance();
 
-        c = x.newCursor();
-
-        c.toNextToken();
-
-        c.insertChars("Eric");
-
+        try (XmlCursor c = x.newCursor()) {
+            c.toNextToken();
+            c.insertChars("Eric");
+        }
         testTextFrag(x.xmlText(), "Eric");
 
         //
 
         x = XmlObject.Factory.newInstance();
 
-        c = x.newCursor();
-
-        c.toNextToken();
-
-        c.insertComment("");
-        c.insertChars("x");
-
+        try (XmlCursor c = x.newCursor()) {
+            c.toNextToken();
+            c.insertComment("");
+            c.insertChars("x");
+        }
         testTextFrag(x.xmlText(), "<!---->x");
 
         //
 
         x = XmlObject.Factory.newInstance();
 
-        c = x.newCursor();
-
-        c.toNextToken();
-
-        c.insertElement("foo");
-        c.insertChars("x");
-
+        try (XmlCursor c = x.newCursor()) {
+            c.toNextToken();
+            c.insertElement("foo");
+            c.insertChars("x");
+        }
         testTextFrag(x.xmlText(), "<foo/>x");
 
         //
 
         x = XmlObject.Factory.newInstance();
 
-        c = x.newCursor();
-
-        c.toNextToken();
-
-        c.insertElement("foo");
-        c.insertElement("bar");
-
+        try (XmlCursor c = x.newCursor()) {
+            c.toNextToken();
+            c.insertElement("foo");
+            c.insertElement("bar");
+        }
         testTextFrag(x.xmlText(), "<foo/><bar/>");
     }
 
@@ -1580,9 +1609,9 @@ public class StoreTests {
             XmlObject.Factory.parse(
                 "<bar p='q' x='y'>ab<foo>xy</foo>cd</bar>", options);
 
-        XmlCursor c = navDoc(x, "t");
-
-        assertSame(c.currentTokenType(), TokenType.ATTR);
+        try (XmlCursor c = navDoc(x, "t")) {
+            assertSame(c.currentTokenType(), TokenType.ATTR);
+        }
 
         String open = "xmlns:open='http://www.openuri.org/fragment'";
 
@@ -1591,37 +1620,36 @@ public class StoreTests {
                 "<open:fragment p='q' x='y' " + open +
                 ">ab<foo>xy</foo>cd</open:fragment>");
 
-        c = navDoc(x, "t");
-
-        assertSame(c.currentTokenType(), TokenType.ATTR);
+        try (XmlCursor c = navDoc(x, "t")) {
+            assertSame(c.currentTokenType(), TokenType.ATTR);
+        }
     }
 
     @Test
     public void testCompare() throws Exception {
         XmlObject x;
-        XmlCursor cFrom, cTo;
 
         // Forward navigation
 
         x = XmlObject.Factory.parse("<bar p='q' 
x='y'>ab<foo>xy</foo>cd</bar>");
 
-        cFrom = navDoc(x, "");
-        cTo = navDoc(x, "");
-
-        for (; ; ) {
-            assertEquals(0, cFrom.comparePosition(cTo));
-            assertTrue(cFrom.isAtSamePositionAs(cTo));
+        try (XmlCursor cFrom = navDoc(x, "");
+            XmlCursor cTo = navDoc(x, "")){
+            for (; ; ) {
+                assertEquals(0, cFrom.comparePosition(cTo));
+                assertTrue(cFrom.isAtSamePositionAs(cTo));
 
-            TokenType tt = cFrom.currentTokenType();
+                TokenType tt = cFrom.currentTokenType();
 
-            if (tt == TokenType.ENDDOC) {
-                break;
-            } else if (tt == TokenType.TEXT) {
-                cFrom.toNextChar(1);
-                cTo.toNextChar(1);
-            } else {
-                cFrom.toNextToken();
-                cTo.toNextToken();
+                if (tt == TokenType.ENDDOC) {
+                    break;
+                } else if (tt == TokenType.TEXT) {
+                    cFrom.toNextChar(1);
+                    cTo.toNextChar(1);
+                } else {
+                    cFrom.toNextToken();
+                    cTo.toNextToken();
+                }
             }
         }
 
@@ -1629,19 +1657,19 @@ public class StoreTests {
 
         x = XmlObject.Factory.parse("<bar p='q' 
x='y'>ab<foo>xy</foo>cd</bar>");
 
-        cFrom = navDoc(x, "r");
-        cTo = navDoc(x, "r");
+        try (XmlCursor cFrom = navDoc(x, "r");
+            XmlCursor cTo = navDoc(x, "r")) {
+            for (; ; ) {
+                assertEquals(0, cFrom.comparePosition(cTo));
+                assertTrue(cFrom.isAtSamePositionAs(cTo));
 
-        for (; ; ) {
-            assertEquals(0, cFrom.comparePosition(cTo));
-            assertTrue(cFrom.isAtSamePositionAs(cTo));
-
-            if (cFrom.toPrevChar(1) == 1) {
-                cTo.toPrevChar(1);
-            } else if (cFrom.toPrevToken() != TokenType.NONE) {
-                cTo.toPrevToken();
-            } else {
-                break;
+                if (cFrom.toPrevChar(1) == 1) {
+                    cTo.toPrevChar(1);
+                } else if (cFrom.toPrevToken() != TokenType.NONE) {
+                    cTo.toPrevToken();
+                } else {
+                    break;
+                }
             }
         }
 
@@ -1650,34 +1678,34 @@ public class StoreTests {
         x = XmlObject.Factory.parse(
             "<bar p='q' x='y'>ab<foo>xy</foo>c<f y='x'>xy</f>d</bar>");
 
-        cFrom = navDoc(x, "");
-
-        for (; ; ) {
-            boolean passed = false;
-
-            cTo = navDoc(x, "");
-
+        try (XmlCursor cFrom = navDoc(x, "")) {
             for (; ; ) {
-                if (cTo.isAtSamePositionAs(cFrom)) {
-                    assertFalse(passed);
-                    passed = true;
-                } else if (cTo.isLeftOf(cFrom)) {
-                    assertFalse(passed);
-                } else {
-                    assertTrue(passed);
-                    assertTrue(cTo.isRightOf(cFrom));
-                }
+                boolean passed = false;
 
-                if (cTo.toNextChar(1) != 1) {
-                    if (cTo.toNextToken() == TokenType.ENDDOC) {
-                        break;
+                try (XmlCursor cTo = navDoc(x, "")) {
+                    for (; ; ) {
+                        if (cTo.isAtSamePositionAs(cFrom)) {
+                            assertFalse(passed);
+                            passed = true;
+                        } else if (cTo.isLeftOf(cFrom)) {
+                            assertFalse(passed);
+                        } else {
+                            assertTrue(passed);
+                            assertTrue(cTo.isRightOf(cFrom));
+                        }
+
+                        if (cTo.toNextChar(1) != 1) {
+                            if (cTo.toNextToken() == TokenType.ENDDOC) {
+                                break;
+                            }
+                        }
                     }
                 }
-            }
 
-            if (cFrom.toNextChar(1) != 1) {
-                if (cFrom.toNextToken() == TokenType.ENDDOC) {
-                    break;
+                if (cFrom.toNextChar(1) != 1) {
+                    if (cFrom.toNextToken() == TokenType.ENDDOC) {
+                        break;
+                    }
                 }
             }
         }
@@ -1687,9 +1715,10 @@ public class StoreTests {
     public void testAttrSetter()
         throws Exception {
         XmlObject x = XmlObject.Factory.parse("<foo/>");
-        XmlCursor c = x.newCursor();
-        c.toNextToken();
-        c.setAttributeText(new QName(null, "x"), "hardehar");
+        try (XmlCursor c = x.newCursor()) {
+            c.toNextToken();
+            c.setAttributeText(new QName(null, "x"), "hardehar");
+        }
         assertEquals("<foo x=\"hardehar\"/>", x.xmlText());
     }
 
@@ -1697,124 +1726,130 @@ public class StoreTests {
     public void testNavigation()
         throws Exception {
         XmlObject x = XmlObject.Factory.parse("<a><x/><y/><z/></a>");
-        XmlCursor c = x.newCursor();
-        assertFalse(c.toNextSibling());
-        assertFalse(c.toPrevSibling());
-        assertFalse(c.toFirstAttribute());
-        assertFalse(c.toLastAttribute());
-        c.toNextToken();
-        c.toNextToken();
-        assertTrue(c.toNextSibling());
-        assertEquals("y", c.getName().getLocalPart());
-        assertTrue(c.toNextSibling());
-        assertEquals("z", c.getName().getLocalPart());
-        assertFalse(c.toNextSibling());
+        try (XmlCursor c = x.newCursor()) {
+            assertFalse(c.toNextSibling());
+            assertFalse(c.toPrevSibling());
+            assertFalse(c.toFirstAttribute());
+            assertFalse(c.toLastAttribute());
+            c.toNextToken();
+            c.toNextToken();
+            assertTrue(c.toNextSibling());
+            assertEquals("y", c.getName().getLocalPart());
+            assertTrue(c.toNextSibling());
+            assertEquals("z", c.getName().getLocalPart());
+            assertFalse(c.toNextSibling());
+        }
 
         x = XmlObject.Factory.parse("<a p='q' m='n'><x/><y/><z/></a>");
-        c = x.newCursor();
-        c.toNextToken();
-        c.toNextToken();
-        assertTrue(c.currentTokenType().isAttr());
-        assertFalse(c.toPrevSibling());
-        assertTrue(c.currentTokenType().isAttr());
-        assertTrue(c.toNextSibling());
-        assertEquals("x", c.getName().getLocalPart());
-
-        c.toEndDoc();
-        c.toPrevToken();
-        assertTrue(c.toPrevSibling());
-        assertEquals("z", c.getName().getLocalPart());
-        assertTrue(c.toPrevSibling());
-        assertEquals("y", c.getName().getLocalPart());
-        assertTrue(c.toPrevSibling());
-        assertEquals("x", c.getName().getLocalPart());
-        assertFalse(c.toPrevSibling());
-
-        c.toEndDoc();
-        c.toPrevToken();
-        assertTrue(c.toParent());
-        assertEquals("a", c.getName().getLocalPart());
-
-        c.toEndDoc();
-        assertTrue(c.toParent());
-        assertTrue(c.currentTokenType().isStartdoc());
+        try (XmlCursor c = x.newCursor()) {
+            c.toNextToken();
+            c.toNextToken();
+            assertTrue(c.currentTokenType().isAttr());
+            assertFalse(c.toPrevSibling());
+            assertTrue(c.currentTokenType().isAttr());
+            assertTrue(c.toNextSibling());
+            assertEquals("x", c.getName().getLocalPart());
+
+            c.toEndDoc();
+            c.toPrevToken();
+            assertTrue(c.toPrevSibling());
+            assertEquals("z", c.getName().getLocalPart());
+            assertTrue(c.toPrevSibling());
+            assertEquals("y", c.getName().getLocalPart());
+            assertTrue(c.toPrevSibling());
+            assertEquals("x", c.getName().getLocalPart());
+            assertFalse(c.toPrevSibling());
+
+            c.toEndDoc();
+            c.toPrevToken();
+            assertTrue(c.toParent());
+            assertEquals("a", c.getName().getLocalPart());
+
+            c.toEndDoc();
+            assertTrue(c.toParent());
+            assertTrue(c.currentTokenType().isStartdoc());
+        }
 
         x = XmlObject.Factory.parse("<a>moo<!---->foo</a>");
-        c = x.newCursor();
-        c.toStartDoc();
-        c.toNextToken();
-        c.toNextToken();
-        c.toNextToken();
-        assertTrue(c.toParent());
-        assertEquals("a", c.getName().getLocalPart());
-
-        c.toStartDoc();
-        c.toNextToken();
-        c.toNextToken();
-        c.toNextToken();
-        c.toNextToken();
-        assertTrue(c.toParent());
-        assertEquals("a", c.getName().getLocalPart());
-
-        c.toStartDoc();
-        c.toNextToken();
-        c.toNextToken();
-        c.toNextToken();
-        c.toNextToken();
-        c.toNextChar(2);
-        assertTrue(c.toParent());
-        assertEquals("a", c.getName().getLocalPart());
+            try (XmlCursor c = x.newCursor()) {
+            c.toStartDoc();
+            c.toNextToken();
+            c.toNextToken();
+            c.toNextToken();
+            assertTrue(c.toParent());
+            assertEquals("a", c.getName().getLocalPart());
+
+            c.toStartDoc();
+            c.toNextToken();
+            c.toNextToken();
+            c.toNextToken();
+            c.toNextToken();
+            assertTrue(c.toParent());
+            assertEquals("a", c.getName().getLocalPart());
+
+            c.toStartDoc();
+            c.toNextToken();
+            c.toNextToken();
+            c.toNextToken();
+            c.toNextToken();
+            c.toNextChar(2);
+            assertTrue(c.toParent());
+            assertEquals("a", c.getName().getLocalPart());
+        }
 
         x = 
XmlObject.Factory.parse("<foo>early<bar>text<char>zap</char></bar></foo>");
-        c = x.newCursor();
-        c.toNextToken();
-        c.toNextToken();
-        assertTrue(c.toFirstChild());
-        assertEquals("zap", c.getTextValue());
+        try (XmlCursor c = x.newCursor()) {
+            c.toNextToken();
+            c.toNextToken();
+            assertTrue(c.toFirstChild());
+            assertEquals("zap", c.getTextValue());
+        }
     }
 
     @Test
     public void testGetName()
         throws Exception {
         XmlObject x = XmlObject.Factory.parse("<a 
x='y'>eric<!----><?moo?></a>");
-        XmlCursor c = x.newCursor();
-        assertNull(c.getName());
-        assertFalse(c.toNextToken().isNone());
-        assertEquals("a", c.getName().getLocalPart());
-        assertEquals(0, c.getName().getNamespaceURI().length());
-        assertFalse(c.toNextToken().isNone());
-        assertEquals("x", c.getName().getLocalPart());
-        assertEquals(0, c.getName().getNamespaceURI().length());
-        assertFalse(c.toNextToken().isNone());
-        assertNull(c.getName());
-        assertFalse(c.toNextToken().isNone());
-        assertNull(c.getName());
-        assertFalse(c.toNextToken().isNone());
-        assertEquals("moo", c.getName().getLocalPart());
-        assertEquals(0, c.getName().getNamespaceURI().length());
-        assertFalse(c.toNextToken().isNone());
-        assertNull(c.getName());
-        assertFalse(c.toNextToken().isNone());
-        assertNull(c.getName());
-        assertTrue(c.toNextToken().isNone());
+        try (XmlCursor c = x.newCursor()) {
+            assertNull(c.getName());
+            assertFalse(c.toNextToken().isNone());
+            assertEquals("a", c.getName().getLocalPart());
+            assertEquals(0, c.getName().getNamespaceURI().length());
+            assertFalse(c.toNextToken().isNone());
+            assertEquals("x", c.getName().getLocalPart());
+            assertEquals(0, c.getName().getNamespaceURI().length());
+            assertFalse(c.toNextToken().isNone());
+            assertNull(c.getName());
+            assertFalse(c.toNextToken().isNone());
+            assertNull(c.getName());
+            assertFalse(c.toNextToken().isNone());
+            assertEquals("moo", c.getName().getLocalPart());
+            assertEquals(0, c.getName().getNamespaceURI().length());
+            assertFalse(c.toNextToken().isNone());
+            assertNull(c.getName());
+            assertFalse(c.toNextToken().isNone());
+            assertNull(c.getName());
+            assertTrue(c.toNextToken().isNone());
+        }
     }
 
     @Test
     public void testGetChars()
         throws Exception {
         XmlObject x = XmlObject.Factory.parse("<foo>abcdefghijkl</foo>");
-        XmlCursor c = x.newCursor();
-        c.toNextToken();
-        c.toNextToken();
-        c.toNextChar(2);
-
-        char[] buf = new char[3];
-        int n = c.getChars(buf, 0, 400);
-
-        assertEquals(3, n);
-        assertEquals('c', buf[0]);
-        assertEquals('d', buf[1]);
-        assertEquals('e', buf[2]);
+        try (XmlCursor c = x.newCursor()) {
+            c.toNextToken();
+            c.toNextToken();
+            c.toNextChar(2);
+
+            char[] buf = new char[3];
+            int n = c.getChars(buf, 0, 400);
+
+            assertEquals(3, n);
+            assertEquals('c', buf[0]);
+            assertEquals('d', buf[1]);
+            assertEquals('e', buf[2]);
+        }
     }
 
     @Test
@@ -1829,31 +1864,31 @@ public class StoreTests {
 
         XmlObject x = XmlObject.Factory.parse("<a xmlns='foo' xmlns:a='a' 
a:x='y'/>", options);
 
-        XmlCursor c = x.newCursor();
-
-        c.toNextToken();
-        assertEquals("moo", c.getName().getNamespaceURI());
+        try (XmlCursor c = x.newCursor()) {
+            c.toNextToken();
+            assertEquals("moo", c.getName().getNamespaceURI());
 
-        c.toNextToken();
-        assertEquals("moo", c.getName().getNamespaceURI());
+            c.toNextToken();
+            assertEquals("moo", c.getName().getNamespaceURI());
 
-        c.toNextToken();
-        assertEquals("b", c.getName().getNamespaceURI());
+            c.toNextToken();
+            assertEquals("b", c.getName().getNamespaceURI());
 
-        c.toNextToken();
-        assertEquals("b", c.getName().getNamespaceURI());
+            c.toNextToken();
+            assertEquals("b", c.getName().getNamespaceURI());
+        }
     }
 
     @Test
     public void testNamespaceInsertion() {
         XmlObject x = XmlObject.Factory.newInstance();
 
-        XmlCursor c = x.newCursor();
-
-        c.toNextToken();
-        c.insertElement("foo", "http://p.com";);
-        c.toPrevToken();
-        c.insertNamespace("p", "http://p.com";);
+        try (XmlCursor c = x.newCursor()) {
+            c.toNextToken();
+            c.insertElement("foo", "http://p.com";);
+            c.toPrevToken();
+            c.insertNamespace("p", "http://p.com";);
+        }
 
         assertEquals("<p:foo xmlns:p=\"http://p.com\"/>", x.xmlText());
     }
@@ -1879,18 +1914,20 @@ public class StoreTests {
     public void testNil()
         throws Exception {
         XmlObject x = 
noNamespace.CanBeNilDocument.Factory.parse("<canBeNil/>");
-        XmlCursor c = x.newCursor();
-        c.toFirstChild();
-        XmlObject fc = c.getObject();
-        assertFalse(fc.isNil());
-        fc.setNil();
-        assertTrue(fc.isNil());
-        assertEquals("<canBeNil xsi:nil=\"true\" 
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"/>", x.xmlText());
-        c.toNextToken();
-        assertTrue(c.isAttr());
-        c.removeXml();
-        assertEquals("<canBeNil/>", x.xmlText());
-        assertFalse(fc.isNil());
+        try (XmlCursor c = x.newCursor()) {
+            c.toFirstChild();
+            XmlObject fc = c.getObject();
+
+            assertFalse(fc.isNil());
+            fc.setNil();
+            assertTrue(fc.isNil());
+            assertEquals("<canBeNil xsi:nil=\"true\" 
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"/>", x.xmlText());
+            c.toNextToken();
+            assertTrue(c.isAttr());
+            c.removeXml();
+            assertEquals("<canBeNil/>", x.xmlText());
+            assertFalse(fc.isNil());
+        }
     }
 
     @Test

Modified: xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToCursorTest.java
URL: 
http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToCursorTest.java?rev=1896764&r1=1896763&r2=1896764&view=diff
==============================================================================
--- xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToCursorTest.java (original)
+++ xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToCursorTest.java Thu Jan  6 
17:54:30 2022
@@ -30,13 +30,11 @@ public class ToCursorTest extends BasicC
     @Test
     public void testToCursorMoves() throws Exception {
         m_xc = XmlObject.Factory.parse(Common.XML_FOO_1ATTR_TEXT).newCursor();
-        XmlCursor xc0 = m_xc.newCursor();
-        xc0.toEndDoc();
-        try {
+        try (XmlCursor xc0 = m_xc.newCursor()) {
+            xc0.toEndDoc();
+
             assertTrue(m_xc.toCursor(xc0));
             assertTrue(xc0.isAtSamePositionAs(m_xc));
-        } finally {
-            xc0.dispose();
         }
     }
 
@@ -53,15 +51,13 @@ public class ToCursorTest extends BasicC
     @Test
     public void testToCursorDifferentDocs() throws Exception {
         m_xc = XmlObject.Factory.parse(Common.XML_FOO_1ATTR_TEXT).newCursor();
-        XmlCursor xc0 = 
XmlObject.Factory.parse(Common.XML_FOO_1ATTR_TEXT).newCursor();
-        toNextTokenOfType(m_xc, TokenType.TEXT);
-        String s = m_xc.xmlText();
-        toNextTokenOfType(xc0, TokenType.TEXT);
-        try {
+        try (XmlCursor xc0 = 
XmlObject.Factory.parse(Common.XML_FOO_1ATTR_TEXT).newCursor()) {
+            toNextTokenOfType(m_xc, TokenType.TEXT);
+            String s = m_xc.xmlText();
+            toNextTokenOfType(xc0, TokenType.TEXT);
+
             assertFalse(m_xc.toCursor(xc0));
             assertEquals(s, m_xc.xmlText());
-        } finally {
-            xc0.dispose();
         }
     }
 

Modified: 
xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToLastChildElementTest.java
URL: 
http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToLastChildElementTest.java?rev=1896764&r1=1896763&r2=1896764&view=diff
==============================================================================
--- xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToLastChildElementTest.java 
(original)
+++ xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToLastChildElementTest.java 
Thu Jan  6 17:54:30 2022
@@ -48,16 +48,14 @@ public class ToLastChildElementTest exte
         m_xc = 
XmlObject.Factory.parse("<foo>early<bar>text<char>zap</char><dar>yap</dar></bar></foo>").newCursor();
         toNextTokenOfType(m_xc, TokenType.TEXT);
         assertEquals("early", m_xc.getChars());
-        XmlCursor xc0 = m_xc.newCursor();
-        xc0.toNextSibling();
-        try {
+        try (XmlCursor xc0 = m_xc.newCursor()) {
+            xc0.toNextSibling();
+
             assertEquals("textzapyap", xc0.getTextValue());
             xc0.toLastChild();
             assertEquals("yap", xc0.getTextValue());
             assertTrue(m_xc.toLastChild());
             assertEquals("yap", m_xc.getTextValue());
-        } finally {
-            xc0.dispose();
         }
     }
 

Modified: xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToNextBookmarkTest.java
URL: 
http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToNextBookmarkTest.java?rev=1896764&r1=1896763&r2=1896764&view=diff
==============================================================================
--- xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToNextBookmarkTest.java 
(original)
+++ xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToNextBookmarkTest.java Thu 
Jan  6 17:54:30 2022
@@ -37,20 +37,19 @@ public class ToNextBookmarkTest extends
         m_xc = m_xo.newCursor();
         toNextTokenOfType(m_xc, TokenType.START);
         m_xc.setBookmark(_theBookmark);
-        XmlCursor xc0 = m_xc.newCursor();
-        toNextTokenOfType(m_xc, TokenType.END);
-        m_xc.setBookmark(_theBookmark1);
-        XmlCursor xc1 = m_xc.newCursor();
-        m_xc.toStartDoc();
-        try {
-            assertEquals(_theBookmark, 
m_xc.toNextBookmark(SimpleBookmark.class));
-            assertTrue(m_xc.isAtSamePositionAs(xc0));
-            assertEquals(_theBookmark1, 
m_xc.toNextBookmark(SimpleBookmark.class));
-            assertTrue(m_xc.isAtSamePositionAs(xc1));
-            assertNull(m_xc.toNextBookmark(SimpleBookmark.class));
-        } finally {
-            xc0.dispose();
-            xc1.dispose();
+        try (XmlCursor xc0 = m_xc.newCursor()) {
+            toNextTokenOfType(m_xc, TokenType.END);
+            m_xc.setBookmark(_theBookmark1);
+
+            try (XmlCursor xc1 = m_xc.newCursor()) {
+                m_xc.toStartDoc();
+
+                assertEquals(_theBookmark, 
m_xc.toNextBookmark(SimpleBookmark.class));
+                assertTrue(m_xc.isAtSamePositionAs(xc0));
+                assertEquals(_theBookmark1, 
m_xc.toNextBookmark(SimpleBookmark.class));
+                assertTrue(m_xc.isAtSamePositionAs(xc1));
+                assertNull(m_xc.toNextBookmark(SimpleBookmark.class));
+            }
         }
     }
 
@@ -72,20 +71,19 @@ public class ToNextBookmarkTest extends
         m_xc = m_xo.newCursor();
         toNextTokenOfType(m_xc, TokenType.START);
         m_xc.setBookmark(_theBookmark);
-        XmlCursor xc0 = m_xc.newCursor();
-        toNextTokenOfType(m_xc, TokenType.END);
-        m_xc.setBookmark(_difBookmark);
-        XmlCursor xc1 = m_xc.newCursor();
-        m_xc.toStartDoc();
-        try {
-            assertEquals(_theBookmark, 
m_xc.toNextBookmark(SimpleBookmark.class));
-            assertTrue(m_xc.isAtSamePositionAs(xc0));
-            assertNull(m_xc.toNextBookmark(SimpleBookmark.class));
-            assertEquals(_difBookmark, 
m_xc.toNextBookmark(DifferentBookmark.class));
-            assertTrue(m_xc.isAtSamePositionAs(xc1));
-        } finally {
-            xc0.dispose();
-            xc1.dispose();
+        try (XmlCursor xc0 = m_xc.newCursor()) {
+            toNextTokenOfType(m_xc, TokenType.END);
+            m_xc.setBookmark(_difBookmark);
+
+            try (XmlCursor xc1 = m_xc.newCursor()) {
+                m_xc.toStartDoc();
+
+                assertEquals(_theBookmark, 
m_xc.toNextBookmark(SimpleBookmark.class));
+                assertTrue(m_xc.isAtSamePositionAs(xc0));
+                assertNull(m_xc.toNextBookmark(SimpleBookmark.class));
+                assertEquals(_difBookmark, 
m_xc.toNextBookmark(DifferentBookmark.class));
+                assertTrue(m_xc.isAtSamePositionAs(xc1));
+            }
         }
     }
 
@@ -100,13 +98,11 @@ public class ToNextBookmarkTest extends
         m_xc.toPrevChar(2);
         assertEquals(3, m_xc.removeChars(3));  // '2' should be deleted, along 
w/ bookmark
         assertEquals("34", m_xc.getChars());
-        XmlCursor xc1 = m_xc.newCursor();
-        xc1.toStartDoc();
-        try {
+        try (XmlCursor xc1 = m_xc.newCursor()) {
+            xc1.toStartDoc();
+
             assertNull(xc1.toNextBookmark(SimpleBookmark.class));
             assertEquals(TokenType.STARTDOC, xc1.currentTokenType());
-        } finally {
-            xc1.dispose();
         }
     }
 

Modified: 
xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToNextSelectionTest.java
URL: 
http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToNextSelectionTest.java?rev=1896764&r1=1896763&r2=1896764&view=diff
==============================================================================
--- xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToNextSelectionTest.java 
(original)
+++ xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToNextSelectionTest.java Thu 
Jan  6 17:54:30 2022
@@ -72,12 +72,9 @@ public class ToNextSelectionTest extends
     public void testToNextSelectionOtherCursor() throws Exception {
         String sXml = 
"<foo><b>0</b><b>1</b><b>2</b><b>3</b><b>4</b><b>5</b><b>6</b></foo>";
         m_xc = XmlObject.Factory.parse(sXml).newCursor();
-        XmlCursor xc0 = m_xc.newCursor();
-        try {
+        try (XmlCursor xc0 = m_xc.newCursor()) {
             m_xc.selectPath("$this//b");
             assertFalse(xc0.toNextSelection());
-        } finally {
-            xc0.dispose();
         }
     }
 
@@ -85,8 +82,7 @@ public class ToNextSelectionTest extends
     public void testToNextSelectionTwoCursorsDifferentSelections() throws 
Exception {
         String sXml = 
"<foo><a>X</a><b>0</b><a>Y</a><b>1</b><a>Z</a><b>2</b></foo>";
         m_xc = XmlObject.Factory.parse(sXml).newCursor();
-        XmlCursor xc0 = m_xc.newCursor();
-        try {
+        try (XmlCursor xc0 = m_xc.newCursor()) {
             xc0.selectPath("$this//a");
             xc0.toNextSelection();
             assertEquals(3, xc0.getSelectionCount());
@@ -97,8 +93,6 @@ public class ToNextSelectionTest extends
             assertEquals("Y", xc0.getTextValue());
             assertTrue(m_xc.toNextSelection());
             assertEquals("1", m_xc.getTextValue());
-        } finally {
-            xc0.dispose();
         }
     }
 
@@ -106,8 +100,7 @@ public class ToNextSelectionTest extends
     public void testToNextSelectionTwoCursorsSameSelections() throws Exception 
{
         String sXml = 
"<foo><a>X</a><b>0</b><a>Y</a><b>1</b><a>Z</a><b>2</b></foo>";
         m_xc = XmlObject.Factory.parse(sXml).newCursor();
-        XmlCursor xc0 = m_xc.newCursor();
-        try {
+        try (XmlCursor xc0 = m_xc.newCursor()) {
             xc0.selectPath("$this//b");
             xc0.toNextSelection();
             assertEquals(3, xc0.getSelectionCount());
@@ -124,8 +117,6 @@ public class ToNextSelectionTest extends
             assertEquals("2", m_xc.getTextValue());
             assertFalse(xc0.toNextSelection());
             assertFalse(m_xc.toNextSelection());
-        } finally {
-            xc0.dispose();
         }
     }
 }

Modified: xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToPrevBookmarkTest.java
URL: 
http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToPrevBookmarkTest.java?rev=1896764&r1=1896763&r2=1896764&view=diff
==============================================================================
--- xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToPrevBookmarkTest.java 
(original)
+++ xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToPrevBookmarkTest.java Thu 
Jan  6 17:54:30 2022
@@ -37,20 +37,18 @@ public class ToPrevBookmarkTest extends
         m_xc = m_xo.newCursor();
         toNextTokenOfType(m_xc, TokenType.START);
         m_xc.setBookmark(_theBookmark);
-        XmlCursor xc0 = m_xc.newCursor();
-        toNextTokenOfType(m_xc, TokenType.END);
-        m_xc.setBookmark(_theBookmark1);
-        XmlCursor xc1 = m_xc.newCursor();
-        m_xc.toEndDoc();
-        try {
-            assertEquals(_theBookmark1, 
m_xc.toPrevBookmark(SimpleBookmark.class));
-            assertTrue(m_xc.isAtSamePositionAs(xc1));
-            assertEquals(_theBookmark, 
m_xc.toPrevBookmark(SimpleBookmark.class));
-            assertTrue(m_xc.isAtSamePositionAs(xc0));
-            assertNull(m_xc.toPrevBookmark(SimpleBookmark.class));
-        } finally {
-            xc0.dispose();
-            xc1.dispose();
+        try (XmlCursor xc0 = m_xc.newCursor()) {
+            toNextTokenOfType(m_xc, TokenType.END);
+            m_xc.setBookmark(_theBookmark1);
+            try (XmlCursor xc1 = m_xc.newCursor()) {
+                m_xc.toEndDoc();
+
+                assertEquals(_theBookmark1, 
m_xc.toPrevBookmark(SimpleBookmark.class));
+                assertTrue(m_xc.isAtSamePositionAs(xc1));
+                assertEquals(_theBookmark, 
m_xc.toPrevBookmark(SimpleBookmark.class));
+                assertTrue(m_xc.isAtSamePositionAs(xc0));
+                assertNull(m_xc.toPrevBookmark(SimpleBookmark.class));
+            }
         }
     }
 
@@ -72,20 +70,19 @@ public class ToPrevBookmarkTest extends
         m_xc = m_xo.newCursor();
         toNextTokenOfType(m_xc, TokenType.START);
         m_xc.setBookmark(_theBookmark);
-        XmlCursor xc0 = m_xc.newCursor();
-        toNextTokenOfType(m_xc, TokenType.END);
-        m_xc.setBookmark(_difBookmark);
-        XmlCursor xc1 = m_xc.newCursor();
-        m_xc.toEndDoc();
-        try {
-            assertEquals(_difBookmark, 
m_xc.toPrevBookmark(DifferentBookmark.class));
-            assertTrue(m_xc.isAtSamePositionAs(xc1));
-            assertNull(m_xc.toPrevBookmark(DifferentBookmark.class));
-            assertEquals(_theBookmark, 
m_xc.toPrevBookmark(SimpleBookmark.class));
-            assertTrue(m_xc.isAtSamePositionAs(xc0));
-        } finally {
-            xc0.dispose();
-            xc1.dispose();
+        try (XmlCursor xc0 = m_xc.newCursor()) {
+            toNextTokenOfType(m_xc, TokenType.END);
+            m_xc.setBookmark(_difBookmark);
+
+            try (XmlCursor xc1 = m_xc.newCursor()) {
+                m_xc.toEndDoc();
+
+                assertEquals(_difBookmark, 
m_xc.toPrevBookmark(DifferentBookmark.class));
+                assertTrue(m_xc.isAtSamePositionAs(xc1));
+                assertNull(m_xc.toPrevBookmark(DifferentBookmark.class));
+                assertEquals(_theBookmark, 
m_xc.toPrevBookmark(SimpleBookmark.class));
+                assertTrue(m_xc.isAtSamePositionAs(xc0));
+            }
         }
     }
 
@@ -97,16 +94,14 @@ public class ToPrevBookmarkTest extends
         m_xc.toNextChar(2);
         assertEquals("xt", m_xc.getChars());
         m_xc.setBookmark(_theBookmark);   // set bm in middle of TEXT
-        XmlCursor xc1 = m_xc.newCursor();
-        xc1.toEndDoc();
-        m_xc.toPrevToken();
-        m_xc.setTextValue("changed");  // changes text, should destroy bm
-        m_xc.toEndDoc();
-        try {
+        try (XmlCursor xc1 = m_xc.newCursor()) {
+            xc1.toEndDoc();
+            m_xc.toPrevToken();
+            m_xc.setTextValue("changed");  // changes text, should destroy bm
+            m_xc.toEndDoc();
+
             assertNull(xc1.toPrevBookmark(SimpleBookmark.class));
             assertEquals(TokenType.ENDDOC, xc1.currentTokenType());
-        } finally {
-            xc1.dispose();
         }
     }
 

Modified: xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToPrevElementTest.java
URL: 
http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToPrevElementTest.java?rev=1896764&r1=1896763&r2=1896764&view=diff
==============================================================================
--- xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToPrevElementTest.java 
(original)
+++ xmlbeans/trunk/src/test/java/xmlcursor/checkin/ToPrevElementTest.java Thu 
Jan  6 17:54:30 2022
@@ -36,14 +36,12 @@ public class ToPrevElementTest extends B
     @Test
     public void testToPrevElementFromENDDOC() throws Exception {
         m_xc = 
XmlObject.Factory.parse("<foo>early<bar>text</bar></foo>").newCursor();
-        XmlCursor xc0 = m_xc.newCursor();
-        xc0.toFirstChild();
-        m_xc.toEndDoc();
-        m_xc.toPrevSibling();
-        try {
+        try (XmlCursor xc0 = m_xc.newCursor()) {
+            xc0.toFirstChild();
+            m_xc.toEndDoc();
+            m_xc.toPrevSibling();
+
             assertTrue(m_xc.isAtSamePositionAs(xc0));
-        } finally {
-            xc0.dispose();
         }
     }
 

Modified: xmlbeans/trunk/src/test/java/xmlcursor/common/BasicCursorTestCase.java
URL: 
http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/common/BasicCursorTestCase.java?rev=1896764&r1=1896763&r2=1896764&view=diff
==============================================================================
--- xmlbeans/trunk/src/test/java/xmlcursor/common/BasicCursorTestCase.java 
(original)
+++ xmlbeans/trunk/src/test/java/xmlcursor/common/BasicCursorTestCase.java Thu 
Jan  6 17:54:30 2022
@@ -33,7 +33,7 @@ public class BasicCursorTestCase {
     public void tearDown() throws Exception {
         m_xo = null;
         if (m_xc != null) {
-            m_xc.dispose();
+            m_xc.close();
             m_xc = null;
         }
     }
@@ -52,6 +52,11 @@ public class BasicCursorTestCase {
         assertEquals(tt, xc.currentTokenType());
     }
 
+    public XmlCursor toNextTokenOfTypeCursor(XmlCursor xc, TokenType tt) 
throws IllegalArgumentException {
+        toNextTokenOfType(xc, tt);
+        return xc.newCursor();
+    }
+
     public void toPrevTokenOfType(XmlCursor xc, TokenType tt)
             throws IllegalArgumentException {
         if (xc == null) {

Modified: xmlbeans/trunk/src/test/java/xmlcursor/detailed/CopyCharsTest.java
URL: 
http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/detailed/CopyCharsTest.java?rev=1896764&r1=1896763&r2=1896764&view=diff
==============================================================================
--- xmlbeans/trunk/src/test/java/xmlcursor/detailed/CopyCharsTest.java 
(original)
+++ xmlbeans/trunk/src/test/java/xmlcursor/detailed/CopyCharsTest.java Thu Jan  
6 17:54:30 2022
@@ -38,11 +38,8 @@ public class CopyCharsTest extends Basic
     public void testCopyCharsNegative() throws Exception {
         m_xo = 
XmlObject.Factory.parse("<foo><bar>0123</bar><bar>WXYZ</bar></foo>");
         m_xc = m_xo.newCursor();
-        toNextTokenOfType(m_xc, TokenType.TEXT);
-        XmlCursor xc0 = m_xc.newCursor();
-        toNextTokenOfType(m_xc, TokenType.TEXT);
-        XmlCursor xc1 = m_xc.newCursor();
-        try {
+        try (XmlCursor xc0 = toNextTokenOfTypeCursor(m_xc, TokenType.TEXT);
+            XmlCursor xc1 = toNextTokenOfTypeCursor(m_xc, TokenType.TEXT)) {
             assertFalse(xc0.isAtSamePositionAs(xc1));
             assertEquals(4, xc1.copyChars(-1, xc0));
             assertEquals(TokenType.TEXT, xc0.currentTokenType());
@@ -54,9 +51,6 @@ public class CopyCharsTest extends Basic
             assertEquals(TokenType.TEXT, xc1.currentTokenType());
             assertEquals(TokenType.START, xc1.prevTokenType());
             assertEquals("WXYZ", xc1.getTextValue());
-        } finally {
-            xc0.dispose();
-            xc1.dispose();
         }
     }
 
@@ -64,11 +58,8 @@ public class CopyCharsTest extends Basic
     public void testCopyCharsZero() throws Exception {
         m_xo = 
XmlObject.Factory.parse("<foo><bar>0123</bar><bar>WXYZ</bar></foo>");
         m_xc = m_xo.newCursor();
-        toNextTokenOfType(m_xc, TokenType.TEXT);
-        XmlCursor xc0 = m_xc.newCursor();
-        toNextTokenOfType(m_xc, TokenType.TEXT);
-        XmlCursor xc1 = m_xc.newCursor();
-        try {
+        try (XmlCursor xc0 = toNextTokenOfTypeCursor(m_xc, TokenType.TEXT);
+            XmlCursor xc1 = toNextTokenOfTypeCursor(m_xc, TokenType.TEXT)) {
             assertFalse(xc0.isAtSamePositionAs(xc1));
             assertEquals(0, xc1.copyChars(0, xc0));
             assertEquals("0123", xc0.getTextValue());
@@ -76,9 +67,6 @@ public class CopyCharsTest extends Basic
             assertEquals("0123", xc0.getTextValue());
             assertEquals(TokenType.TEXT, xc1.currentTokenType());
             assertEquals("WXYZ", xc1.getTextValue());
-        } finally {
-            xc0.dispose();
-            xc1.dispose();
         }
     }
 
@@ -86,19 +74,14 @@ public class CopyCharsTest extends Basic
     public void testCopyCharsThis() throws Exception {
         m_xo = 
XmlObject.Factory.parse("<foo><bar>0123</bar><bar>WXYZ</bar></foo>");
         m_xc = m_xo.newCursor();
-        toNextTokenOfType(m_xc, TokenType.TEXT);
-        XmlCursor xc0 = m_xc.newCursor();
-        XmlCursor xc1 = m_xc.newCursor();
-        try {
+        try (XmlCursor xc0 = toNextTokenOfTypeCursor(m_xc, TokenType.TEXT);
+            XmlCursor xc1 = m_xc.newCursor()) {
             assertTrue(xc0.isAtSamePositionAs(xc1));
             assertEquals(4, xc1.copyChars(4, xc0));
             assertEquals("0123", xc0.getTextValue());
             xc0.toPrevToken();
             assertEquals("01230123", xc0.getTextValue());
             assertEquals("0123", xc1.getTextValue());
-        } finally {
-            xc0.dispose();
-            xc1.dispose();
         }
     }
 
@@ -106,11 +89,8 @@ public class CopyCharsTest extends Basic
     public void testCopyCharsGTmax() throws Exception {
         m_xo = 
XmlObject.Factory.parse("<foo><bar>0123</bar><bar>WXYZ</bar></foo>");
         m_xc = m_xo.newCursor();
-        toNextTokenOfType(m_xc, TokenType.TEXT);
-        XmlCursor xc0 = m_xc.newCursor();
-        toNextTokenOfType(m_xc, TokenType.TEXT);
-        XmlCursor xc1 = m_xc.newCursor();
-        try {
+        try (XmlCursor xc0 = toNextTokenOfTypeCursor(m_xc, TokenType.TEXT);
+            XmlCursor xc1 = toNextTokenOfTypeCursor(m_xc, TokenType.TEXT)) {
             assertFalse(xc0.isAtSamePositionAs(xc1));
             assertEquals(4, xc1.copyChars(1000, xc0));
             // verify xc0
@@ -119,9 +99,6 @@ public class CopyCharsTest extends Basic
             assertEquals("WXYZ0123", xc0.getTextValue());
             // verify xc1
             assertEquals("WXYZ", xc1.getTextValue());
-        } finally {
-            xc0.dispose();
-            xc1.dispose();
         }
     }
 
@@ -130,14 +107,14 @@ public class CopyCharsTest extends Basic
         m_xo = XmlObject.Factory.parse(Common.XML_FOO_DIGITS);
         m_xc = m_xo.newCursor();
         XmlObject xo = XmlObject.Factory.parse(Common.XML_FOO_2ATTR_TEXT);
-        XmlCursor xc1 = xo.newCursor();
-        toNextTokenOfType(m_xc, TokenType.TEXT);
-        toNextTokenOfType(xc1, TokenType.TEXT);
-        assertEquals(5, m_xc.copyChars(5, xc1));
-        assertEquals(5,xc1.toPrevChar(5));
-        // verify xc1
-        assertEquals("01234text", xc1.getTextValue());
-        xc1.dispose();
+        try (XmlCursor xc1 = xo.newCursor()) {
+            toNextTokenOfType(m_xc, TokenType.TEXT);
+            toNextTokenOfType(xc1, TokenType.TEXT);
+            assertEquals(5, m_xc.copyChars(5, xc1));
+            assertEquals(5,xc1.toPrevChar(5));
+            // verify xc1
+            assertEquals("01234text", xc1.getTextValue());
+        }
         // verify m_xc
         assertEquals("01234", m_xc.getTextValue());
     }
@@ -147,9 +124,10 @@ public class CopyCharsTest extends Basic
         m_xo = XmlObject.Factory.parse(Common.XML_FOO_DIGITS);
         m_xc = m_xo.newCursor();
         XmlObject xo = XmlObject.Factory.newInstance();
-        XmlCursor xc1 = xo.newCursor();
-        toNextTokenOfType(m_xc, TokenType.TEXT);
-        assertEquals(5, m_xc.copyChars(5, xc1));
+        try (XmlCursor xc1 = xo.newCursor()) {
+            toNextTokenOfType(m_xc, TokenType.TEXT);
+            assertEquals(5, m_xc.copyChars(5, xc1));
+        }
     }
 }
 

Modified: xmlbeans/trunk/src/test/java/xmlcursor/detailed/CopyTest.java
URL: 
http://svn.apache.org/viewvc/xmlbeans/trunk/src/test/java/xmlcursor/detailed/CopyTest.java?rev=1896764&r1=1896763&r2=1896764&view=diff
==============================================================================
--- xmlbeans/trunk/src/test/java/xmlcursor/detailed/CopyTest.java (original)
+++ xmlbeans/trunk/src/test/java/xmlcursor/detailed/CopyTest.java Thu Jan  6 
17:54:30 2022
@@ -30,19 +30,18 @@ public class CopyTest {
     public void testCopyNamespaceMigration() throws XmlException {
         String s1 = "<X xmlns=\"foo\" xmlns:xsi=\"bar\"><zzz>123</zzz></X>";
         String s2 = "<Y> ... [some content] ... </Y>";
-        XmlCursor xc1 = XmlObject.Factory.parse(s1).newCursor();
-        xc1.toFirstContentToken();
-        xc1.toFirstChild();
-        XmlCursor xc2 = XmlObject.Factory.parse(s2).newCursor();
-        assertEquals(XmlCursor.TokenType.START, xc2.toFirstContentToken());
-        xc2.toNextToken();
-        xc1.copyXml(xc2);
-        xc2.toStartDoc();
-        assertEquals("<Y>" +
-                     "<foo:zzz xmlns:foo=\"foo\" 
xmlns:xsi=\"bar\">123</foo:zzz>" +
-                     " ... [some content] ... </Y>", xc2.xmlText());
-        xc1.dispose();
-        xc2.dispose();
+        try (XmlCursor xc1 = XmlObject.Factory.parse(s1).newCursor();
+            XmlCursor xc2 = XmlObject.Factory.parse(s2).newCursor()) {
+            xc1.toFirstContentToken();
+            xc1.toFirstChild();
+            assertEquals(XmlCursor.TokenType.START, xc2.toFirstContentToken());
+            xc2.toNextToken();
+            xc1.copyXml(xc2);
+            xc2.toStartDoc();
+            assertEquals("<Y>" +
+                         "<foo:zzz xmlns:foo=\"foo\" 
xmlns:xsi=\"bar\">123</foo:zzz>" +
+                         " ... [some content] ... </Y>", xc2.xmlText());
+        }
     }
 
 }



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

Reply via email to