You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2021/12/28 10:24:04 UTC
svn commit: r1896470 - in /poi/trunk/poi-ooxml/src/main/java/org/apache/poi: xslf/usermodel/ xssf/usermodel/ xwpf/usermodel/
Author: fanningpj
Date: Tue Dec 28 10:24:04 2021
New Revision: 1896470
URL: http://svn.apache.org/viewvc?rev=1896470&view=rev
Log:
close cursors in finally blocks
Modified:
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/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/xwpf/usermodel/XWPFAbstractFootnoteEndnote.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/XWPFDocument.java
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFHeader.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/XWPFTableCell.java
poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java
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=1896470&r1=1896469&r2=1896470&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 Tue Dec 28 10:24:04 2021
@@ -139,10 +139,13 @@ public final class XSLFChart extends XDD
CTGraphicalObjectData gr = frame.addNewGraphic().addNewGraphicData();
XmlCursor grCur = gr.newCursor();
- grCur.toNextToken();
- grCur.beginElement(new QName(CHART_URI, "chart"));
- grCur.insertAttributeWithValue("id", PackageRelationshipTypes.CORE_PROPERTIES_ECMA376_NS, rID);
- grCur.dispose();
+ try {
+ 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);
return frame;
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=1896470&r1=1896469&r2=1896470&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 Tue Dec 28 10:24:04 2021
@@ -191,9 +191,12 @@ public class XSLFGraphicFrame extends XS
XmlObject[] obj = getGraphicalData().selectPath(xpath);
if (obj != null && obj.length == 1) {
XmlCursor c = obj[0].newCursor();
- QName idQualifiedName = new QName(CORE_PROPERTIES_ECMA376_NS, "id");
- id = c.getAttributeText(idQualifiedName);
- c.dispose();
+ try {
+ QName idQualifiedName = new QName(CORE_PROPERTIES_ECMA376_NS, "id");
+ id = c.getAttributeText(idQualifiedName);
+ } finally {
+ c.dispose();
+ }
}
if (id == null) {
return null;
@@ -251,8 +254,9 @@ public class XSLFGraphicFrame extends XS
}
} catch (InvalidFormatException | IOException e) {
throw new POIXMLException(e);
+ } finally {
+ c.dispose();
}
- c.dispose();
}
}
@@ -287,8 +291,9 @@ public class XSLFGraphicFrame extends XS
} catch (InvalidFormatException e){
throw new POIXMLException(e);
+ } finally {
+ c.dispose();
}
- 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=1896470&r1=1896469&r2=1896470&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 Tue Dec 28 10:24:04 2021
@@ -251,44 +251,46 @@ public class XSLFObjectShape extends XSL
CTGraphicalObjectData gr = frame.addNewGraphic().addNewGraphicData();
gr.setUri(OLE_URI);
XmlCursor grCur = gr.newCursor();
- grCur.toEndToken();
- grCur.beginElement(new QName(PML_NS, "oleObj"));
- grCur.insertElement(new QName(PML_NS, "embed"));
-
-
- CTGroupShape grpShp = CTGroupShape.Factory.newInstance();
- CTPicture pic = grpShp.addNewPic();
- CTPictureNonVisual nvPicPr = pic.addNewNvPicPr();
- CTNonVisualDrawingProps cNvPr = nvPicPr.addNewCNvPr();
- cNvPr.setName("");
- cNvPr.setId(0);
- nvPicPr.addNewCNvPicPr();
- nvPicPr.addNewNvPr();
-
-
- CTBlipFillProperties blip = pic.addNewBlipFill();
- blip.addNewBlip().setEmbed(picRel);
- blip.addNewStretch().addNewFillRect();
-
- CTShapeProperties spPr = pic.addNewSpPr();
- CTTransform2D xfrm = spPr.addNewXfrm();
- CTPoint2D off = xfrm.addNewOff();
- off.setX(1270000);
- off.setY(1270000);
- CTPositiveSize2D xext = xfrm.addNewExt();
- xext.setCx(1270000);
- xext.setCy(1270000);
-
- spPr.addNewPrstGeom().setPrst(STShapeType.RECT);
-
-
- XmlCursor picCur = grpShp.newCursor();
- picCur.toStartDoc();
- picCur.moveXmlContents(grCur);
- picCur.dispose();
-
- grCur.dispose();
-
+ try {
+ grCur.toEndToken();
+ grCur.beginElement(new QName(PML_NS, "oleObj"));
+ grCur.insertElement(new QName(PML_NS, "embed"));
+
+ CTGroupShape grpShp = CTGroupShape.Factory.newInstance();
+ CTPicture pic = grpShp.addNewPic();
+ CTPictureNonVisual nvPicPr = pic.addNewNvPicPr();
+ CTNonVisualDrawingProps cNvPr = nvPicPr.addNewCNvPr();
+ cNvPr.setName("");
+ cNvPr.setId(0);
+ nvPicPr.addNewCNvPicPr();
+ nvPicPr.addNewNvPr();
+
+
+ CTBlipFillProperties blip = pic.addNewBlipFill();
+ blip.addNewBlip().setEmbed(picRel);
+ blip.addNewStretch().addNewFillRect();
+
+ CTShapeProperties spPr = pic.addNewSpPr();
+ CTTransform2D xfrm = spPr.addNewXfrm();
+ CTPoint2D off = xfrm.addNewOff();
+ off.setX(1270000);
+ off.setY(1270000);
+ CTPositiveSize2D xext = xfrm.addNewExt();
+ xext.setCx(1270000);
+ xext.setCy(1270000);
+
+ spPr.addNewPrstGeom().setPrst(STShapeType.RECT);
+
+ XmlCursor picCur = grpShp.newCursor();
+ try {
+ 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=1896470&r1=1896469&r2=1896470&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 Tue Dec 28 10:24:04 2021
@@ -241,11 +241,14 @@ public class XSLFPictureShape extends XS
extBitmap = extLst.addNewExt();
extBitmap.setUri(BITMAP_URI);
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");
- cur.dispose();
+ try {
+ cur.toEndToken();
+ cur.beginElement(new QName(MS_DML_NS, "useLocalDpi", "a14"));
+ cur.insertNamespace("a14", MS_DML_NS);
+ cur.insertAttributeWithValue("val", "0");
+ } finally {
+ cur.dispose();
+ }
}
final int svgId = getExt(extLst, SVG_URI);
@@ -261,11 +264,14 @@ public class XSLFPictureShape extends XS
CTOfficeArtExtension svgBitmap = extLst.addNewExt();
svgBitmap.setUri(SVG_URI);
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);
- cur.dispose();
+ try {
+ 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();
+ }
}
@Override
@@ -424,12 +430,15 @@ public class XSLFPictureShape extends XS
for(CTOfficeArtExtension ext : extLst.getExtArray()){
String xpath = "declare namespace a14='"+ MS_DML_NS +"' $this//a14:imgProps/a14:imgLayer";
XmlObject[] obj = ext.selectPath(xpath);
- if(obj != null && obj.length == 1){
+ if(obj != null && obj.length == 1) {
XmlCursor c = obj[0].newCursor();
- String id = c.getAttributeText(EMBED_TAG);
- String newId = getSheet().importBlip(id, p.getSheet());
- c.setAttributeText(EMBED_TAG, newId);
- c.dispose();
+ try {
+ 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=1896470&r1=1896469&r2=1896470&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 Tue Dec 28 10:24:04 2021
@@ -1155,9 +1155,12 @@ import org.openxmlformats.schemas.presen
@Override
public boolean isLineStyle() {
XmlCursor cur = props.newCursor();
- String name = cur.getName().getLocalPart();
- cur.dispose();
- return "lnRef".equals(name);
+ try {
+ 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=1896470&r1=1896469&r2=1896470&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 Tue Dec 28 10:24:04 2021
@@ -255,15 +255,18 @@ public abstract class XSLFShape implemen
*/
@SuppressWarnings({"unchecked", "WeakerAccess", "unused", "SameParameterValue"})
protected <T extends XmlObject> T getChild(Class<T> childClass, String namespace, String nodename) {
- XmlCursor cur = getXmlObject().newCursor();
T child = null;
- if (cur.toChild(namespace, nodename)) {
- child = (T)cur.getObject();
- }
- if (cur.toChild(XSLFRelation.NS_DRAWINGML, nodename)) {
- child = (T)cur.getObject();
+ XmlCursor cur = getXmlObject().newCursor();
+ try {
+ if (cur.toChild(namespace, nodename)) {
+ child = (T)cur.getObject();
+ }
+ if (cur.toChild(XSLFRelation.NS_DRAWINGML, nodename)) {
+ child = (T)cur.getObject();
+ }
+ } finally {
+ cur.dispose();
}
- cur.dispose();
return child;
}
@@ -457,12 +460,15 @@ public abstract class XSLFShape implemen
} else {
return null;
}
- XmlCursor cur = styleLst.newCursor();
XSLFFillProperties fp = null;
- if (cur.toChild(Math.toIntExact(childIdx))) {
- fp = XSLFPropertiesDelegate.getFillDelegate(cur.getObject());
+ XmlCursor cur = styleLst.newCursor();
+ try {
+ if (cur.toChild(Math.toIntExact(childIdx))) {
+ fp = XSLFPropertiesDelegate.getFillDelegate(cur.getObject());
+ }
+ } finally {
+ cur.dispose();
}
- cur.dispose();
CTSchemeColor phClr = fillRef.getSchemeClr();
PaintStyle res = selectPaint(fp, phClr, theme.getPackagePart(), theme, hasPlaceholder);
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=1896470&r1=1896469&r2=1896470&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 Tue Dec 28 10:24:04 2021
@@ -142,7 +142,7 @@ implements XSLFShapeContainer, Sheet<XSL
List<XSLFShape> shapes = new ArrayList<>();
XmlCursor cur = spTree.newCursor();
try {
- for (boolean b=cur.toFirstChild();b;b=cur.toNextSibling()) {
+ for (boolean b = cur.toFirstChild(); b; b = cur.toNextSibling()) {
XmlObject ch = cur.getObject();
if(ch instanceof CTShape){
// simple shape
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=1896470&r1=1896469&r2=1896470&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 Tue Dec 28 10:24:04 2021
@@ -261,17 +261,22 @@ public class XSLFTable extends XSLFGraph
frame.addNewXfrm();
CTGraphicalObjectData gr = frame.addNewGraphic().addNewGraphicData();
XmlCursor grCur = gr.newCursor();
- grCur.toNextToken();
- grCur.beginElement(new QName(XSLFRelation.NS_DRAWINGML, "tbl"));
+ try {
+ grCur.toNextToken();
+ grCur.beginElement(new QName(XSLFRelation.NS_DRAWINGML, "tbl"));
- CTTable tbl = CTTable.Factory.newInstance();
- tbl.addNewTblPr();
- tbl.addNewTblGrid();
- XmlCursor tblCur = tbl.newCursor();
-
- tblCur.moveXmlContents(grCur);
- tblCur.dispose();
- grCur.dispose();
+ CTTable tbl = CTTable.Factory.newInstance();
+ tbl.addNewTblPr();
+ tbl.addNewTblGrid();
+ XmlCursor tblCur = tbl.newCursor();
+ try {
+ 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=1896470&r1=1896469&r2=1896470&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 Tue Dec 28 10:24:04 2021
@@ -768,11 +768,17 @@ public class XSLFTextParagraph implement
}
XmlCursor thisC = thisP.newCursor();
- thisC.toEndToken();
- XmlCursor otherC = otherP.newCursor();
- otherC.copyXmlContents(thisC);
- otherC.dispose();
- thisC.dispose();
+ try {
+ thisC.toEndToken();
+ XmlCursor otherC = otherP.newCursor();
+ try {
+ otherC.copyXmlContents(thisC);
+ } finally {
+ otherC.dispose();
+ }
+ } finally {
+ thisC.dispose();
+ }
for (XSLFTextRun tr : other.getTextRuns()) {
XmlObject xo = tr.getXmlObject();
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=1896470&r1=1896469&r2=1896470&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 Tue Dec 28 10:24:04 2021
@@ -461,27 +461,33 @@ public final class XSSFDrawing extends P
ole1.setShapeId(shapeId);
ole1.setId(olePR.getId());
- XmlCursor cur1 = ole1.newCursor();
- cur1.toEndToken();
- cur1.beginElement("objectPr", XSSFRelation.NS_SPREADSHEETML);
- cur1.insertAttributeWithValue("id", PackageRelationshipTypes.CORE_PROPERTIES_ECMA376_NS, imgSheetPR.getId());
- cur1.insertAttributeWithValue("defaultSize", "0");
- cur1.beginElement("anchor", XSSFRelation.NS_SPREADSHEETML);
- cur1.insertAttributeWithValue("moveWithCells", "1");
-
- CTTwoCellAnchor ctAnchor = createTwoCellAnchor((XSSFClientAnchor) anchor);
-
- XmlCursor cur2 = ctAnchor.newCursor();
- cur2.copyXmlContents(cur1);
- cur2.dispose();
-
- cur1.toParent();
- cur1.toFirstChild();
- cur1.setName(new QName(XSSFRelation.NS_SPREADSHEETML, "from"));
- cur1.toNextSibling();
- cur1.setName(new QName(XSSFRelation.NS_SPREADSHEETML, "to"));
+ CTTwoCellAnchor ctAnchor;
+ final XmlCursor cur1 = ole1.newCursor();
+ try {
+ cur1.toEndToken();
+ cur1.beginElement("objectPr", XSSFRelation.NS_SPREADSHEETML);
+ cur1.insertAttributeWithValue("id", PackageRelationshipTypes.CORE_PROPERTIES_ECMA376_NS, imgSheetPR.getId());
+ cur1.insertAttributeWithValue("defaultSize", "0");
+ cur1.beginElement("anchor", XSSFRelation.NS_SPREADSHEETML);
+ cur1.insertAttributeWithValue("moveWithCells", "1");
+
+ ctAnchor = createTwoCellAnchor((XSSFClientAnchor) anchor);
+
+ final XmlCursor cur2 = ctAnchor.newCursor();
+ try {
+ cur2.copyXmlContents(cur1);
+ } finally {
+ cur2.dispose();
+ }
- cur1.dispose();
+ cur1.toParent();
+ cur1.toFirstChild();
+ 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
CTShape ctShape = ctAnchor.addNewSp();
@@ -498,9 +504,12 @@ public final class XSSFDrawing extends P
cNvPr.setName("Object " + shapeId);
XmlCursor extCur = cNvPr.getExtLst().getExtArray(0).newCursor();
- extCur.toFirstChild();
- extCur.setAttributeText(new QName("spid"), "_x0000_s" + shapeId);
- extCur.dispose();
+ try {
+ extCur.toFirstChild();
+ extCur.setAttributeText(new QName("spid"), "_x0000_s" + shapeId);
+ } finally {
+ extCur.dispose();
+ }
XSSFObjectData shape = new XSSFObjectData(this, ctShape);
shape.anchor = (XSSFClientAnchor) anchor;
@@ -682,8 +691,8 @@ public final class XSSFDrawing extends P
QName uriName = new QName(null, "uri");
String xquery = "declare namespace a='" + XSSFRelation.NS_DRAWINGML + "' .//a:extLst/a:ext";
XmlCursor cur = shape.newCursor();
- cur.selectPath(xquery);
try {
+ cur.selectPath(xquery);
while (cur.toNextSelection()) {
String uri = cur.getAttributeText(uriName);
if ("{63B3BB69-23CF-44E3-9099-C40C66FF867C}".equals(uri)) {
@@ -701,10 +710,13 @@ public final class XSSFDrawing extends P
XmlObject parentXbean = null;
XmlCursor cursor = obj.newCursor();
- if (cursor.toParent()) {
- parentXbean = cursor.getObject();
+ try {
+ if (cursor.toParent()) {
+ parentXbean = cursor.getObject();
+ }
+ } finally {
+ cursor.dispose();
}
- cursor.dispose();
if (parentXbean != null) {
if (parentXbean instanceof CTTwoCellAnchor) {
CTTwoCellAnchor ct = (CTTwoCellAnchor) parentXbean;
Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFAbstractFootnoteEndnote.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFAbstractFootnoteEndnote.java?rev=1896470&r1=1896469&r2=1896470&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFAbstractFootnoteEndnote.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFAbstractFootnoteEndnote.java Tue Dec 28 10:24:04 2021
@@ -246,16 +246,21 @@ public abstract class XWPFAbstractFootno
*/
@Override
public XWPFTableCell getTableCell(CTTc cell) {
- XmlCursor cursor = cell.newCursor();
- cursor.toParent();
- XmlObject o = cursor.getObject();
- if (!(o instanceof CTRow)) {
- return null;
+ XmlObject o;
+ CTRow row;
+ final XmlCursor cursor = cell.newCursor();
+ try {
+ cursor.toParent();
+ o = cursor.getObject();
+ if (!(o instanceof CTRow)) {
+ return null;
+ }
+ row = (CTRow) o;
+ cursor.toParent();
+ o = cursor.getObject();
+ } finally {
+ cursor.dispose();
}
- CTRow row = (CTRow) o;
- cursor.toParent();
- o = cursor.getObject();
- cursor.dispose();
if (!(o instanceof CTTbl)) {
return null;
}
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=1896470&r1=1896469&r2=1896470&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 Tue Dec 28 10:24:04 2021
@@ -255,17 +255,22 @@ public class XWPFComment implements IBod
@Override
public XWPFTableCell getTableCell(CTTc cell) {
- XmlCursor cursor = cell.newCursor();
- cursor.toParent();
- XmlObject o = cursor.getObject();
- if (!(o instanceof CTRow)) {
+ XmlObject o;
+ CTRow row;
+ final XmlCursor cursor = cell.newCursor();
+ try {
+ cursor.toParent();
+ o = cursor.getObject();
+ if (!(o instanceof CTRow)) {
+ cursor.dispose();
+ return null;
+ }
+ row = (CTRow) o;
+ cursor.toParent();
+ o = cursor.getObject();
+ } finally {
cursor.dispose();
- return null;
}
- CTRow row = (CTRow) o;
- cursor.toParent();
- o = cursor.getObject();
- cursor.dispose();
if (!(o instanceof CTTbl)) {
return null;
}
Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java?rev=1896470&r1=1896469&r2=1896470&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java Tue Dec 28 10:24:04 2021
@@ -1651,16 +1651,21 @@ public class XWPFDocument extends POIXML
*/
@Override
public XWPFTableCell getTableCell(CTTc cell) {
- XmlCursor cursor = cell.newCursor();
- cursor.toParent();
- XmlObject o = cursor.getObject();
- if (!(o instanceof CTRow)) {
- return null;
+ XmlObject o;
+ CTRow row;
+ final XmlCursor cursor = cell.newCursor();
+ try {
+ cursor.toParent();
+ o = cursor.getObject();
+ if (!(o instanceof CTRow)) {
+ return null;
+ }
+ row = (CTRow) o;
+ cursor.toParent();
+ o = cursor.getObject();
+ } finally {
+ cursor.dispose();
}
- CTRow row = (CTRow) o;
- cursor.toParent();
- o = cursor.getObject();
- cursor.dispose();
if (!(o instanceof CTTbl)) {
return null;
}
Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFHeader.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFHeader.java?rev=1896470&r1=1896469&r2=1896470&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFHeader.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xwpf/usermodel/XWPFHeader.java Tue Dec 28 10:24:04 2021
@@ -56,19 +56,22 @@ public class XWPFHeader extends XWPFHead
public XWPFHeader(XWPFDocument doc, CTHdrFtr hdrFtr) {
super(doc, hdrFtr);
XmlCursor cursor = headerFooter.newCursor();
- cursor.selectPath("./*");
- while (cursor.toNextSelection()) {
- XmlObject o = cursor.getObject();
- if (o instanceof CTP) {
- XWPFParagraph p = new XWPFParagraph((CTP) o, this);
- paragraphs.add(p);
- }
- if (o instanceof CTTbl) {
- XWPFTable t = new XWPFTable((CTTbl) o, this);
- tables.add(t);
+ try {
+ cursor.selectPath("./*");
+ while (cursor.toNextSelection()) {
+ XmlObject o = cursor.getObject();
+ if (o instanceof CTP) {
+ XWPFParagraph p = new XWPFParagraph((CTP) o, this);
+ paragraphs.add(p);
+ }
+ if (o instanceof CTTbl) {
+ XWPFTable t = new XWPFTable((CTTbl) o, this);
+ tables.add(t);
+ }
}
+ } finally {
+ cursor.dispose();
}
- cursor.dispose();
}
/**
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=1896470&r1=1896469&r2=1896470&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 Tue Dec 28 10:24:04 2021
@@ -331,8 +331,11 @@ public abstract class XWPFHeaderFooter e
if (paragraphs.contains(paragraph)) {
CTP ctP = paragraph.getCTP();
XmlCursor c = ctP.newCursor();
- c.removeXml();
- c.dispose();
+ try {
+ c.removeXml();
+ } finally {
+ c.dispose();
+ }
paragraphs.remove(paragraph);
bodyElements.remove(paragraph);
}
@@ -347,8 +350,11 @@ public abstract class XWPFHeaderFooter e
if (tables.contains(table)) {
CTTbl ctTbl = table.getCTTbl();
XmlCursor c = ctTbl.newCursor();
- c.removeXml();
- c.dispose();
+ try {
+ c.removeXml();
+ } finally {
+ c.dispose();
+ }
tables.remove(table);
bodyElements.remove(table);
}
@@ -359,8 +365,11 @@ public abstract class XWPFHeaderFooter e
*/
public void clearHeaderFooter() {
XmlCursor c = headerFooter.newCursor();
- c.removeXmlContents();
- c.dispose();
+ try {
+ c.removeXmlContents();
+ } finally {
+ c.dispose();
+ }
paragraphs.clear();
tables.clear();
bodyElements.clear();
@@ -391,19 +400,25 @@ public abstract class XWPFHeaderFooter e
paragraphs.add(pos, newP);
}
int i = 0;
- XmlCursor p2 = p.newCursor();
- cursor.toCursor(p2);
- p2.dispose();
+ final XmlCursor p2 = p.newCursor();
+ try {
+ cursor.toCursor(p2);
+ } finally {
+ p2.dispose();
+ }
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();
+ final XmlCursor p3 = p.newCursor();
+ try {
+ cursor.toCursor(p3);
+ cursor.toEndToken();
+ } finally {
+ p3.dispose();
+ }
return newP;
}
return null;
@@ -434,19 +449,25 @@ public abstract class XWPFHeaderFooter e
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++;
+ final XmlCursor cursor2 = t.newCursor();
+ try {
+ while (cursor2.toPrevSibling()) {
+ o = cursor2.getObject();
+ if (o instanceof CTP || o instanceof CTTbl) {
+ i++;
+ }
}
+ } finally {
+ cursor2.dispose();
}
- cursor2.dispose();
bodyElements.add(i, newT);
- cursor2 = t.newCursor();
- cursor.toCursor(cursor2);
- cursor.toEndToken();
- cursor2.dispose();
+ final XmlCursor cursor3 = t.newCursor();
+ try {
+ cursor.toCursor(cursor3);
+ cursor.toEndToken();
+ } finally {
+ cursor3.dispose();
+ }
return newT;
}
return null;
@@ -457,10 +478,13 @@ public abstract class XWPFHeaderFooter e
*/
private boolean isCursorInHdrF(XmlCursor cursor) {
XmlCursor verify = cursor.newCursor();
- verify.toParent();
- boolean result = (verify.getObject() == this.headerFooter);
- verify.dispose();
- return result;
+ try {
+ verify.toParent();
+ boolean result = (verify.getObject() == this.headerFooter);
+ return result;
+ } finally {
+ verify.dispose();
+ }
}
@@ -503,21 +527,24 @@ public abstract class XWPFHeaderFooter e
// parse the document with cursor and add
// the XmlObject to its lists
XmlCursor cursor = headerFooter.newCursor();
- cursor.selectPath("./*");
- while (cursor.toNextSelection()) {
- XmlObject o = cursor.getObject();
- if (o instanceof CTP) {
- XWPFParagraph p = new XWPFParagraph((CTP) o, this);
- paragraphs.add(p);
- bodyElements.add(p);
- }
- if (o instanceof CTTbl) {
- XWPFTable t = new XWPFTable((CTTbl) o, this);
- tables.add(t);
- bodyElements.add(t);
+ try {
+ cursor.selectPath("./*");
+ while (cursor.toNextSelection()) {
+ XmlObject o = cursor.getObject();
+ if (o instanceof CTP) {
+ XWPFParagraph p = new XWPFParagraph((CTP) o, this);
+ paragraphs.add(p);
+ bodyElements.add(p);
+ }
+ if (o instanceof CTTbl) {
+ XWPFTable t = new XWPFTable((CTTbl) o, this);
+ tables.add(t);
+ bodyElements.add(t);
+ }
}
+ } finally {
+ cursor.dispose();
}
- cursor.dispose();
}
/**
@@ -525,17 +552,21 @@ public abstract class XWPFHeaderFooter e
*/
@Override
public XWPFTableCell getTableCell(CTTc cell) {
- XmlCursor cursor = cell.newCursor();
- cursor.toParent();
- XmlObject o = cursor.getObject();
- if (!(o instanceof CTRow)) {
+ XmlObject o;
+ CTRow row;
+ final XmlCursor cursor = cell.newCursor();
+ try {
+ cursor.toParent();
+ o = cursor.getObject();
+ if (!(o instanceof CTRow)) {
+ return null;
+ }
+ row = (CTRow) o;
+ cursor.toParent();
+ o = cursor.getObject();
+ } finally {
cursor.dispose();
- return null;
}
- CTRow row = (CTRow) o;
- cursor.toParent();
- o = cursor.getObject();
- 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=1896470&r1=1896469&r2=1896470&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 Tue Dec 28 10:24:04 2021
@@ -73,33 +73,36 @@ public class XWPFParagraph implements IB
// Check for bits that only apply when attached to a core document
// TODO Make this nicer by tracking the XWPFFootnotes directly
XmlCursor c = r.newCursor();
- c.selectPath("child::*");
- while (c.toNextSelection()) {
- XmlObject o = c.getObject();
- if (o instanceof CTFtnEdnRef) {
- CTFtnEdnRef ftn = (CTFtnEdnRef) o;
- footnoteText.append(" [").append(ftn.getId()).append(": ");
- XWPFAbstractFootnoteEndnote footnote =
- ftn.getDomNode().getLocalName().equals("footnoteReference") ?
- document.getFootnoteByID(ftn.getId().intValue()) :
- document.getEndnoteByID(ftn.getId().intValue());
- if (null != footnote) {
- boolean first = true;
- for (XWPFParagraph p : footnote.getParagraphs()) {
- if (!first) {
- footnoteText.append("\n");
+ try {
+ c.selectPath("child::*");
+ while (c.toNextSelection()) {
+ XmlObject o = c.getObject();
+ if (o instanceof CTFtnEdnRef) {
+ CTFtnEdnRef ftn = (CTFtnEdnRef) o;
+ footnoteText.append(" [").append(ftn.getId()).append(": ");
+ XWPFAbstractFootnoteEndnote footnote =
+ ftn.getDomNode().getLocalName().equals("footnoteReference") ?
+ document.getFootnoteByID(ftn.getId().intValue()) :
+ document.getEndnoteByID(ftn.getId().intValue());
+ if (null != footnote) {
+ boolean first = true;
+ for (XWPFParagraph p : footnote.getParagraphs()) {
+ if (!first) {
+ footnoteText.append("\n");
+ }
+ first = false;
+ footnoteText.append(p.getText());
}
- first = false;
- footnoteText.append(p.getText());
+ } else {
+ footnoteText.append("!!! End note with ID \"").append(ftn.getId()).append("\" not found in document.");
}
- } else {
- footnoteText.append("!!! End note with ID \"").append(ftn.getId()).append("\" not found in document.");
- }
- footnoteText.append("] ");
+ footnoteText.append("] ");
+ }
}
+ } finally {
+ c.dispose();
}
- c.dispose();
}
}
@@ -111,58 +114,61 @@ public class XWPFParagraph implements IB
@SuppressWarnings("deprecation")
private void buildRunsInOrderFromXml(XmlObject object) {
XmlCursor c = object.newCursor();
- c.selectPath("child::*");
- while (c.toNextSelection()) {
- XmlObject o = c.getObject();
- if (o instanceof CTR) {
- XWPFRun r = new XWPFRun((CTR) o, this);
- runs.add(r);
- iruns.add(r);
- }
- if (o instanceof CTHyperlink) {
- CTHyperlink link = (CTHyperlink)o;
- for (CTR r : link.getRArray()) {
- XWPFHyperlinkRun hr = new XWPFHyperlinkRun(link, r, this);
- runs.add(hr);
- iruns.add(hr);
+ try {
+ c.selectPath("child::*");
+ while (c.toNextSelection()) {
+ XmlObject o = c.getObject();
+ if (o instanceof CTR) {
+ XWPFRun r = new XWPFRun((CTR) o, this);
+ runs.add(r);
+ iruns.add(r);
}
- }
- if (o instanceof CTSimpleField) {
- CTSimpleField field = (CTSimpleField)o;
- for (CTR r : field.getRArray()) {
- XWPFFieldRun fr = new XWPFFieldRun(field, r, this);
- runs.add(fr);
- iruns.add(fr);
+ if (o instanceof CTHyperlink) {
+ CTHyperlink link = (CTHyperlink)o;
+ for (CTR r : link.getRArray()) {
+ XWPFHyperlinkRun hr = new XWPFHyperlinkRun(link, r, this);
+ runs.add(hr);
+ iruns.add(hr);
+ }
}
- }
- if (o instanceof CTSdtBlock) {
- XWPFSDT cc = new XWPFSDT((CTSdtBlock) o, part);
- iruns.add(cc);
- }
- if (o instanceof CTSdtRun) {
- XWPFSDT cc = new XWPFSDT((CTSdtRun) o, part);
- iruns.add(cc);
- }
- if (o instanceof CTRunTrackChange) {
- for (CTR r : ((CTRunTrackChange) o).getRArray()) {
- XWPFRun cr = new XWPFRun(r, this);
- runs.add(cr);
- iruns.add(cr);
+ if (o instanceof CTSimpleField) {
+ CTSimpleField field = (CTSimpleField)o;
+ for (CTR r : field.getRArray()) {
+ XWPFFieldRun fr = new XWPFFieldRun(field, r, this);
+ runs.add(fr);
+ iruns.add(fr);
+ }
}
- }
- if (o instanceof CTSmartTagRun) {
- // Smart Tags can be nested many times.
- // This implementation does not preserve the tagging information
- buildRunsInOrderFromXml(o);
- }
- if (o instanceof CTRunTrackChange) {
- // add all the insertions as text
- for (CTRunTrackChange change : ((CTRunTrackChange) o).getInsArray()) {
- buildRunsInOrderFromXml(change);
+ if (o instanceof CTSdtBlock) {
+ XWPFSDT cc = new XWPFSDT((CTSdtBlock) o, part);
+ iruns.add(cc);
+ }
+ if (o instanceof CTSdtRun) {
+ XWPFSDT cc = new XWPFSDT((CTSdtRun) o, part);
+ iruns.add(cc);
+ }
+ if (o instanceof CTRunTrackChange) {
+ for (CTR r : ((CTRunTrackChange) o).getRArray()) {
+ XWPFRun cr = new XWPFRun(r, this);
+ runs.add(cr);
+ iruns.add(cr);
+ }
+ }
+ if (o instanceof CTSmartTagRun) {
+ // Smart Tags can be nested many times.
+ // This implementation does not preserve the tagging information
+ buildRunsInOrderFromXml(o);
+ }
+ if (o instanceof CTRunTrackChange) {
+ // add all the insertions as text
+ for (CTRunTrackChange change : ((CTRunTrackChange) o).getInsArray()) {
+ buildRunsInOrderFromXml(change);
+ }
}
}
+ } finally {
+ c.dispose();
}
- c.dispose();
}
@Internal
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=1896470&r1=1896469&r2=1896470&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 Tue Dec 28 10:24:04 2021
@@ -87,29 +87,32 @@ public class XWPFTableCell implements IB
tables = new ArrayList<>();
XmlCursor cursor = ctTc.newCursor();
- cursor.selectPath("./*");
- while (cursor.toNextSelection()) {
- XmlObject o = cursor.getObject();
- if (o instanceof CTP) {
- XWPFParagraph p = new XWPFParagraph((CTP) o, this);
- paragraphs.add(p);
- bodyElements.add(p);
- }
- if (o instanceof CTTbl) {
- XWPFTable t = new XWPFTable((CTTbl) o, this);
- tables.add(t);
- bodyElements.add(t);
- }
- if (o instanceof CTSdtBlock) {
- XWPFSDT c = new XWPFSDT((CTSdtBlock) o, this);
- bodyElements.add(c);
- }
- if (o instanceof CTSdtRun) {
- XWPFSDT c = new XWPFSDT((CTSdtRun) o, this);
- bodyElements.add(c);
+ try {
+ cursor.selectPath("./*");
+ while (cursor.toNextSelection()) {
+ XmlObject o = cursor.getObject();
+ if (o instanceof CTP) {
+ XWPFParagraph p = new XWPFParagraph((CTP) o, this);
+ paragraphs.add(p);
+ bodyElements.add(p);
+ }
+ if (o instanceof CTTbl) {
+ XWPFTable t = new XWPFTable((CTTbl) o, this);
+ tables.add(t);
+ bodyElements.add(t);
+ }
+ if (o instanceof CTSdtBlock) {
+ XWPFSDT c = new XWPFSDT((CTSdtBlock) o, this);
+ bodyElements.add(c);
+ }
+ if (o instanceof CTSdtRun) {
+ XWPFSDT c = new XWPFSDT((CTSdtRun) o, this);
+ bodyElements.add(c);
+ }
}
+ } finally {
+ cursor.dispose();
}
- cursor.dispose();
}
@Internal
@@ -276,18 +279,24 @@ public class XWPFTableCell implements IB
paragraphs.add(pos, newP);
}
int i = 0;
- XmlCursor p2 = p.newCursor();
- cursor.toCursor(p2);
- p2.dispose();
+ final XmlCursor p2 = p.newCursor();
+ try {
+ cursor.toCursor(p2);
+ } finally {
+ p2.dispose();
+ }
while (cursor.toPrevSibling()) {
o = cursor.getObject();
if (o instanceof CTP || o instanceof CTTbl)
i++;
}
bodyElements.add(i, newP);
- p2 = p.newCursor();
- cursor.toCursor(p2);
- p2.dispose();
+ final XmlCursor p3 = p.newCursor();
+ try {
+ cursor.toCursor(p3);
+ } finally {
+ p3.dispose();
+ }
cursor.toEndToken();
return newP;
}
@@ -313,18 +322,24 @@ public class XWPFTableCell implements IB
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++;
+ final XmlCursor cursor2 = t.newCursor();
+ try {
+ while (cursor2.toPrevSibling()) {
+ o = cursor2.getObject();
+ if (o instanceof CTP || o instanceof CTTbl)
+ i++;
+ }
+ } finally {
+ cursor2.dispose();
}
- cursor2.dispose();
bodyElements.add(i, newT);
- cursor2 = t.newCursor();
- cursor.toCursor(cursor2);
- cursor.toEndToken();
- cursor2.dispose();
+ final XmlCursor cursor3 = t.newCursor();
+ try {
+ cursor.toCursor(cursor3);
+ cursor.toEndToken();
+ } finally {
+ cursor3.dispose();
+ }
return newT;
}
return null;
@@ -335,10 +350,13 @@ public class XWPFTableCell implements IB
*/
private boolean isCursorInTableCell(XmlCursor cursor) {
XmlCursor verify = cursor.newCursor();
- verify.toParent();
- boolean result = (verify.getObject() == this.ctTc);
- verify.dispose();
- return result;
+ try {
+ verify.toParent();
+ boolean result = (verify.getObject() == this.ctTc);
+ return result;
+ } finally {
+ verify.dispose();
+ }
}
@Override
@@ -475,16 +493,21 @@ public class XWPFTableCell implements IB
*/
@Override
public XWPFTableCell getTableCell(CTTc cell) {
- XmlCursor cursor = cell.newCursor();
- cursor.toParent();
- XmlObject o = cursor.getObject();
- if (!(o instanceof CTRow)) {
- return null;
+ XmlObject o;
+ CTRow row;
+ final XmlCursor cursor = cell.newCursor();
+ try {
+ cursor.toParent();
+ o = cursor.getObject();
+ if (!(o instanceof CTRow)) {
+ return null;
+ }
+ row = (CTRow) o;
+ cursor.toParent();
+ o = cursor.getObject();
+ } finally {
+ cursor.dispose();
}
- CTRow row = (CTRow) o;
- cursor.toParent();
- o = cursor.getObject();
- 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=1896470&r1=1896469&r2=1896470&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 Tue Dec 28 10:24:04 2021
@@ -181,16 +181,19 @@ public class XWPFTableRow {
//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();
- cursor.selectPath("./*");
- while (cursor.toNextSelection()) {
- XmlObject o = cursor.getObject();
- if (o instanceof CTTc) {
- cells.add(new XWPFTableCell((CTTc) o, this, table.getBody()));
- } else if (o instanceof CTSdtCell) {
- cells.add(new XWPFSDTCell((CTSdtCell) o, this, table.getBody()));
+ try {
+ cursor.selectPath("./*");
+ while (cursor.toNextSelection()) {
+ XmlObject o = cursor.getObject();
+ if (o instanceof CTTc) {
+ cells.add(new XWPFTableCell((CTTc) o, this, table.getBody()));
+ } else if (o instanceof CTSdtCell) {
+ cells.add(new XWPFSDTCell((CTSdtCell) o, this, table.getBody()));
+ }
}
+ } finally {
+ cursor.dispose();
}
- cursor.dispose();
return cells;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org