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());
}
}