Skip to content

Commit e16515d

Browse files
committed
Make sure writer is closed.
1 parent 6eaf164 commit e16515d

File tree

2 files changed

+51
-51
lines changed

2 files changed

+51
-51
lines changed

exist-ant/src/main/java/org/exist/ant/XMLDBXPathTask.java

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,7 @@
3636
import org.exist.util.serializer.SAXSerializer;
3737
import org.exist.util.serializer.SerializerPool;
3838

39-
import java.io.File;
40-
import java.io.FileOutputStream;
41-
import java.io.IOException;
42-
import java.io.OutputStreamWriter;
43-
import java.io.Writer;
39+
import java.io.*;
4440

4541
import java.util.Properties;
4642

@@ -179,27 +175,11 @@ private void writeResource(final XMLResource resource, final File dest) throws I
179175

180176
final SAXSerializer serializer = (SAXSerializer) SerializerPool.getInstance().borrowObject(SAXSerializer.class);
181177

182-
final Writer writer;
183-
if (dest.isDirectory()) {
184-
185-
if (!dest.exists()) {
186-
dest.mkdirs();
187-
}
188-
String fname = resource.getId();
189-
190-
if (!fname.endsWith(".xml")) {
191-
fname += ".xml";
192-
}
193-
final File file = new File(dest, fname);
194-
writer = new OutputStreamWriter(new FileOutputStream(file), UTF_8);
195-
} else {
196-
writer = new OutputStreamWriter(new FileOutputStream(dest), UTF_8 );
178+
try(final Writer writer = getWriter(resource, dest)) {
179+
serializer.setOutput(writer, outputProperties);
180+
resource.getContentAsSAX(serializer);
197181
}
198182

199-
serializer.setOutput(writer, outputProperties);
200-
resource.getContentAsSAX(serializer);
201-
writer.close();
202-
203183
SerializerPool.getInstance().returnObject(serializer);
204184

205185
} else {
@@ -213,6 +193,26 @@ private void writeResource(final XMLResource resource, final File dest) throws I
213193
}
214194
}
215195

196+
private Writer getWriter(XMLResource resource, File dest) throws XMLDBException, FileNotFoundException {
197+
final Writer writer;
198+
if (dest.isDirectory()) {
199+
200+
if (!dest.exists()) {
201+
dest.mkdirs();
202+
}
203+
String fname = resource.getId();
204+
205+
if (!fname.endsWith(".xml")) {
206+
fname += ".xml";
207+
}
208+
final File file = new File(dest, fname);
209+
writer = new OutputStreamWriter(new FileOutputStream(file), UTF_8);
210+
} else {
211+
writer = new OutputStreamWriter(new FileOutputStream(dest), UTF_8 );
212+
}
213+
return writer;
214+
}
215+
216216
/**
217217
* Set the query.
218218
*

exist-ant/src/main/java/org/exist/ant/XMLDBXQueryTask.java

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,7 @@
4343
import org.exist.xmldb.EXistXQueryService;
4444
import org.exist.xmldb.XmldbURI;
4545

46-
import java.io.File;
47-
import java.io.FileOutputStream;
48-
import java.io.IOException;
49-
import java.io.OutputStreamWriter;
50-
import java.io.Writer;
46+
import java.io.*;
5147

5248
import java.net.URL;
5349

@@ -192,29 +188,10 @@ private void writeResource(final XMLResource resource, final File dest) throws I
192188

193189
final SAXSerializer serializer = (SAXSerializer) SerializerPool.getInstance().borrowObject(SAXSerializer.class);
194190

195-
final Writer writer;
196-
if (dest.isDirectory()) {
197-
198-
if (!dest.exists()) {
199-
dest.mkdirs();
200-
}
201-
202-
String fname = resource.getId();
203-
204-
if (!fname.endsWith(".xml")) {
205-
fname += ".xml";
206-
}
207-
208-
final File file = new File(dest, fname);
209-
writer = new OutputStreamWriter(new FileOutputStream(file), UTF_8);
210-
211-
} else {
212-
writer = new OutputStreamWriter(new FileOutputStream(dest), UTF_8);
191+
try(final Writer writer = getWriter(resource, dest)) {
192+
serializer.setOutput(writer, outputProperties);
193+
resource.getContentAsSAX(serializer);
213194
}
214-
215-
serializer.setOutput(writer, outputProperties);
216-
resource.getContentAsSAX(serializer);
217-
writer.close();
218195
SerializerPool.getInstance().returnObject(serializer);
219196

220197
} else {
@@ -228,6 +205,29 @@ private void writeResource(final XMLResource resource, final File dest) throws I
228205
}
229206
}
230207

208+
private Writer getWriter(XMLResource resource, File dest) throws XMLDBException, FileNotFoundException {
209+
final Writer writer;
210+
if (dest.isDirectory()) {
211+
212+
if (!dest.exists()) {
213+
dest.mkdirs();
214+
}
215+
216+
String fname = resource.getId();
217+
218+
if (!fname.endsWith(".xml")) {
219+
fname += ".xml";
220+
}
221+
222+
final File file = new File(dest, fname);
223+
writer = new OutputStreamWriter(new FileOutputStream(file), UTF_8);
224+
225+
} else {
226+
writer = new OutputStreamWriter(new FileOutputStream(dest), UTF_8);
227+
}
228+
return writer;
229+
}
230+
231231

232232
public void addText(final String text) {
233233
this.text = text;

0 commit comments

Comments
 (0)