From 23ed8139546a74562c9da03c2028a856ed39dfce Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Fri, 14 Apr 2017 12:34:06 +0200 Subject: [PATCH] Fix additional potential resource leaks refs #337 refs #349 --- .../java/net/sourceforge/pmd/RuleSetFactory.java | 4 +++- .../sourceforge/pmd/RuleSetReferenceIdTest.java | 14 ++++++++------ .../pmd/AbstractLanguageVersionTest.java | 5 ++++- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetFactory.java b/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetFactory.java index babe8a359d..79ebfea15f 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetFactory.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/RuleSetFactory.java @@ -120,7 +120,9 @@ public class RuleSetFactory { for (Language language : LanguageRegistry.findWithRuleSupport()) { Properties props = new Properties(); rulesetsProperties = "rulesets/" + language.getTerseName() + "/rulesets.properties"; - props.load(ResourceLoader.loadResourceAsStream(rulesetsProperties)); + try (InputStream inputStream = ResourceLoader.loadResourceAsStream(rulesetsProperties);) { + props.load(inputStream); + } String rulesetFilenames = props.getProperty("rulesets.filenames"); ruleSetReferenceIds.addAll(RuleSetReferenceId.parse(rulesetFilenames)); } diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetReferenceIdTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetReferenceIdTest.java index f5cf7c5f5a..8d56f85578 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetReferenceIdTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetReferenceIdTest.java @@ -119,9 +119,10 @@ public class RuleSetReferenceIdTest { RuleSetReferenceId ruleSetReferenceId = new RuleSetReferenceId(" " + rulesetUrl + " "); assertRuleSetReferenceId(true, rulesetUrl, true, null, rulesetUrl, ruleSetReferenceId); - InputStream inputStream = ruleSetReferenceId.getInputStream(RuleSetReferenceIdTest.class.getClassLoader()); - String loaded = IOUtils.toString(inputStream, "UTF-8"); - assertEquals("xyz", loaded); + try (InputStream inputStream = ruleSetReferenceId.getInputStream(RuleSetReferenceIdTest.class.getClassLoader());) { + String loaded = IOUtils.toString(inputStream, "UTF-8"); + assertEquals("xyz", loaded); + } verify(1, headRequestedFor(urlEqualTo(path))); verify(0, headRequestedFor(urlEqualTo("/profiles"))); @@ -147,9 +148,10 @@ public class RuleSetReferenceIdTest { assertRuleSetReferenceId(true, hostpart + path, false, "DummyBasicMockRule", hostpart + completePath, ruleSetReferenceId); - InputStream inputStream = ruleSetReferenceId.getInputStream(RuleSetReferenceIdTest.class.getClassLoader()); - String loaded = IOUtils.toString(inputStream, "UTF-8"); - assertEquals(basicRuleSet, loaded); + try (InputStream inputStream = ruleSetReferenceId.getInputStream(RuleSetReferenceIdTest.class.getClassLoader());) { + String loaded = IOUtils.toString(inputStream, "UTF-8"); + assertEquals(basicRuleSet, loaded); + } verify(1, headRequestedFor(urlEqualTo(completePath))); verify(1, headRequestedFor(urlEqualTo(path))); diff --git a/pmd-test/src/main/java/net/sourceforge/pmd/AbstractLanguageVersionTest.java b/pmd-test/src/main/java/net/sourceforge/pmd/AbstractLanguageVersionTest.java index dd987c144b..b5636a18af 100644 --- a/pmd-test/src/main/java/net/sourceforge/pmd/AbstractLanguageVersionTest.java +++ b/pmd-test/src/main/java/net/sourceforge/pmd/AbstractLanguageVersionTest.java @@ -117,7 +117,9 @@ public class AbstractLanguageVersionTest { Properties props = new Properties(); String rulesetsProperties = "rulesets/" + simpleTerseName + "/rulesets.properties"; - props.load(ResourceLoader.loadResourceAsStream(rulesetsProperties)); + try (InputStream inputStream = ResourceLoader.loadResourceAsStream(rulesetsProperties);) { + props.load(inputStream); + } String rulesetFilenames = props.getProperty("rulesets.filenames"); assertNotNull(rulesetFilenames); @@ -131,6 +133,7 @@ public class AbstractLanguageVersionTest { for (String r : rulesets) { InputStream stream = ResourceLoader.loadResourceAsStream(r); assertNotNull(stream); + stream.close(); RuleSet ruleset = factory.createRuleSet(r); assertNotNull(ruleset); }