Skip to content

Commit

Permalink
add close() to response bodies
Browse files Browse the repository at this point in the history
  • Loading branch information
jianghaolu committed Mar 21, 2016
1 parent 6ac47d9 commit 4bbb4a5
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ public <T> ServiceResponse<T> getPutOrPatchResult(Response<ResponseBody> respons
exception.setResponse(response);
if (responseBody != null) {
exception.setBody((CloudError) mapperAdapter.deserialize(responseBody.string(), CloudError.class));
responseBody.close();
}
throw exception;
}
Expand All @@ -108,6 +109,7 @@ public <T> ServiceResponse<T> getPutOrPatchResult(Response<ResponseBody> respons

// Check provisioning state
while (!AzureAsyncOperation.getTerminalStatuses().contains(pollingState.getStatus())) {
System.err.println(pollingState.getStatus());
Thread.sleep(pollingState.getDelayInMilliseconds());

if (pollingState.getAzureAsyncOperationHeaderLink() != null
Expand Down Expand Up @@ -186,6 +188,7 @@ public <T> AsyncPollingTask<T> getPutOrPatchResultAsync(Response<ResponseBody> r
try {
if (responseBody != null) {
exception.setBody((CloudError) mapperAdapter.deserialize(responseBody.string(), CloudError.class));
responseBody.close();
}
} catch (Exception e) { /* ignore serialization errors on top of service errors */ }
callback.failure(exception);
Expand Down Expand Up @@ -272,6 +275,7 @@ public <T> ServiceResponse<T> getPostOrDeleteResult(Response<ResponseBody> respo
exception.setResponse(response);
if (responseBody != null) {
exception.setBody((CloudError) mapperAdapter.deserialize(responseBody.string(), CloudError.class));
responseBody.close();
}
throw exception;
}
Expand All @@ -281,6 +285,7 @@ public <T> ServiceResponse<T> getPostOrDeleteResult(Response<ResponseBody> respo
// Check provisioning state
while (!AzureAsyncOperation.getTerminalStatuses().contains(pollingState.getStatus())) {
Thread.sleep(pollingState.getDelayInMilliseconds());
System.err.println(pollingState.getStatus());

if (pollingState.getAzureAsyncOperationHeaderLink() != null
&& !pollingState.getAzureAsyncOperationHeaderLink().isEmpty()) {
Expand Down Expand Up @@ -358,6 +363,7 @@ public <T> AsyncPollingTask<T> getPostOrDeleteResultAsync(Response<ResponseBody>
try {
if (responseBody != null) {
exception.setBody((CloudError) mapperAdapter.deserialize(responseBody.string(), CloudError.class));
responseBody.close();
}
} catch (Exception e) { /* ignore serialization errors on top of service errors */ }
callback.failure(exception);
Expand Down Expand Up @@ -581,13 +587,15 @@ private <T> void updateStateFromAzureAsyncOperationHeader(PollingState<T> pollin
AzureAsyncOperation body = null;
if (response.body() != null) {
body = mapperAdapter.deserialize(response.body().string(), AzureAsyncOperation.class);
response.body().close();
}

if (body == null || body.getStatus() == null) {
CloudException exception = new CloudException("no body");
exception.setResponse(response);
if (response.errorBody() != null) {
exception.setBody((CloudError) mapperAdapter.deserialize(response.errorBody().string(), CloudError.class));
response.errorBody().close();
}
throw exception;
}
Expand Down Expand Up @@ -619,12 +627,14 @@ public void success(ServiceResponse<ResponseBody> result) {
AzureAsyncOperation body = null;
if (result.getBody() != null) {
body = mapperAdapter.deserialize(result.getBody().string(), AzureAsyncOperation.class);
result.getBody().close();
}
if (body == null || body.getStatus() == null) {
CloudException exception = new CloudException("no body");
exception.setResponse(result.getResponse());
if (result.getResponse().errorBody() != null) {
exception.setBody((CloudError) mapperAdapter.deserialize(result.getResponse().errorBody().string(), CloudError.class));
result.getResponse().errorBody().close();
}
failure(exception);
} else {
Expand Down Expand Up @@ -664,8 +674,10 @@ private Response<ResponseBody> poll(String url) throws CloudException, IOExcepti
exception.setResponse(response);
if (response.body() != null) {
exception.setBody((CloudError) mapperAdapter.deserialize(response.body().string(), CloudError.class));
response.body().close();
} else if (response.errorBody() != null) {
exception.setBody((CloudError) mapperAdapter.deserialize(response.errorBody().string(), CloudError.class));
response.errorBody().close();
}
throw exception;
}
Expand Down Expand Up @@ -704,8 +716,10 @@ public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
exception.setResponse(response);
if (response.body() != null) {
exception.setBody((CloudError) mapperAdapter.deserialize(response.body().string(), CloudError.class));
response.body().close();
} else if (response.errorBody() != null) {
exception.setBody((CloudError) mapperAdapter.deserialize(response.errorBody().string(), CloudError.class));
response.errorBody().close();
}
callback.failure(exception);
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ public PollingState(Response<ResponseBody> response, Integer retryTimeout, Type
PollingResource resource = null;
if (response.body() != null) {
responseContent = response.body().string();
response.body().close();
}
if (responseContent != null && !responseContent.isEmpty()) {
this.resource = mapperAdapter.deserialize(responseContent, resourceType);
Expand Down Expand Up @@ -95,6 +96,7 @@ public void updateFromResponseOnPutPatch(Response<ResponseBody> response) throws
String responseContent = null;
if (response.body() != null) {
responseContent = response.body().string();
response.body().close();
}

if (responseContent == null || responseContent.isEmpty()) {
Expand Down Expand Up @@ -130,6 +132,7 @@ public void updateFromResponseOnDeletePost(Response<ResponseBody> response) thro
String responseContent = null;
if (response.body() != null) {
responseContent = response.body().string();
response.body().close();
}
this.setResource(mapperAdapter.<T>deserialize(responseContent, resourceType));
setStatus(AzureAsyncOperation.SUCCESS_STATUS);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,7 @@ public ServiceResponse<T> buildEmpty(Response<Void> response) throws E, IOExcept
try {
E exception = (E) exceptionType.getConstructor(String.class).newInstance("Invalid status code " + statusCode);
exceptionType.getMethod("setResponse", response.getClass()).invoke(exception, response);
response.errorBody().close();
throw exception;
} catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
throw new IOException("Invalid status code " + statusCode + ", but an instance of " + exceptionType.getCanonicalName()
Expand Down Expand Up @@ -213,6 +214,7 @@ public <THeader> ServiceResponseWithHeaders<T, THeader> buildWithHeaders(Respons
THeader headers = mapperAdapter.deserialize(
mapperAdapter.serialize(response.headers()),
headerType);
response.errorBody().close();
return new ServiceResponseWithHeaders<>(bodyResponse.getBody(), headers, bodyResponse.getResponse());
}

Expand All @@ -238,6 +240,7 @@ public <THeader> ServiceResponseWithHeaders<T, THeader> buildEmptyWithHeaders(Re
THeader headers = mapperAdapter.deserialize(
mapperAdapter.serialize(response.headers()),
headerType);
response.errorBody().close();
return new ServiceResponseWithHeaders<>(headers, bodyResponse.getHeadResponse());
}

Expand Down Expand Up @@ -277,6 +280,7 @@ else if (type == InputStream.class) {
// Deserialize
else {
String responseContent = responseBody.string();
responseBody.close();
if (responseContent.length() <= 0) {
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ public Response intercept(Chain chain) throws IOException {

// try the request
Response response = chain.proceed(request);
response.body().close();

int tryCount = 0;
while (retryStrategy.shouldRetry(tryCount, response)) {
Expand Down

0 comments on commit 4bbb4a5

Please sign in to comment.