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");