summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorStefan Bodewig <bodewig@apache.org>2016-12-20 20:41:19 +0100
committerStefan Bodewig <bodewig@apache.org>2016-12-20 20:41:19 +0100
commit032e888aace67eb95884b2ae40230f2656c4e0d0 (patch)
tree36670c6fff9e01586bba052e416ef3e6cd7e591c /src
parentac1b7652ddd5f4e01eb7e3e5e58f9d22900229a0 (diff)
downloadant-032e888aace67eb95884b2ae40230f2656c4e0d0.tar.gz
plug resource leaks detected by Sonar
Diffstat (limited to 'src')
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/AntStructure.java6
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/Available.java22
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java12
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/optional/depend/DirectoryIterator.java4
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/optional/extension/ExtensionUtil.java20
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/optional/jlink/jlink.java3
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java3
-rw-r--r--src/main/org/apache/tools/ant/types/resources/ResourceList.java7
-rw-r--r--src/main/org/apache/tools/ant/types/resources/Tokens.java3
9 files changed, 62 insertions, 18 deletions
diff --git a/src/main/org/apache/tools/ant/taskdefs/AntStructure.java b/src/main/org/apache/tools/ant/taskdefs/AntStructure.java
index 20f811a85..707f4b9c0 100644
--- a/src/main/org/apache/tools/ant/taskdefs/AntStructure.java
+++ b/src/main/org/apache/tools/ant/taskdefs/AntStructure.java
@@ -36,6 +36,7 @@ import org.apache.tools.ant.Task;
import org.apache.tools.ant.TaskContainer;
import org.apache.tools.ant.types.EnumeratedAttribute;
import org.apache.tools.ant.types.Reference;
+import org.apache.tools.ant.util.FileUtils;
/**
* Creates a partial DTD for Ant from the currently known tasks.
@@ -84,9 +85,12 @@ public class AntStructure extends Task {
PrintWriter out = null;
try {
+ FileOutputStream fos = null;
try {
- out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(output), "UTF8"));
+ fos = new FileOutputStream(output);
+ out = new PrintWriter(new OutputStreamWriter(fos, "UTF8"));
} catch (final UnsupportedEncodingException ue) {
+ FileUtils.close(fos);
/*
* Plain impossible with UTF8, see
* http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html
diff --git a/src/main/org/apache/tools/ant/taskdefs/Available.java b/src/main/org/apache/tools/ant/taskdefs/Available.java
index 816568e00..f4919a16c 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Available.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Available.java
@@ -19,6 +19,7 @@
package org.apache.tools.ant.taskdefs;
import java.io.File;
+import java.io.InputStream;
import org.apache.tools.ant.AntClassLoader;
import org.apache.tools.ant.BuildException;
@@ -421,16 +422,21 @@ public class Available extends Task implements Condition {
* Check if a given resource can be loaded.
*/
private boolean checkResource(String resource) {
- if (loader != null) {
- return (loader.getResourceAsStream(resource) != null);
- } else {
- ClassLoader cL = this.getClass().getClassLoader();
- if (cL != null) {
- return (cL.getResourceAsStream(resource) != null);
+ InputStream is = null;
+ try {
+ if (loader != null) {
+ is = loader.getResourceAsStream(resource);
} else {
- return
- (ClassLoader.getSystemResourceAsStream(resource) != null);
+ ClassLoader cL = this.getClass().getClassLoader();
+ if (cL != null) {
+ is = cL.getResourceAsStream(resource);
+ } else {
+ is = ClassLoader.getSystemResourceAsStream(resource);
+ }
}
+ return is != null;
+ } finally {
+ FileUtils.close(is);
}
}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java b/src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java
index b395a16cb..a48ed962b 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/Rpm.java
@@ -149,11 +149,13 @@ public class Rpm extends Task {
}
} else {
if (output != null) {
+ FileOutputStream fos = null;
try {
- BufferedOutputStream bos
- = new BufferedOutputStream(new FileOutputStream(output));
+ fos = new FileOutputStream(output);
+ BufferedOutputStream bos = new BufferedOutputStream(fos);
outputstream = new PrintStream(bos);
} catch (IOException e) {
+ FileUtils.close(fos);
throw new BuildException(e, getLocation());
}
} else if (!quiet) {
@@ -162,11 +164,13 @@ public class Rpm extends Task {
outputstream = new LogOutputStream(this, Project.MSG_DEBUG);
}
if (error != null) {
+ FileOutputStream fos = null;
try {
- BufferedOutputStream bos
- = new BufferedOutputStream(new FileOutputStream(error));
+ fos = new FileOutputStream(error);
+ BufferedOutputStream bos = new BufferedOutputStream(fos);
errorstream = new PrintStream(bos);
} catch (IOException e) {
+ FileUtils.close(fos);
throw new BuildException(e, getLocation());
}
} else if (!quiet) {
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/depend/DirectoryIterator.java b/src/main/org/apache/tools/ant/taskdefs/optional/depend/DirectoryIterator.java
index ebf244a55..e12f684c5 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/depend/DirectoryIterator.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/depend/DirectoryIterator.java
@@ -133,6 +133,7 @@ public class DirectoryIterator implements ClassFileIterator {
FileInputStream inFileStream
= new FileInputStream(element);
+ try {
if (element.getName().endsWith(".class")) {
// create a data input stream from the jar
@@ -143,6 +144,9 @@ public class DirectoryIterator implements ClassFileIterator {
nextElement = javaClass;
}
+ } finally {
+ inFileStream.close();
+ }
}
} else {
// this iterator is exhausted. Can we pop one off the stack
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/extension/ExtensionUtil.java b/src/main/org/apache/tools/ant/taskdefs/optional/extension/ExtensionUtil.java
index 089c78947..ce660501f 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/extension/ExtensionUtil.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/extension/ExtensionUtil.java
@@ -130,8 +130,9 @@ public final class ExtensionUtil {
final boolean includeImpl,
final boolean includeURL)
throws BuildException {
+ JarFile jarFile = null;
try {
- final JarFile jarFile = new JarFile(file);
+ jarFile = new JarFile(file);
final Extension[] extensions =
Extension.getAvailable(jarFile.getManifest());
for (int i = 0; i < extensions.length; i++) {
@@ -140,6 +141,8 @@ public final class ExtensionUtil {
}
} catch (final Exception e) {
throw new BuildException(e.getMessage(), e);
+ } finally {
+ close(jarFile);
}
}
@@ -201,8 +204,9 @@ public final class ExtensionUtil {
*/
static Manifest getManifest(final File file)
throws BuildException {
+ JarFile jarFile = null;
try {
- final JarFile jarFile = new JarFile(file);
+ jarFile = new JarFile(file);
Manifest m = jarFile.getManifest();
if (m == null) {
throw new BuildException(file + " doesn't have a MANIFEST");
@@ -210,6 +214,18 @@ public final class ExtensionUtil {
return m;
} catch (final IOException ioe) {
throw new BuildException(ioe.getMessage(), ioe);
+ } finally {
+ close(jarFile);
+ }
+ }
+
+ private static void close(JarFile device) {
+ if (null != device) {
+ try {
+ device.close();
+ } catch (IOException e) {
+ //ignore
+ }
}
}
}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/jlink/jlink.java b/src/main/org/apache/tools/ant/taskdefs/optional/jlink/jlink.java
index a78872712..391647782 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/jlink/jlink.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/jlink/jlink.java
@@ -223,6 +223,7 @@ public class jlink {
return;
}
ZipFile zipf = new ZipFile(f);
+ try {
Enumeration entries = zipf.entries();
while (entries.hasMoreElements()) {
@@ -267,7 +268,9 @@ public class jlink {
output.closeEntry();
}
}
+ } finally {
zipf.close();
+ }
}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java b/src/main/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java
index 7988bc60b..2a99124cb 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java
@@ -117,6 +117,7 @@ public class AntSoundPlayer implements LineListener, BuildListener {
DataLine.Info info = new DataLine.Info(Clip.class, format,
AudioSystem.NOT_SPECIFIED);
try {
+ try {
audioClip = (Clip) AudioSystem.getLine(info);
audioClip.addLineListener(this);
audioClip.open(audioInputStream);
@@ -133,7 +134,9 @@ public class AntSoundPlayer implements LineListener, BuildListener {
playClip(audioClip, loops);
}
audioClip.drain();
+ } finally {
audioClip.close();
+ }
} else {
project.log("Can't get data from file " + file.getName());
}
diff --git a/src/main/org/apache/tools/ant/types/resources/ResourceList.java b/src/main/org/apache/tools/ant/types/resources/ResourceList.java
index 8b77e1bbf..6c16b5e0d 100644
--- a/src/main/org/apache/tools/ant/types/resources/ResourceList.java
+++ b/src/main/org/apache/tools/ant/types/resources/ResourceList.java
@@ -195,15 +195,18 @@ public class ResourceList extends DataType implements ResourceCollection {
crh.setPrimaryReader(input);
crh.setFilterChains(filterChains);
crh.setProject(getProject());
- BufferedReader reader = new BufferedReader(crh.getAssembledReader());
-
Union streamResources = new Union();
+ BufferedReader reader = new BufferedReader(crh.getAssembledReader());
+ try {
streamResources.setCache(true);
String line = null;
while ((line = reader.readLine()) != null) {
streamResources.add(parse(line));
}
+ } finally {
+ reader.close();
+ }
return streamResources;
} catch (final IOException ioe) {
diff --git a/src/main/org/apache/tools/ant/types/resources/Tokens.java b/src/main/org/apache/tools/ant/types/resources/Tokens.java
index 0a518c3dc..458f8c1f0 100644
--- a/src/main/org/apache/tools/ant/types/resources/Tokens.java
+++ b/src/main/org/apache/tools/ant/types/resources/Tokens.java
@@ -60,8 +60,8 @@ public class Tokens extends BaseResourceCollectionWrapper {
ConcatResourceInputStream cat = new ConcatResourceInputStream(rc);
cat.setManagingComponent(this);
+ InputStreamReader rdr = null;
try {
- InputStreamReader rdr = null;
if (encoding == null) {
rdr = new InputStreamReader(cat);
} else {
@@ -81,6 +81,7 @@ public class Tokens extends BaseResourceCollectionWrapper {
} catch (IOException e) {
throw new BuildException("Error reading tokens", e);
} finally {
+ FileUtils.close(rdr);
FileUtils.close(cat);
}
}