You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2010/10/10 21:59:39 UTC

svn commit: r1006348 - in /httpcomponents/httpclient/trunk/httpclient-cache/src: main/java/org/apache/http/impl/client/cache/SizeLimitedResponseReader.java test/java/org/apache/http/impl/client/cache/TestSizeLimitedResponseReader.java

Author: olegk
Date: Sun Oct 10 19:59:39 2010
New Revision: 1006348

URL: http://svn.apache.org/viewvc?rev=1006348&view=rev
Log:
HTTPCLIENT-1009: content-type / content-encoding headers on cache response entities
Contributed by Felix Berger <bflat1 at gmx.net>

Modified:
    httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/SizeLimitedResponseReader.java
    httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestSizeLimitedResponseReader.java

Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/SizeLimitedResponseReader.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/SizeLimitedResponseReader.java?rev=1006348&r1=1006347&r2=1006348&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/SizeLimitedResponseReader.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/SizeLimitedResponseReader.java Sun Oct 10 19:59:39 2010
@@ -117,7 +117,13 @@ class SizeLimitedResponseReader {
         ensureConsumed();
         HttpResponse reconstructed = new BasicHttpResponse(response.getStatusLine());
         reconstructed.setHeaders(response.getAllHeaders());
-        reconstructed.setEntity(new CombinedEntity(resource, instream));
+        CombinedEntity combinedEntity = new CombinedEntity(resource, instream);
+        HttpEntity entity = response.getEntity();
+        if (entity != null) {
+            combinedEntity.setContentType(entity.getContentType());
+            combinedEntity.setContentEncoding(entity.getContentEncoding());
+        }
+        reconstructed.setEntity(combinedEntity);
         return reconstructed;
     }
 

Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestSizeLimitedResponseReader.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestSizeLimitedResponseReader.java?rev=1006348&r1=1006347&r2=1006348&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestSizeLimitedResponseReader.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestSizeLimitedResponseReader.java Sun Oct 10 19:59:39 2010
@@ -26,12 +26,14 @@
  */
 package org.apache.http.impl.client.cache;
 
+import org.apache.http.HttpEntity;
 import org.apache.http.HttpRequest;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
 import org.apache.http.HttpVersion;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.entity.ByteArrayEntity;
+import org.apache.http.entity.StringEntity;
 import org.apache.http.message.BasicHttpResponse;
 import org.apache.http.util.EntityUtils;
 import org.junit.Assert;
@@ -114,6 +116,27 @@ public class TestSizeLimitedResponseRead
     }
 
     @Test
+    public void testTooLargeEntityHasOriginalContentTypes() throws Exception {
+        HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, "OK");
+        StringEntity entity = new StringEntity("large entity content", "text/plain", "utf-8");
+        response.setEntity(entity);
+
+        impl = new SizeLimitedResponseReader(new HeapResourceFactory(), MAX_SIZE, request, response);
+
+        impl.readResponse();
+        boolean tooLarge = impl.isLimitReached();
+        HttpResponse result = impl.getReconstructedResponse();
+        HttpEntity reconstructedEntity = result.getEntity();
+        Assert.assertEquals(entity.getContentEncoding(), reconstructedEntity.getContentEncoding());
+        Assert.assertEquals(entity.getContentType(), reconstructedEntity.getContentType());
+
+        String content = EntityUtils.toString(reconstructedEntity);
+
+        Assert.assertTrue(tooLarge);
+        Assert.assertEquals("large entity content", content);
+    }
+
+    @Test
     public void testResponseCopiesAllOriginalHeaders() throws Exception {
         byte[] buf = new byte[] { 1, 2, 3 };
         HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, "OK");