8003120: ResourceManager.getApplicationResources() does not close InputStreams
Summary: Add finally blocks to close the InputStream instances
Reviewed-by: lancea
--- a/jdk/src/share/classes/com/sun/naming/internal/ResourceManager.java Wed Nov 07 18:48:48 2012 +0000
+++ b/jdk/src/share/classes/com/sun/naming/internal/ResourceManager.java Wed Nov 07 16:07:54 2012 -0500
@@ -542,14 +542,26 @@
try {
NamingEnumeration<InputStream> resources =
helper.getResources(cl, APP_RESOURCE_FILE_NAME);
- while (resources.hasMore()) {
- Properties props = new Properties();
- props.load(resources.next());
+ try {
+ while (resources.hasMore()) {
+ Properties props = new Properties();
+ InputStream istream = resources.next();
+ try {
+ props.load(istream);
+ } finally {
+ istream.close();
+ }
- if (result == null) {
- result = props;
- } else {
- mergeTables(result, props);
+ if (result == null) {
+ result = props;
+ } else {
+ mergeTables(result, props);
+ }
+ }
+ } finally {
+ while (resources.hasMore()) {
+ InputStream istream = (InputStream)resources.next();
+ istream.close();
}
}
@@ -557,13 +569,17 @@
InputStream istream =
helper.getJavaHomeLibStream(JRELIB_PROPERTY_FILE_NAME);
if (istream != null) {
- Properties props = new Properties();
- props.load(istream);
+ try {
+ Properties props = new Properties();
+ props.load(istream);
- if (result == null) {
- result = props;
- } else {
- mergeTables(result, props);
+ if (result == null) {
+ result = props;
+ } else {
+ mergeTables(result, props);
+ }
+ } finally {
+ istream.close();
}
}