You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by mi...@apache.org on 2015/05/30 21:38:50 UTC

svn commit: r1682646 - in /httpcomponents/httpclient/branches/4.5.x/httpclient: ./ src/main/java/org/apache/http/client/config/ src/main/java/org/apache/http/client/protocol/ src/test/java/org/apache/http/client/config/

Author: michaelo
Date: Sat May 30 19:38:50 2015
New Revision: 1682646

URL: http://svn.apache.org/r1682646
Log:
HTTPCLIENT-1651: Add ability to disable content compression on a request basis

Modified:
    httpcomponents/httpclient/branches/4.5.x/httpclient/   (props changed)
    httpcomponents/httpclient/branches/4.5.x/httpclient/src/main/java/org/apache/http/client/config/RequestConfig.java
    httpcomponents/httpclient/branches/4.5.x/httpclient/src/main/java/org/apache/http/client/protocol/RequestAcceptEncoding.java
    httpcomponents/httpclient/branches/4.5.x/httpclient/src/test/java/org/apache/http/client/config/TestRequestConfig.java

Propchange: httpcomponents/httpclient/branches/4.5.x/httpclient/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Sat May 30 19:38:50 2015
@@ -0,0 +1,7 @@
+/httpcomponents/httpclient/branches/4.0.x/httpclient:950681-950688
+/httpcomponents/httpclient/branches/4.1.x/httpclient:1079518-1080165
+/httpcomponents/httpclient/branches/4.2.x/httpclient:1376150-1376151,1447062
+/httpcomponents/httpclient/branches/branch_4_1/httpclient:755593-811107
+/httpcomponents/httpclient/branches/conn-mgmt-redesign/httpclient:1154913-1160573
+/httpcomponents/httpclient/branches/notice-plugin-test/httpclient:1024348-1031454
+/httpcomponents/httpclient/trunk/httpclient:1682442

Modified: httpcomponents/httpclient/branches/4.5.x/httpclient/src/main/java/org/apache/http/client/config/RequestConfig.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/branches/4.5.x/httpclient/src/main/java/org/apache/http/client/config/RequestConfig.java?rev=1682646&r1=1682645&r2=1682646&view=diff
==============================================================================
--- httpcomponents/httpclient/branches/4.5.x/httpclient/src/main/java/org/apache/http/client/config/RequestConfig.java (original)
+++ httpcomponents/httpclient/branches/4.5.x/httpclient/src/main/java/org/apache/http/client/config/RequestConfig.java Sat May 30 19:38:50 2015
@@ -59,12 +59,13 @@ public class RequestConfig implements Cl
     private final int connectTimeout;
     private final int socketTimeout;
     private final boolean decompressionEnabled;
+    private final boolean contentCompressionEnabled;
 
     /**
      * Intended for CDI compatibility
     */
     protected RequestConfig() {
-        this(false, null, null, false, null, false, false, false, 0, false, null, null, 0, 0, 0, false);
+        this(false, null, null, false, null, false, false, false, 0, false, null, null, 0, 0, 0, false, false);
     }
 
     RequestConfig(
@@ -83,7 +84,8 @@ public class RequestConfig implements Cl
             final int connectionRequestTimeout,
             final int connectTimeout,
             final int socketTimeout,
-            final boolean decompressionEnabled) {
+            final boolean decompressionEnabled,
+            final boolean contentCompressionEnabled) {
         super();
         this.expectContinueEnabled = expectContinueEnabled;
         this.proxy = proxy;
@@ -101,6 +103,7 @@ public class RequestConfig implements Cl
         this.connectTimeout = connectTimeout;
         this.socketTimeout = socketTimeout;
         this.decompressionEnabled = decompressionEnabled;
+        this.contentCompressionEnabled = contentCompressionEnabled;
     }
 
     /**
@@ -317,6 +320,18 @@ public class RequestConfig implements Cl
         return decompressionEnabled;
     }
 
+    /**
+     * Determines whether the target server is requested to compress content.
+     * <p>
+     * Default: {@code true}
+     * </p>
+     *
+     * @since 4.5
+     */
+    public boolean isContentCompressionEnabled() {
+        return contentCompressionEnabled;
+    }
+
     @Override
     protected RequestConfig clone() throws CloneNotSupportedException {
         return (RequestConfig) super.clone();
@@ -341,6 +356,7 @@ public class RequestConfig implements Cl
         builder.append(", connectTimeout=").append(connectTimeout);
         builder.append(", socketTimeout=").append(socketTimeout);
         builder.append(", decompressionEnabled=").append(decompressionEnabled);
+        builder.append(", contentCompressionEnabled=").append(contentCompressionEnabled);
         builder.append("]");
         return builder.toString();
     }
@@ -367,7 +383,8 @@ public class RequestConfig implements Cl
             .setConnectionRequestTimeout(config.getConnectionRequestTimeout())
             .setConnectTimeout(config.getConnectTimeout())
             .setSocketTimeout(config.getSocketTimeout())
-            .setDecompressionEnabled(config.isDecompressionEnabled());
+            .setDecompressionEnabled(config.isDecompressionEnabled())
+            .setContentCompressionEnabled(config.isContentCompressionEnabled());
     }
 
     public static class Builder {
@@ -388,6 +405,7 @@ public class RequestConfig implements Cl
         private int connectTimeout;
         private int socketTimeout;
         private boolean decompressionEnabled;
+        private boolean contentCompressionEnabled;
 
         Builder() {
             super();
@@ -400,6 +418,7 @@ public class RequestConfig implements Cl
             this.connectTimeout = -1;
             this.socketTimeout = -1;
             this.decompressionEnabled = true;
+            this.contentCompressionEnabled = true;
         }
 
         public Builder setExpectContinueEnabled(final boolean expectContinueEnabled) {
@@ -487,6 +506,11 @@ public class RequestConfig implements Cl
             return this;
         }
 
+        public Builder setContentCompressionEnabled(final boolean contentCompressionEnabled) {
+            this.contentCompressionEnabled = contentCompressionEnabled;
+            return this;
+        }
+
         public RequestConfig build() {
             return new RequestConfig(
                     expectContinueEnabled,
@@ -504,7 +528,8 @@ public class RequestConfig implements Cl
                     connectionRequestTimeout,
                     connectTimeout,
                     socketTimeout,
-                    decompressionEnabled);
+                    decompressionEnabled,
+                    contentCompressionEnabled);
         }
 
     }

Modified: httpcomponents/httpclient/branches/4.5.x/httpclient/src/main/java/org/apache/http/client/protocol/RequestAcceptEncoding.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/branches/4.5.x/httpclient/src/main/java/org/apache/http/client/protocol/RequestAcceptEncoding.java?rev=1682646&r1=1682645&r2=1682646&view=diff
==============================================================================
--- httpcomponents/httpclient/branches/4.5.x/httpclient/src/main/java/org/apache/http/client/protocol/RequestAcceptEncoding.java (original)
+++ httpcomponents/httpclient/branches/4.5.x/httpclient/src/main/java/org/apache/http/client/protocol/RequestAcceptEncoding.java Sat May 30 19:38:50 2015
@@ -33,6 +33,7 @@ import org.apache.http.HttpException;
 import org.apache.http.HttpRequest;
 import org.apache.http.HttpRequestInterceptor;
 import org.apache.http.annotation.Immutable;
+import org.apache.http.client.config.RequestConfig;
 import org.apache.http.protocol.HttpContext;
 
 /**
@@ -76,8 +77,11 @@ public class RequestAcceptEncoding imple
             final HttpRequest request,
             final HttpContext context) throws HttpException, IOException {
 
+        final HttpClientContext clientContext = HttpClientContext.adapt(context);
+        final RequestConfig requestConfig = clientContext.getRequestConfig();
+
         /* Signal support for Accept-Encoding transfer encodings. */
-        if (!request.containsHeader("Accept-Encoding")) {
+        if (!request.containsHeader("Accept-Encoding") && requestConfig.isContentCompressionEnabled()) {
             request.addHeader("Accept-Encoding", acceptEncoding);
         }
     }

Modified: httpcomponents/httpclient/branches/4.5.x/httpclient/src/test/java/org/apache/http/client/config/TestRequestConfig.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/branches/4.5.x/httpclient/src/test/java/org/apache/http/client/config/TestRequestConfig.java?rev=1682646&r1=1682645&r2=1682646&view=diff
==============================================================================
--- httpcomponents/httpclient/branches/4.5.x/httpclient/src/test/java/org/apache/http/client/config/TestRequestConfig.java (original)
+++ httpcomponents/httpclient/branches/4.5.x/httpclient/src/test/java/org/apache/http/client/config/TestRequestConfig.java Sat May 30 19:38:50 2015
@@ -59,6 +59,7 @@ public class TestRequestConfig {
         Assert.assertEquals(null, config.getProxy());
         Assert.assertEquals(null, config.getTargetPreferredAuthSchemes());
         Assert.assertEquals(null, config.getProxyPreferredAuthSchemes());
+        Assert.assertEquals(true, config.isContentCompressionEnabled());
     }
 
     @Test
@@ -78,6 +79,7 @@ public class TestRequestConfig {
                 .setProxy(new HttpHost("someproxy"))
                 .setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM))
                 .setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.DIGEST))
+                .setContentCompressionEnabled(false)
                 .build();
         final RequestConfig config = RequestConfig.copy(config0).build();
         Assert.assertEquals(22, config.getSocketTimeout());
@@ -94,6 +96,7 @@ public class TestRequestConfig {
         Assert.assertEquals(new HttpHost("someproxy"), config.getProxy());
         Assert.assertEquals(Arrays.asList(AuthSchemes.NTLM), config.getTargetPreferredAuthSchemes());
         Assert.assertEquals(Arrays.asList(AuthSchemes.DIGEST), config.getProxyPreferredAuthSchemes());
+        Assert.assertEquals(false, config.isContentCompressionEnabled());
     }
 
 }