[prev in list] [next in list] [prev in thread] [next in thread] 

List:       wink-commits
Subject:    svn commit: r829561 - in /incubator/wink/trunk:
From:       elman () apache ! org
Date:       2009-10-25 12:37:40
Message-ID: 20091025123740.C354123888CF () eris ! apache ! org
[Download RAW message or body]

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/s \
rc/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/a \
pache/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;
+    }
+
 }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic