Skip to content

Commit 83e5d9e

Browse files
committed
HttpOpener: Close input stream resources. (#514)
1 parent a9d569b commit 83e5d9e

File tree

2 files changed

+15
-21
lines changed

2 files changed

+15
-21
lines changed

metafacture-io/src/main/java/org/metafacture/io/HttpOpener.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -295,12 +295,16 @@ public void process(final String input) {
295295
final HttpURLConnection connection = requestBody != null ?
296296
doOutput(urlToOpen, requestBody) : doRedirects(urlToOpen);
297297

298-
final InputStream inputStream = getInputStream(connection);
299298
final String charset = getContentCharset(connection);
300299

301-
getReceiver().process(new InputStreamReader(
300+
try (
301+
InputStream inputStream = getInputStream(connection);
302+
Reader reader = new InputStreamReader(
302303
"gzip".equalsIgnoreCase(connection.getContentEncoding()) ?
303-
new GZIPInputStream(inputStream) : inputStream, charset));
304+
new GZIPInputStream(inputStream) : inputStream, charset)
305+
) {
306+
getReceiver().process(reader);
307+
}
304308
}
305309
catch (final IOException e) {
306310
throw new MetafactureException(e);

metafacture-io/src/test/java/org/metafacture/io/HttpOpenerTest.java

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,12 @@
1616

1717
package org.metafacture.io;
1818

19-
import org.metafacture.commons.ResourceUtil;
2019
import org.metafacture.framework.ObjectReceiver;
2120

2221
import com.github.tomakehurst.wiremock.client.MappingBuilder;
2322
import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder;
2423
import com.github.tomakehurst.wiremock.client.WireMock;
2524
import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
26-
import com.github.tomakehurst.wiremock.http.HttpHeader;
27-
import com.github.tomakehurst.wiremock.http.HttpHeaders;
2825
import com.github.tomakehurst.wiremock.http.RequestMethod;
2926
import com.github.tomakehurst.wiremock.junit.WireMockRule;
3027
import com.github.tomakehurst.wiremock.matching.RequestPatternBuilder;
@@ -34,10 +31,7 @@
3431
import org.junit.ComparisonFailure;
3532
import org.junit.Rule;
3633
import org.junit.Test;
37-
import org.mockito.ArgumentCaptor;
38-
import org.mockito.Captor;
3934
import org.mockito.Mock;
40-
import org.mockito.Mockito;
4135
import org.mockito.junit.MockitoJUnit;
4236
import org.mockito.junit.MockitoRule;
4337

@@ -49,8 +43,6 @@
4943
import java.util.function.Consumer;
5044
import java.util.zip.GZIPOutputStream;
5145

52-
import static org.mockito.Mockito.times;
53-
5446
/**
5547
* Tests for class {@link HttpOpener}.
5648
*
@@ -92,9 +84,6 @@ public final class HttpOpenerTest {
9284
@Mock
9385
private ObjectReceiver<Reader> receiver;
9486

95-
@Captor
96-
private ArgumentCaptor<Reader> processedObject;
97-
9887
@Test
9988
public void shouldPerformGetRequestWithInputAsUrlByDefault() throws IOException {
10089
shouldPerformRequest(TEST_URL, HttpOpener.Method.GET, (o, u) -> {});
@@ -341,17 +330,18 @@ private void shouldPerformRequest(final String input, final HttpOpener.Method me
341330

342331
WireMock.stubFor(stub);
343332

344-
opener.process(String.format(input, baseUrl));
333+
TestHelpers.assertReader(receiver, responseBody, () -> {
334+
opener.process(String.format(input, baseUrl));
345335

346-
// use the opener a second time in a workflow:
347-
opener.process(String.format(input, baseUrl));
336+
// use the opener a second time in a workflow:
337+
opener.process(String.format(input, baseUrl));
348338

349-
opener.closeStream();
339+
opener.closeStream();
350340

351-
WireMock.verify(request);
341+
return 2;
342+
});
352343

353-
Mockito.verify(receiver, times(2)).process(processedObject.capture());
354-
Assert.assertEquals(responseBody, ResourceUtil.readAll(processedObject.getValue()));
344+
WireMock.verify(request);
355345
}
356346

357347
}

0 commit comments

Comments
 (0)