You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wink.apache.org by el...@apache.org on 2009/10/25 13:37:40 UTC
svn commit: r829561 - in /incubator/wink/trunk:
wink-client-apache-httpclient/src/main/java/org/apache/wink/client/internal/handlers/
wink-client/src/main/java/org/apache/wink/client/
wink-client/src/main/java/org/apache/wink/client/internal/handlers/
Author: elman
Date: Sun Oct 25 12:37:40 2009
New Revision: 829561
URL: http://svn.apache.org/viewvc?rev=829561&view=rev
Log:
Add consumeContent functionality. See [WINK-220]
Modified:
incubator/wink/trunk/wink-client-apache-httpclient/src/main/java/org/apache/wink/client/internal/handlers/ApacheHttpClientConnectionHandler.java
incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/ClientResponse.java
incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/internal/handlers/ClientResponseImpl.java
Modified: incubator/wink/trunk/wink-client-apache-httpclient/src/main/java/org/apache/wink/client/internal/handlers/ApacheHttpClientConnectionHandler.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-client-apache-httpclient/src/main/java/org/apache/wink/client/internal/handlers/ApacheHttpClientConnectionHandler.java?rev=829561&r1=829560&r2=829561&view=diff
==============================================================================
--- incubator/wink/trunk/wink-client-apache-httpclient/src/main/java/org/apache/wink/client/internal/handlers/ApacheHttpClientConnectionHandler.java (original)
+++ incubator/wink/trunk/wink-client-apache-httpclient/src/main/java/org/apache/wink/client/internal/handlers/ApacheHttpClientConnectionHandler.java Sun Oct 25 12:37:40 2009
@@ -63,8 +63,9 @@
}
public ClientResponse handle(ClientRequest request, HandlerContext context) throws Exception {
+ HttpResponse response = null;
try {
- HttpResponse response = processRequest(request, context);
+ response = processRequest(request, context);
return processResponse(request, context, response);
} catch (Exception e) {
throw new RuntimeException(e);
@@ -174,12 +175,25 @@
return response;
}
- private ClientResponse createResponse(ClientRequest request, HttpResponse httpResponse) {
- ClientResponse response = new ClientResponseImpl();
+ private ClientResponse createResponse(ClientRequest request, final HttpResponse httpResponse) {
+ final ClientResponseImpl response = new ClientResponseImpl();
StatusLine statusLine = httpResponse.getStatusLine();
response.setStatusCode(statusLine.getStatusCode());
response.setMessage(statusLine.getReasonPhrase());
response.getAttributes().putAll(request.getAttributes());
+ response.setContentConsumer(new Runnable() {
+
+ public void run() {
+ HttpEntity entity = httpResponse.getEntity();
+ if (entity != null) {
+ try {
+ entity.consumeContent();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ });
processResponseHeaders(response, httpResponse);
return response;
}
Modified: incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/ClientResponse.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/ClientResponse.java?rev=829561&r1=829560&r2=829561&view=diff
==============================================================================
--- incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/ClientResponse.java (original)
+++ incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/ClientResponse.java Sun Oct 25 12:37:40 2009
@@ -107,4 +107,15 @@
* @param entity response entity to set
*/
public void setEntity(Object entity);
+
+ /**
+ * Consumes entity content. The real behavior of this method depends on the
+ * actual implementation. It's needed to call this method, if the calling
+ * code decides not to handle content.
+ * <p>
+ * There is no need to call this method, if getEntity() was invoked.
+ * <p>
+ * Calling this method multiple times will not cause an error.
+ */
+ public void consumeContent();
}
Modified: incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/internal/handlers/ClientResponseImpl.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/internal/handlers/ClientResponseImpl.java?rev=829561&r1=829560&r2=829561&view=diff
==============================================================================
--- incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/internal/handlers/ClientResponseImpl.java (original)
+++ incubator/wink/trunk/wink-client/src/main/java/org/apache/wink/client/internal/handlers/ClientResponseImpl.java Sun Oct 25 12:37:40 2009
@@ -39,9 +39,10 @@
public class ClientResponseImpl extends BaseRequestResponseImpl implements ClientResponse {
- private Object entity;
- private String message;
- private int status;
+ private Object entity;
+ private String message;
+ private int status;
+ private Runnable contentConsumer;
public <T> T getEntity(Class<T> type) {
return getEntity(type, type);
@@ -127,7 +128,22 @@
throw new ClientRuntimeException(e);
} finally {
RuntimeContextTLS.setRuntimeContext(saved);
+ consumeContent();
}
}
+ public void consumeContent() {
+ if (contentConsumer != null) {
+ contentConsumer.run();
+ }
+ }
+
+ public void setContentConsumer(Runnable contentConsumer) {
+ this.contentConsumer = contentConsumer;
+ }
+
+ public Runnable getContentConsumer() {
+ return contentConsumer;
+ }
+
}