Close streams after usage

Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/2f52917e
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/2f52917e
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/2f52917e

Branch: refs/heads/master
Commit: 2f52917e75bc5b0dd5721acf9e9b45d478509075
Parents: 82511c3
Author: Svetoslav Neykov <[email protected]>
Authored: Mon Jun 13 17:41:15 2016 +0300
Committer: Svetoslav Neykov <[email protected]>
Committed: Thu Jun 16 11:49:20 2016 +0300

----------------------------------------------------------------------
 .../camp/brooklyn/AbstractYamlTest.java         |  2 +-
 .../camp/brooklyn/EntitiesYamlTest.java         |  2 +-
 .../brooklyn/test/lite/CampYamlLiteTest.java    |  6 ++--
 .../core/catalog/internal/CatalogDto.java       |  2 +-
 .../brooklyn/util/core/ResourceUtils.java       | 12 +------
 .../brooklyn/util/core/crypto/SecureKeys.java   |  4 +--
 .../rebind/RebindEntityDynamicTypeInfoTest.java |  2 +-
 .../util/core/BrooklynMavenArtifactsTest.java   |  2 +-
 .../util/core/ResourceUtilsHttpTest.java        | 16 ++++-----
 .../brooklyn/util/core/ResourceUtilsTest.java   |  8 ++---
 .../command/support/CloudExplorerSupport.java   |  2 +-
 .../brooklyn/launcher/BrooklynWebServer.java    |  7 ++--
 .../blueprints/AbstractBlueprintTest.java       |  2 +-
 .../mgmt/persist/jclouds/BlobStoreTest.java     |  6 ++--
 .../brooklyn/rest/util/RestApiTestUtils.java    |  2 +-
 .../rest/resources/SensorResourceTest.java      |  2 +-
 .../org/apache/brooklyn/cli/ItemLister.java     |  2 +-
 .../entity/chef/ChefLiveTestSupport.java        |  9 ++++-
 .../brooklyn/entity/java/JmxSupportTest.java    |  2 +-
 .../org/apache/brooklyn/test/HttpTestUtils.java |  4 +--
 .../org/apache/brooklyn/util/http/HttpTool.java |  4 +--
 .../apache/brooklyn/util/stream/Streams.java    | 35 ++++++++++++++++++--
 .../rt/felix/EmbeddedFelixFrameworkTest.java    |  2 +-
 23 files changed, 83 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java
----------------------------------------------------------------------
diff --git 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java
 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java
index a03df0d..ca446f9 100644
--- 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java
+++ 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java
@@ -125,7 +125,7 @@ public abstract class AbstractYamlTest {
     }
     
     protected Entity createAndStartApplication(Reader input) throws Exception {
-        return createAndStartApplication(Streams.readFully(input));
+        return createAndStartApplication(Streams.readFullyAndClose(input));
     }
 
     protected Entity createAndStartApplication(String input) throws Exception {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EntitiesYamlTest.java
----------------------------------------------------------------------
diff --git 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EntitiesYamlTest.java
 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EntitiesYamlTest.java
index 70c60ad..b63f587 100644
--- 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EntitiesYamlTest.java
+++ 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/EntitiesYamlTest.java
@@ -690,7 +690,7 @@ public class EntitiesYamlTest extends AbstractYamlTest {
 
     @Test
     public void testWithEntityLocationsAndStartInLocation() throws Exception {
-        Entity app = 
createAndStartApplication(Streams.readFully(loadYaml("test-entity-basic-template.yaml",
  
+        Entity app = 
createAndStartApplication(Streams.readFullyAndClose(loadYaml("test-entity-basic-template.yaml",
  
             "  location: localhost:(name=localhost name)")),
             // must pass as JSON list because otherwise the comma confuses the 
list parser
             MutableMap.of("locations", "[ "+JavaStringEscapes.wrapJavaString(

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampYamlLiteTest.java
----------------------------------------------------------------------
diff --git 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampYamlLiteTest.java
 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampYamlLiteTest.java
index 9cd6bc5..4749fa8 100644
--- 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampYamlLiteTest.java
+++ 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampYamlLiteTest.java
@@ -124,7 +124,7 @@ public class CampYamlLiteTest {
     @SuppressWarnings({ "rawtypes", "unchecked" })
     @Test
     public void testAddChildrenEffector() throws Exception {
-        String childYaml = 
Streams.readFullyString(getClass().getResourceAsStream("test-app-service-blueprint.yaml"));
+        String childYaml = 
Streams.readFullyStringAndClose(getClass().getResourceAsStream("test-app-service-blueprint.yaml"));
         AddChildrenEffector newEff = new 
AddChildrenEffector(ConfigBag.newInstance()
             .configure(AddChildrenEffector.EFFECTOR_NAME, "add_tomcat")
             .configure(AddChildrenEffector.BLUEPRINT_YAML, childYaml)
@@ -157,7 +157,7 @@ public class CampYamlLiteTest {
     public void testYamlServiceForCatalog() {
         
TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), 
OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_PATH);
 
-        CatalogItem<?, ?> realItem = 
Iterables.getOnlyElement(mgmt.getCatalog().addItems(Streams.readFullyString(getClass().getResourceAsStream("test-app-service-blueprint.yaml"))));
+        CatalogItem<?, ?> realItem = 
Iterables.getOnlyElement(mgmt.getCatalog().addItems(Streams.readFullyStringAndClose(getClass().getResourceAsStream("test-app-service-blueprint.yaml"))));
         Iterable<CatalogItem<Object, Object>> retrievedItems = 
mgmt.getCatalog()
                 
.getCatalogItems(CatalogPredicates.symbolicName(Predicates.equalTo("catalog-name")));
         
@@ -254,7 +254,7 @@ public class CampYamlLiteTest {
         assertEquals(item.getIconUrl(), 
"classpath:/org/apache/brooklyn/test/osgi/entities/icon.gif");
 
         // and confirm we can resolve ICON
-        byte[] iconData = 
Streams.readFully(ResourceUtils.create(CatalogUtils.newClassLoadingContext(mgmt,
 item)).getResourceFromUrl(item.getIconUrl()));
+        byte[] iconData = 
Streams.readFullyAndClose(ResourceUtils.create(CatalogUtils.newClassLoadingContext(mgmt,
 item)).getResourceFromUrl(item.getIconUrl()));
         assertEquals(iconData.length, 43);
     }
 

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDto.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDto.java 
b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDto.java
index 1bd2236..2a85812 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDto.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDto.java
@@ -76,7 +76,7 @@ public class CatalogDto {
         if (LOG.isDebugEnabled()) LOG.debug("Retrieving catalog from: {}", 
url);
         try {
             InputStream source = 
ResourceUtils.create().getResourceFromUrl(url);
-            String contents = Streams.readFullyString(source);
+            String contents = Streams.readFullyStringAndClose(source);
             return newDtoFromXmlContents(contents, url);
         } catch (Throwable t) {
             Exceptions.propagateIfFatal(t);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/core/src/main/java/org/apache/brooklyn/util/core/ResourceUtils.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/util/core/ResourceUtils.java 
b/core/src/main/java/org/apache/brooklyn/util/core/ResourceUtils.java
index e7eb5ac..813bae2 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/ResourceUtils.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/ResourceUtils.java
@@ -471,7 +471,7 @@ public class ResourceUtils {
     /** takes {@link #getResourceFromUrl(String)} and reads fully, into a 
string */
     public String getResourceAsString(String url) {
         try {
-            return readFullyString(getResourceFromUrl(url));
+            return Streams.readFullyStringAndClose(getResourceFromUrl(url));
         } catch (Exception e) {
             log.debug("ResourceUtils got error reading 
"+url+(context==null?"":" "+context)+" (rethrowing): "+e);
             throw Throwables.propagate(e);
@@ -562,16 +562,6 @@ public class ResourceUtils {
         return OsgiUtils.getContainerUrl(url, resourceInThatDir);
     }
     
-    /** @deprecated since 0.7.0 use {@link 
Streams#readFullyString(InputStream) */ @Deprecated
-    public static String readFullyString(InputStream is) throws IOException {
-        return Streams.readFullyString(is);
-    }
-
-    /** @deprecated since 0.7.0 use {@link Streams#readFully(InputStream) */ 
@Deprecated
-    public static byte[] readFullyBytes(InputStream is) throws IOException {
-        return Streams.readFully(is);
-    }
-    
     /** @deprecated since 0.7.0 use {@link Streams#copy(InputStream, 
OutputStream)} */ @Deprecated
     public static void copy(InputStream input, OutputStream output) throws 
IOException {
         Streams.copy(input, output);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/core/src/main/java/org/apache/brooklyn/util/core/crypto/SecureKeys.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/brooklyn/util/core/crypto/SecureKeys.java 
b/core/src/main/java/org/apache/brooklyn/util/core/crypto/SecureKeys.java
index 2c2884d..3ddfc8a 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/crypto/SecureKeys.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/crypto/SecureKeys.java
@@ -78,11 +78,11 @@ public class SecureKeys extends 
SecureKeysWithoutBouncyCastle {
         return new X509Principal("" + "C=None," + "L=None," + "O=None," + 
"OU=None," + "CN=" + commonName);
     }
 
-    /** reads RSA or DSA / pem style private key files (viz {@link 
#toPem(KeyPair)}), extracting also the public key if possible
+    /** reads RSA or DSA / pem style private key files (viz {@link 
#toPem(KeyPair)}), extracting also the public key if possible. Closes the 
stream.
      * @throws IllegalStateException on errors, in particular {@link 
PassphraseProblem} if that is the problem */
     public static KeyPair readPem(InputStream input, final String passphrase) {
         // TODO cache is only for fallback "reader" strategy (2015-01); delete 
when Parser confirmed working
-        byte[] cache = Streams.readFully(input);
+        byte[] cache = Streams.readFullyAndClose(input);
         input = new ByteArrayInputStream(cache);
 
         try {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindEntityDynamicTypeInfoTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindEntityDynamicTypeInfoTest.java
 
b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindEntityDynamicTypeInfoTest.java
index eba752d..8f3a795 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindEntityDynamicTypeInfoTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindEntityDynamicTypeInfoTest.java
@@ -78,7 +78,7 @@ public class RebindEntityDynamicTypeInfoTest extends 
RebindTestFixtureWithApp {
         RebindTestUtils.waitForPersisted(origApp);
         
         File mementoFile = new File(new File(mementoDir, "entities"), 
origApp.getId());
-        String memento = Streams.readFully(new FileReader(mementoFile));
+        String memento = Streams.readFullyAndClose(new 
FileReader(mementoFile));
         log.info("memento is:\n"+memento);
         // make sure it's not too long, and doesn't have declared items
         Assert.assertTrue(memento.length() < 4000, "length is: 
"+memento.length());

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/core/src/test/java/org/apache/brooklyn/util/core/BrooklynMavenArtifactsTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/util/core/BrooklynMavenArtifactsTest.java
 
b/core/src/test/java/org/apache/brooklyn/util/core/BrooklynMavenArtifactsTest.java
index c514741..60d365c 100644
--- 
a/core/src/test/java/org/apache/brooklyn/util/core/BrooklynMavenArtifactsTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/util/core/BrooklynMavenArtifactsTest.java
@@ -84,7 +84,7 @@ public class BrooklynMavenArtifactsTest {
         Asserts.succeedsEventually(new Runnable() {
             @Override public void run() {
                 try {
-                    byte[] bytes = 
Streams.readFully(ResourceUtils.create(this).getResourceFromUrl(url));
+                    byte[] bytes = 
Streams.readFullyAndClose(ResourceUtils.create(this).getResourceFromUrl(url));
                     // confirm this follow redirects!
                     Assert.assertTrue(bytes.length > 100*1000, "download of 
"+url+" is suspect ("+Strings.makeSizeString(bytes.length)+")");
                     // (could also check it is a zip etc)

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/core/src/test/java/org/apache/brooklyn/util/core/ResourceUtilsHttpTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/util/core/ResourceUtilsHttpTest.java 
b/core/src/test/java/org/apache/brooklyn/util/core/ResourceUtilsHttpTest.java
index 0952707..33b60ff 100644
--- 
a/core/src/test/java/org/apache/brooklyn/util/core/ResourceUtilsHttpTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/util/core/ResourceUtilsHttpTest.java
@@ -76,34 +76,34 @@ public class ResourceUtilsHttpTest {
     @Test
     public void testGet() throws Exception {
         InputStream stream = utils.getResourceFromUrl(baseUrl + "/simple");
-        assertEquals(Streams.readFullyString(stream), "OK");
+        assertEquals(Streams.readFullyStringAndClose(stream), "OK");
     }
 
     @Test
     public void testGetEmpty() throws Exception {
         InputStream stream = utils.getResourceFromUrl(baseUrl + "/empty");
-        assertEquals(Streams.readFullyString(stream), "");
+        assertEquals(Streams.readFullyStringAndClose(stream), "");
     }
 
     @Test
     public void testGetProtected() throws Exception {
         String url = baseUrl.replace("http://";, "http://test:test@";) + "/auth";
         InputStream stream = utils.getResourceFromUrl(url);
-        assertEquals(Streams.readFullyString(stream), "OK");
+        assertEquals(Streams.readFullyStringAndClose(stream), "OK");
     }
 
     @Test
     public void testGetProtectedEscape() throws Exception {
         String url = baseUrl.replace("http://";, 
"http://test%40me%3A%2F:test@";) + "/auth_escape";
         InputStream stream = utils.getResourceFromUrl(url);
-        assertEquals(Streams.readFullyString(stream), "OK");
+        assertEquals(Streams.readFullyStringAndClose(stream), "OK");
     }
 
     @Test
     public void testGetProtectedEscape2() throws Exception {
         String url = baseUrl.replace("http://";, "http://test%40me%3Atest@";) + 
"/auth_escape2";
         InputStream stream = utils.getResourceFromUrl(url);
-        assertEquals(Streams.readFullyString(stream), "OK");
+        assertEquals(Streams.readFullyStringAndClose(stream), "OK");
     }
 
     @Test(expectedExceptions = RuntimeException.class)
@@ -115,19 +115,19 @@ public class ResourceUtilsHttpTest {
     public void testInvalidCredentialsNotPassed() throws Exception {
         String url = baseUrl + "/no_credentials?no:auth@needed";
         InputStream stream = utils.getResourceFromUrl(url);
-        assertEquals(Streams.readFullyString(stream), "OK");
+        assertEquals(Streams.readFullyStringAndClose(stream), "OK");
     }
 
     @Test
     public void testRedirect() throws Exception {
         InputStream stream = utils.getResourceFromUrl(baseUrl + "/redirect");
-        assertEquals(Streams.readFullyString(stream), "OK");
+        assertEquals(Streams.readFullyStringAndClose(stream), "OK");
     }
 
     @Test(expectedExceptions = RuntimeException.class)
     public void testCycleRedirect() throws Exception {
         InputStream stream = utils.getResourceFromUrl(baseUrl + "/cycle");
-        assertEquals(Streams.readFullyString(stream), "OK");
+        assertEquals(Streams.readFullyStringAndClose(stream), "OK");
     }
 
     @Test(expectedExceptions = RuntimeException.class)

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/core/src/test/java/org/apache/brooklyn/util/core/ResourceUtilsTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/brooklyn/util/core/ResourceUtilsTest.java 
b/core/src/test/java/org/apache/brooklyn/util/core/ResourceUtilsTest.java
index 3ba78a5..11914f8 100644
--- a/core/src/test/java/org/apache/brooklyn/util/core/ResourceUtilsTest.java
+++ b/core/src/test/java/org/apache/brooklyn/util/core/ResourceUtilsTest.java
@@ -115,13 +115,13 @@ public class ResourceUtilsTest {
         // while Windows itself supports the latter only. 
         // Note that file://C:/temp is *wrong*, because C: is interpreted as 
the host
         InputStream stream = 
utils.getResourceFromUrl(tempFile.toURI().toURL().toString());
-        assertEquals(Streams.readFullyString(stream), tempFileContents);
+        assertEquals(Streams.readFullyStringAndClose(stream), 
tempFileContents);
     }
     
     @Test
     public void testGetResourceViaFileWithoutPrefix() throws Exception {
         InputStream stream = 
utils.getResourceFromUrl(tempFile.getAbsolutePath());
-        assertEquals(Streams.readFullyString(stream), tempFileContents);
+        assertEquals(Streams.readFullyStringAndClose(stream), 
tempFileContents);
     }
 
     @Test
@@ -155,14 +155,14 @@ public class ResourceUtilsTest {
     @Test(groups="Integration")
     public void testGetResourceViaSftp() throws Exception {
         InputStream stream = 
utils.getResourceFromUrl("sftp://localhost:"+tempFile.getAbsolutePath());
-        assertEquals(Streams.readFullyString(stream), tempFileContents);
+        assertEquals(Streams.readFullyStringAndClose(stream), 
tempFileContents);
     }
     
     @Test(groups="Integration")
     public void testGetResourceViaSftpWithUsername() throws Exception {
         String user = System.getProperty("user.name");
         InputStream stream = 
utils.getResourceFromUrl("sftp://"+user+"@localhost:"+tempFile.getAbsolutePath());
-        assertEquals(Streams.readFullyString(stream), tempFileContents);
+        assertEquals(Streams.readFullyStringAndClose(stream), 
tempFileContents);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/launcher-common/src/main/java/org/apache/brooklyn/launcher/command/support/CloudExplorerSupport.java
----------------------------------------------------------------------
diff --git 
a/launcher-common/src/main/java/org/apache/brooklyn/launcher/command/support/CloudExplorerSupport.java
 
b/launcher-common/src/main/java/org/apache/brooklyn/launcher/command/support/CloudExplorerSupport.java
index 3e0b239..5904ae5 100644
--- 
a/launcher-common/src/main/java/org/apache/brooklyn/launcher/command/support/CloudExplorerSupport.java
+++ 
b/launcher-common/src/main/java/org/apache/brooklyn/launcher/command/support/CloudExplorerSupport.java
@@ -415,7 +415,7 @@ public abstract class CloudExplorerSupport implements 
Callable<Void> {
             }
             stdout.println(indent+"\t}");
             stdout.println(indent+"\tmetadata : "+content.getMetadata());
-            stdout.println(indent+"\tpayload : "+ 
Streams.readFullyString(content.getPayload().openStream()));
+            stdout.println(indent+"\tpayload : "+ 
Streams.readFullyStringAndClose(content.getPayload().openStream()));
             stdout.println(indent+"}");
         }
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
----------------------------------------------------------------------
diff --git 
a/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java 
b/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
index 7dbcc96..43854e1 100644
--- a/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
+++ b/launcher/src/main/java/org/apache/brooklyn/launcher/BrooklynWebServer.java
@@ -566,8 +566,11 @@ public class BrooklynWebServer {
             }
             File tmp = Os.newTempFile("brooklyn-keystore", "ks");
             tmp.deleteOnExit();
-            FileUtil.copyTo(keystoreStream, tmp);
-            Streams.closeQuietly(keystoreStream);
+            try {
+                FileUtil.copyTo(keystoreStream, tmp);
+            } finally {
+                Streams.closeQuietly(keystoreStream);
+            }
             return tmp.getAbsolutePath();
         }
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
----------------------------------------------------------------------
diff --git 
a/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
 
b/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
index 56ac5d3..371b83e 100644
--- 
a/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
+++ 
b/launcher/src/test/java/org/apache/brooklyn/launcher/blueprints/AbstractBlueprintTest.java
@@ -119,7 +119,7 @@ public abstract class AbstractBlueprintTest {
     
     protected void runCatalogTest(String catalogFile, Reader yamlApp, 
Predicate<? super Application> assertion) throws Exception {
         Reader catalogInput = Streams.reader(new 
ResourceUtils(this).getResourceFromUrl(catalogFile));
-        String catalogContent = Streams.readFully(catalogInput);
+        String catalogContent = Streams.readFullyAndClose(catalogInput);
         Iterable<? extends CatalogItem<?, ?>> items = 
launcher.getManagementContext().getCatalog().addItems(catalogContent);
         
         try {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/locations/jclouds/src/test/java/org/apache/brooklyn/core/mgmt/persist/jclouds/BlobStoreTest.java
----------------------------------------------------------------------
diff --git 
a/locations/jclouds/src/test/java/org/apache/brooklyn/core/mgmt/persist/jclouds/BlobStoreTest.java
 
b/locations/jclouds/src/test/java/org/apache/brooklyn/core/mgmt/persist/jclouds/BlobStoreTest.java
index 5c07752..6033e2b 100644
--- 
a/locations/jclouds/src/test/java/org/apache/brooklyn/core/mgmt/persist/jclouds/BlobStoreTest.java
+++ 
b/locations/jclouds/src/test/java/org/apache/brooklyn/core/mgmt/persist/jclouds/BlobStoreTest.java
@@ -108,7 +108,7 @@ public class BlobStoreTest {
         context.getBlobStore().putBlob(testContainerName, b);
         
         Blob b2 = context.getBlobStore().getBlob(testContainerName, 
"my-blob-1");
-        
Assert.assertEquals(Streams.readFullyString(b2.getPayload().openStream()), 
"hello world");
+        
Assert.assertEquals(Streams.readFullyStringAndClose(b2.getPayload().openStream()),
 "hello world");
         
         context.getBlobStore().deleteContainer(testContainerName);
     }
@@ -128,10 +128,10 @@ public class BlobStoreTest {
 
         // both these syntaxes work:
         Blob b2 = 
context.getBlobStore().getBlob(testContainerName+"/"+"my-dir-1", "my-blob-1");
-        
Assert.assertEquals(Streams.readFullyString(b2.getPayload().openStream()), 
"hello world");
+        
Assert.assertEquals(Streams.readFullyStringAndClose(b2.getPayload().openStream()),
 "hello world");
 
         Blob b3 = context.getBlobStore().getBlob(testContainerName, 
"my-dir-1"+"/"+"my-blob-1");
-        
Assert.assertEquals(Streams.readFullyString(b3.getPayload().openStream()), 
"hello world");
+        
Assert.assertEquals(Streams.readFullyStringAndClose(b3.getPayload().openStream()),
 "hello world");
 
         context.getBlobStore().deleteContainer(testContainerName);
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/rest/rest-api/src/test/java/org/apache/brooklyn/rest/util/RestApiTestUtils.java
----------------------------------------------------------------------
diff --git 
a/rest/rest-api/src/test/java/org/apache/brooklyn/rest/util/RestApiTestUtils.java
 
b/rest/rest-api/src/test/java/org/apache/brooklyn/rest/util/RestApiTestUtils.java
index 36ad69c..4eb5ab7 100644
--- 
a/rest/rest-api/src/test/java/org/apache/brooklyn/rest/util/RestApiTestUtils.java
+++ 
b/rest/rest-api/src/test/java/org/apache/brooklyn/rest/util/RestApiTestUtils.java
@@ -45,7 +45,7 @@ public class RestApiTestUtils {
     public static String jsonFixture(String path) {
         InputStream stream = 
RestApiTestUtils.class.getClassLoader().getResourceAsStream(path);
         if (stream==null) throw new IllegalStateException("Cannot find 
resource: "+path);
-        return asJson(fromJson(Streams.readFullyString(stream), Object.class));
+        return asJson(fromJson(Streams.readFullyStringAndClose(stream), 
Object.class));
     }
 
     public static <T> T fromJson(String text, TypeReference<T> type) {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/SensorResourceTest.java
----------------------------------------------------------------------
diff --git 
a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/SensorResourceTest.java
 
b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/SensorResourceTest.java
index 01b3546..99ef87a 100644
--- 
a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/SensorResourceTest.java
+++ 
b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/SensorResourceTest.java
@@ -173,7 +173,7 @@ public class SensorResourceTest extends 
BrooklynRestResourceTest {
     @Test
     public void testGetJsonBytes() throws Exception {
         Response response = doSensorTest(null, 
MediaType.APPLICATION_JSON_TYPE, null);
-        byte[] bytes = 
Streams.readFully(response.readEntity(InputStream.class));
+        byte[] bytes = 
Streams.readFullyAndClose(response.readEntity(InputStream.class));
         // assert we have one set of surrounding quotes
         assertEquals(bytes.length, 13);
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/server-cli/src/main/java/org/apache/brooklyn/cli/ItemLister.java
----------------------------------------------------------------------
diff --git a/server-cli/src/main/java/org/apache/brooklyn/cli/ItemLister.java 
b/server-cli/src/main/java/org/apache/brooklyn/cli/ItemLister.java
index d7eddce..8526f98 100644
--- a/server-cli/src/main/java/org/apache/brooklyn/cli/ItemLister.java
+++ b/server-cli/src/main/java/org/apache/brooklyn/cli/ItemLister.java
@@ -232,7 +232,7 @@ public class ItemLister {
                 BrooklynCatalog catalog = lmgmt.getCatalog();
 
                 for (URL url: urls) {
-                    String yamlContent = 
Streams.readFullyString(url.openStream());
+                    String yamlContent = 
Streams.readFullyStringAndClose(url.openStream());
 
                     Iterable<? extends CatalogItem<?, ?>> items = 
catalog.addItems(yamlContent);
                     for (CatalogItem<?,?> item: items) {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/software/base/src/test/java/org/apache/brooklyn/entity/chef/ChefLiveTestSupport.java
----------------------------------------------------------------------
diff --git 
a/software/base/src/test/java/org/apache/brooklyn/entity/chef/ChefLiveTestSupport.java
 
b/software/base/src/test/java/org/apache/brooklyn/entity/chef/ChefLiveTestSupport.java
index 4492b68..9ee38e7 100644
--- 
a/software/base/src/test/java/org/apache/brooklyn/entity/chef/ChefLiveTestSupport.java
+++ 
b/software/base/src/test/java/org/apache/brooklyn/entity/chef/ChefLiveTestSupport.java
@@ -20,6 +20,7 @@ package org.apache.brooklyn.entity.chef;
 
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 
 import org.apache.brooklyn.api.entity.Entity;
 import org.apache.brooklyn.api.location.LocationSpec;
@@ -31,6 +32,7 @@ import org.apache.brooklyn.location.ssh.SshMachineLocation;
 import org.apache.brooklyn.util.core.ResourceUtils;
 import org.apache.brooklyn.util.io.FileUtil;
 import org.apache.brooklyn.util.stream.InputStreamSupplier;
+import org.apache.brooklyn.util.stream.Streams;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testng.annotations.BeforeMethod;
@@ -83,7 +85,12 @@ public class ChefLiveTestSupport extends 
BrooklynAppLiveTestSupport {
         try {
             for (String f: new String[] { "knife.rb", "brooklyn-tests.pem", 
"brooklyn-validator.pem" }) {
                 String contents = 
r.getResourceAsString("classpath:///org/apache/brooklyn/entity/chef/hosted-chef-brooklyn-credentials/"+f);
-                
FileUtil.copyTo(InputStreamSupplier.fromString(contents).getInput(), new 
File(tempDir, f));
+                InputStream in = 
InputStreamSupplier.fromString(contents).getInput();
+                try {
+                    FileUtil.copyTo(in, new File(tempDir, f));
+                } finally {
+                    Streams.closeQuietly(in);
+                }
             }
         } catch (IOException e) {
             throw Throwables.propagate(e);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/software/base/src/test/java/org/apache/brooklyn/entity/java/JmxSupportTest.java
----------------------------------------------------------------------
diff --git 
a/software/base/src/test/java/org/apache/brooklyn/entity/java/JmxSupportTest.java
 
b/software/base/src/test/java/org/apache/brooklyn/entity/java/JmxSupportTest.java
index 10fced5..f6e7418 100644
--- 
a/software/base/src/test/java/org/apache/brooklyn/entity/java/JmxSupportTest.java
+++ 
b/software/base/src/test/java/org/apache/brooklyn/entity/java/JmxSupportTest.java
@@ -119,7 +119,7 @@ public class JmxSupportTest {
     private void checkValidArchive(String url, long minSize) {
         byte[] bytes;
         try {
-            bytes = 
Streams.readFully(ResourceUtils.create(this).getResourceFromUrl(url));
+            bytes = 
Streams.readFullyAndClose(ResourceUtils.create(this).getResourceFromUrl(url));
             log.info("read "+bytes.length+" bytes from "+url+" for 
"+JavaClassNames.callerNiceClassAndMethod(1));
         } catch (Exception e) {
             log.warn("Unable to read URL "+url+" for " 
+JavaClassNames.callerNiceClassAndMethod(1)+

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/test-support/src/main/java/org/apache/brooklyn/test/HttpTestUtils.java
----------------------------------------------------------------------
diff --git 
a/test-support/src/main/java/org/apache/brooklyn/test/HttpTestUtils.java 
b/test-support/src/main/java/org/apache/brooklyn/test/HttpTestUtils.java
index ef19665..1d69ff2 100644
--- a/test-support/src/main/java/org/apache/brooklyn/test/HttpTestUtils.java
+++ b/test-support/src/main/java/org/apache/brooklyn/test/HttpTestUtils.java
@@ -314,7 +314,7 @@ public class HttpTestUtils {
             int status;
             try {
                 InputStream errStream = connection.getErrorStream();
-                err = Streams.readFullyString(errStream);
+                err = Streams.readFullyStringAndClose(errStream);
                 status = connection.getResponseCode();
             } finally {
                 closeQuietly(connection);
@@ -331,7 +331,7 @@ public class HttpTestUtils {
     
     public static String getContent(String url) {
         try {
-            return Streams.readFullyString(SslTrustUtils.trustAll(new 
URL(url).openConnection()).getInputStream());
+            return Streams.readFullyStringAndClose(SslTrustUtils.trustAll(new 
URL(url).openConnection()).getInputStream());
         } catch (Exception e) {
             throw Throwables.propagate(e);
         }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/utils/common/src/main/java/org/apache/brooklyn/util/http/HttpTool.java
----------------------------------------------------------------------
diff --git 
a/utils/common/src/main/java/org/apache/brooklyn/util/http/HttpTool.java 
b/utils/common/src/main/java/org/apache/brooklyn/util/http/HttpTool.java
index 0a4bc26..862109f 100644
--- a/utils/common/src/main/java/org/apache/brooklyn/util/http/HttpTool.java
+++ b/utils/common/src/main/java/org/apache/brooklyn/util/http/HttpTool.java
@@ -169,7 +169,7 @@ public class HttpTool {
 
     public static String getContent(String url) {
         try {
-            return Streams.readFullyString(SslTrustUtils.trustAll(new 
URL(url).openConnection()).getInputStream());
+            return Streams.readFullyStringAndClose(SslTrustUtils.trustAll(new 
URL(url).openConnection()).getInputStream());
         } catch (Exception e) {
             throw Throwables.propagate(e);
         }
@@ -184,7 +184,7 @@ public class HttpTool {
             int status;
             try {
                 InputStream errStream = connection.getErrorStream();
-                err = Streams.readFullyString(errStream);
+                err = Streams.readFullyStringAndClose(errStream);
                 status = connection.getResponseCode();
             } finally {
                 closeQuietly(connection);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/utils/common/src/main/java/org/apache/brooklyn/util/stream/Streams.java
----------------------------------------------------------------------
diff --git 
a/utils/common/src/main/java/org/apache/brooklyn/util/stream/Streams.java 
b/utils/common/src/main/java/org/apache/brooklyn/util/stream/Streams.java
index 6d262a9..624613b 100644
--- a/utils/common/src/main/java/org/apache/brooklyn/util/stream/Streams.java
+++ b/utils/common/src/main/java/org/apache/brooklyn/util/stream/Streams.java
@@ -90,7 +90,8 @@ public class Streams {
     }
 
     /** reads the input stream fully, returning a byte array; throws unchecked 
exception on failure;
-     *  to get a string, use <code>readFully(reader(is))</code> or 
<code>readFullyString(is)</code> */
+     *  to get a string, use <code>readFully(reader(is))</code> or 
<code>readFullyString(is)</code>;
+     *  consider using {@ #readFullyAndClose(InputStream)} instead;*/
     public static byte[] readFully(InputStream is) {
         try {
             return ByteStreams.toByteArray(is);
@@ -98,11 +99,33 @@ public class Streams {
             throw Exceptions.propagate(ioe);
         }
     }
+    
+    public static byte[] readFullyAndClose(InputStream is) {
+        try {
+            return readFully(is);
+        } finally {
+            Streams.closeQuietly(is);
+        }
+    }
 
+    /**
+     * Consider using {@link #readFullyStringAndClose(InputStream)} instead.
+     */
     public static String readFullyString(InputStream is) {
         return readFully(reader(is));
     }
-    
+
+    public static String readFullyStringAndClose(InputStream is) {
+        try {
+            return readFullyString(is);
+        } finally {
+            Streams.closeQuietly(is);
+        }
+    }
+
+    /**
+     * Consider using {@link #readFullyAndClose(Reader)} instead.
+     */
     public static String readFully(Reader is) {
         try {
             return CharStreams.toString(is);
@@ -110,6 +133,14 @@ public class Streams {
             throw Exceptions.propagate(ioe);
         }
     }
+    
+    public static String readFullyAndClose(Reader is) {
+        try {
+            return readFully(is);
+        } finally {
+            Streams.closeQuietly(is);
+        }
+    }
 
     public static void copy(InputStream input, OutputStream output) {
         try {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2f52917e/utils/rt-felix/src/test/java/org/apache/brooklyn/rt/felix/EmbeddedFelixFrameworkTest.java
----------------------------------------------------------------------
diff --git 
a/utils/rt-felix/src/test/java/org/apache/brooklyn/rt/felix/EmbeddedFelixFrameworkTest.java
 
b/utils/rt-felix/src/test/java/org/apache/brooklyn/rt/felix/EmbeddedFelixFrameworkTest.java
index c1730d0..11dfe27 100644
--- 
a/utils/rt-felix/src/test/java/org/apache/brooklyn/rt/felix/EmbeddedFelixFrameworkTest.java
+++ 
b/utils/rt-felix/src/test/java/org/apache/brooklyn/rt/felix/EmbeddedFelixFrameworkTest.java
@@ -77,7 +77,7 @@ public class EmbeddedFelixFrameworkTest {
         log.info("Bundles and exported packages:");
         MutableSet<String> allPackages = MutableSet.of();
         while (manifests.hasMoreElements()) {
-            ManifestHelper mf = 
ManifestHelper.forManifestContents(Streams.readFullyString(manifests.nextElement().openStream()));
+            ManifestHelper mf = 
ManifestHelper.forManifestContents(Streams.readFullyStringAndClose(manifests.nextElement().openStream()));
             List<String> mfPackages = mf.getExportedPackages();
             log.info("  " + mf.getSymbolicNameVersion() + ": " + mfPackages);
             allPackages.addAll(mfPackages);

Reply via email to