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);
