From e018e33166904a4d5d3e29899b325217815af4a6 Mon Sep 17 00:00:00 2001 From: Miguel Reboiro-Jato Date: Thu, 16 Nov 2023 10:55:44 +0100 Subject: [PATCH] Closes some unclosed streams Some StringWriter streams were not closes in the examples. This commit fixes this error. --- pom.xml | 2 +- .../es/uvigo/esei/dai/xml/dom/DOMParsing.java | 12 +++++------ .../es/uvigo/esei/dai/xml/xpath/XSLUtils.java | 20 +++++++++++++++---- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index 3b0d463..ed5c723 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ es.uvigo.esei.dai xml - 1.0.0 + 1.0.1 Ejemplos de DAI - APIs XML 2014 diff --git a/src/main/java/es/uvigo/esei/dai/xml/dom/DOMParsing.java b/src/main/java/es/uvigo/esei/dai/xml/dom/DOMParsing.java index 1e31485..dc6d5ba 100644 --- a/src/main/java/es/uvigo/esei/dai/xml/dom/DOMParsing.java +++ b/src/main/java/es/uvigo/esei/dai/xml/dom/DOMParsing.java @@ -102,7 +102,7 @@ public class DOMParsing { return builder.parse(new File(documentPath)); } - public static String toXML(Document document) throws TransformerException { + public static String toXML(Document document) throws TransformerException, IOException { // Creación y configuración del transformador. En este caso, se activa // la indentación del XML final TransformerFactory factory = TransformerFactory.newInstance(); @@ -112,10 +112,10 @@ public class DOMParsing { transformer.setOutputProperty(OutputKeys.INDENT, "yes"); // El resultado se almacenará en una cadena de texto - final StringWriter writer = new StringWriter(); - - transformer.transform(new DOMSource(document), new StreamResult(writer)); - - return writer.toString(); + try (final StringWriter writer = new StringWriter()) { + transformer.transform(new DOMSource(document), new StreamResult(writer)); + + return writer.toString(); + } } } diff --git a/src/main/java/es/uvigo/esei/dai/xml/xpath/XSLUtils.java b/src/main/java/es/uvigo/esei/dai/xml/xpath/XSLUtils.java index 0e84e8d..a7a8bb3 100644 --- a/src/main/java/es/uvigo/esei/dai/xml/xpath/XSLUtils.java +++ b/src/main/java/es/uvigo/esei/dai/xml/xpath/XSLUtils.java @@ -1,6 +1,7 @@ package es.uvigo.esei.dai.xml.xpath; import java.io.File; +import java.io.IOException; import java.io.StringWriter; import javax.xml.namespace.NamespaceContext; @@ -76,14 +77,25 @@ public class XSLUtils { transformer.transform(xmlSource, result); } - public static String transformWithXSLT(File xml, File xslt) throws TransformerException { + public static String transformWithXSLT(File xml, File xslt) throws TransformerException, IOException { final TransformerFactory tFactory = TransformerFactory.newInstance(); final Transformer transformer = tFactory.newTransformer(new StreamSource(xslt)); - final StringWriter writer = new StringWriter(); + try (final StringWriter writer = new StringWriter()) { + transformer.transform(new StreamSource(xml), new StreamResult(writer)); - transformer.transform(new StreamSource(xml), new StreamResult(writer)); + return writer.toString(); + } + } + + public static String transformToString(File xml) throws TransformerException, IOException { + final TransformerFactory tFactory = TransformerFactory.newInstance(); + final Transformer transformer = tFactory.newTransformer(); + + try (final StringWriter writer = new StringWriter()) { + transformer.transform(new StreamSource(xml), new StreamResult(writer)); - return writer.toString(); + return writer.toString(); + } } } -- 2.18.1