diff --git a/connectors/apache-connector/src/main/java/org/glassfish/jersey/apache/connector/ApacheConnector.java b/connectors/apache-connector/src/main/java/org/glassfish/jersey/apache/connector/ApacheConnector.java index f98f1cad8c..9b9b05b3cd 100644 --- a/connectors/apache-connector/src/main/java/org/glassfish/jersey/apache/connector/ApacheConnector.java +++ b/connectors/apache-connector/src/main/java/org/glassfish/jersey/apache/connector/ApacheConnector.java @@ -437,7 +437,7 @@ public ClientResponse apply(final ClientRequest clientRequest) throws Processing ? Statuses.from(response.getStatusLine().getStatusCode()) : Statuses.from(response.getStatusLine().getStatusCode(), response.getStatusLine().getReasonPhrase()); - final ClientResponse responseContext = new ClientResponse(status, clientRequest); + final ClientResponse responseContext = new ApacheConnectorClientResponse(status, clientRequest, response); final List redirectLocations = context.getRedirectLocations(); if (redirectLocations != null && !redirectLocations.isEmpty()) { responseContext.setResolvedRequestUri(redirectLocations.get(redirectLocations.size() - 1)); diff --git a/connectors/apache-connector/src/main/java/org/glassfish/jersey/apache/connector/ApacheConnectorClientResponse.java b/connectors/apache-connector/src/main/java/org/glassfish/jersey/apache/connector/ApacheConnectorClientResponse.java new file mode 100644 index 0000000000..9176fd1ffd --- /dev/null +++ b/connectors/apache-connector/src/main/java/org/glassfish/jersey/apache/connector/ApacheConnectorClientResponse.java @@ -0,0 +1,50 @@ +package org.glassfish.jersey.apache.connector; + +import java.io.IOException; + +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.StatusType; + +import org.apache.http.client.methods.CloseableHttpResponse; +import org.glassfish.jersey.client.ClientRequest; +import org.glassfish.jersey.client.ClientResponse; + +/** + * + * @author marcus + * + */ +public class ApacheConnectorClientResponse extends ClientResponse { + + private CloseableHttpResponse closeableHttpResponse = null; + + public ApacheConnectorClientResponse(ClientRequest requestContext, + Response response) { + super(requestContext, response); + } + + public ApacheConnectorClientResponse(StatusType status, + ClientRequest requestContext, + CloseableHttpResponse closeableHttpResponse) { + super(status, requestContext); + this.closeableHttpResponse = closeableHttpResponse; + } + + public ApacheConnectorClientResponse(StatusType status, + ClientRequest requestContext) { + super(status, requestContext); + } + + @Override + public void close() { + if (closeableHttpResponse != null) { + try { + closeableHttpResponse.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + super.close(); + } + +}