Merge pull request #366 from sebastian-nagel/NUTCH-2622-unbundle-lgpl-licensed-jars
NUTCH-2622 Unbundle LGPL-licensed jars from binary release
diff --git a/src/plugin/protocol-okhttp/src/java/org/apache/nutch/protocol/okhttp/OkHttpResponse.java b/src/plugin/protocol-okhttp/src/java/org/apache/nutch/protocol/okhttp/OkHttpResponse.java
index b720c28..5e861c7 100644
--- a/src/plugin/protocol-okhttp/src/java/org/apache/nutch/protocol/okhttp/OkHttpResponse.java
+++ b/src/plugin/protocol-okhttp/src/java/org/apache/nutch/protocol/okhttp/OkHttpResponse.java
@@ -94,42 +94,44 @@
Request request = rb.build();
okhttp3.Call call = okhttp.getClient().newCall(request);
- okhttp3.Response response = call.execute();
+ // ensure that Response and underlying ResponseBody are closed
+ try (okhttp3.Response response = call.execute()) {
- Metadata responsemetadata = new Metadata();
- okhttp3.Headers httpHeaders = response.headers();
+ Metadata responsemetadata = new Metadata();
+ okhttp3.Headers httpHeaders = response.headers();
- for (int i = 0, size = httpHeaders.size(); i < size; i++) {
- String key = httpHeaders.name(i);
- String value = httpHeaders.value(i);
+ for (int i = 0, size = httpHeaders.size(); i < size; i++) {
+ String key = httpHeaders.name(i);
+ String value = httpHeaders.value(i);
- if (key.equals(REQUEST) || key.equals(RESPONSE_HEADERS)) {
- value = new String(Base64.getDecoder().decode(value));
+ if (key.equals(REQUEST) || key.equals(RESPONSE_HEADERS)) {
+ value = new String(Base64.getDecoder().decode(value));
+ }
+
+ responsemetadata.add(key, value);
+ }
+ LOG.debug("{} - {} {} {}", url, response.protocol(), response.code(),
+ response.message());
+
+ TruncatedContent truncated = new TruncatedContent();
+ content = toByteArray(response.body(), truncated, okhttp.getMaxContent(),
+ okhttp.getMaxDuration(), okhttp.isStorePartialAsTruncated());
+ responsemetadata.add(FETCH_TIME,
+ Long.toString(System.currentTimeMillis()));
+ if (truncated.booleanValue()) {
+ if (!call.isCanceled()) {
+ call.cancel();
+ }
+ responsemetadata.set(TRUNCATED_CONTENT, "true");
+ responsemetadata.set(TRUNCATED_CONTENT_REASON,
+ truncated.getReason().toString().toLowerCase(Locale.ROOT));
+ LOG.debug("HTTP content truncated to {} bytes (reason: {})",
+ content.length, truncated.getReason());
}
- responsemetadata.add(key, value);
+ code = response.code();
+ headers = responsemetadata;
}
- LOG.debug("{} - {} {} {}", url, response.protocol(), response.code(),
- response.message());
-
- TruncatedContent truncated = new TruncatedContent();
- content = toByteArray(response.body(), truncated, okhttp.getMaxContent(),
- okhttp.getMaxDuration(), okhttp.isStorePartialAsTruncated());
- responsemetadata.add(FETCH_TIME, Long.toString(System.currentTimeMillis()));
- if (truncated.booleanValue()) {
- if (!call.isCanceled()) {
- call.cancel();
- }
- responsemetadata.set(TRUNCATED_CONTENT, "true");
- responsemetadata.set(TRUNCATED_CONTENT_REASON,
- truncated.getReason().toString().toLowerCase(Locale.ROOT));
- LOG.debug("HTTP content truncated to {} bytes (reason: {})",
- content.length, truncated.getReason());
- }
-
- code = response.code();
- headers = responsemetadata;
-
}
private final byte[] toByteArray(final ResponseBody responseBody,