You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2013/10/22 05:04:45 UTC
[7/9] git commit: Refactored configuration code;
HttpClient instance is now immutable and static
Refactored configuration code; HttpClient instance is now immutable and static
Project: http://git-wip-us.apache.org/repos/asf/maven-wagon/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-wagon/commit/e198f011
Tree: http://git-wip-us.apache.org/repos/asf/maven-wagon/tree/e198f011
Diff: http://git-wip-us.apache.org/repos/asf/maven-wagon/diff/e198f011
Branch: refs/heads/master
Commit: e198f0110df4b7ca0cface82806624ed5ad1dcb9
Parents: 70e4261
Author: Oleg Kalnichevski <ol...@apache.org>
Authored: Tue Sep 24 20:25:12 2013 +0200
Committer: Oleg Kalnichevski <ol...@apache.org>
Committed: Tue Sep 24 20:25:12 2013 +0200
----------------------------------------------------------------------
.../providers/http/AbstractHttpClientWagon.java | 125 +++++++++----------
.../providers/http/HttpMethodConfiguration.java | 8 +-
.../providers/http/HttpClientWagonTest.java | 4 +-
3 files changed, 67 insertions(+), 70 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/e198f011/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
index 8df1404..0a7e59d 100755
--- a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
+++ b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
@@ -54,6 +54,7 @@ import org.apache.http.auth.NTCredentials;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.AuthCache;
import org.apache.http.client.CredentialsProvider;
+import org.apache.http.client.config.CookieSpecs;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
@@ -101,8 +102,6 @@ import org.codehaus.plexus.util.StringUtils;
public abstract class AbstractHttpClientWagon
extends StreamWagon
{
- private static String defaultUserAgent;
-
private final class RequestEntityImplementation
extends AbstractHttpEntity
{
@@ -223,12 +222,6 @@ public abstract class AbstractHttpClientWagon
private static final TimeZone GMT_TIME_ZONE = TimeZone.getTimeZone( "GMT" );
- private CloseableHttpClient client;
-
- private HttpClientContext localContext;
-
- private Closeable closeable;
-
/**
* use http(s) connection pool mechanism.
* <b>enabled by default</b>
@@ -275,7 +268,7 @@ public abstract class AbstractHttpClientWagon
/**
* Internal connection manager
*/
- private static final PoolingHttpClientConnectionManager connManager = createConnManager();
+ private static final PoolingHttpClientConnectionManager CONN_MAN = createConnManager();
private static PoolingHttpClientConnectionManager createConnManager()
{
@@ -328,6 +321,46 @@ public abstract class AbstractHttpClientWagon
return connManager;
}
+ private static CloseableHttpClient CLIENT = createClient();
+
+ private static CloseableHttpClient createClient() {
+ return HttpClientBuilder.create()
+ .useSystemProperties()
+ .disableConnectionState()
+ .setConnectionManager(CONN_MAN)
+ .build();
+ }
+
+ private static String DEFAULT_USER_AGENT = getDefaultUserAgent();
+
+ private static String getDefaultUserAgent()
+ {
+ Properties props = new Properties();
+
+ InputStream is = AbstractHttpClientWagon.class.getResourceAsStream("/META-INF/maven/org.apache.maven.wagon/wagon-http/pom.properties");
+ if ( is != null )
+ {
+ try
+ {
+ props.load( is );
+ }
+ catch ( IOException ignore )
+ {
+ }
+ finally
+ {
+ IOUtil.close( is );
+ }
+ }
+
+ String ver = props.getProperty( "version", "unknown-version" );
+ return "Apache-Maven-Wagon/" + ver + " (Java " + System.getProperty( "java.version" ) + "; ";
+ }
+
+ private HttpClientContext localContext;
+
+ private Closeable closeable;
+
/**
* @plexus.configuration
* @deprecated Use httpConfiguration instead.
@@ -373,20 +406,16 @@ public abstract class AbstractHttpClientWagon
}
}
- HttpHost proxy = null;
ProxyInfo proxyInfo = getProxyInfo( getRepository().getProtocol(), getRepository().getHost() );
if ( proxyInfo != null )
{
String proxyUsername = proxyInfo.getUserName();
String proxyPassword = proxyInfo.getPassword();
String proxyHost = proxyInfo.getHost();
- int proxyPort = proxyInfo.getPort();
String proxyNtlmHost = proxyInfo.getNtlmHost();
String proxyNtlmDomain = proxyInfo.getNtlmDomain();
if ( proxyHost != null )
{
- proxy = new HttpHost( proxyHost, proxyPort );
-
if ( proxyUsername != null && proxyPassword != null )
{
Credentials creds;
@@ -408,21 +437,14 @@ public abstract class AbstractHttpClientWagon
}
localContext = HttpClientContext.create();
-
- client = HttpClientBuilder.create()
- .useSystemProperties()
- .disableConnectionState()
- .setConnectionManager(connManager)
- .setProxy(proxy)
- .setDefaultCredentialsProvider(credentialsProvider)
- .build();
+ localContext.setCredentialsProvider(credentialsProvider);
}
public void closeConnection()
{
if ( !PERSISTENT_POOL)
{
- connManager.closeIdleConnections(0, TimeUnit.MILLISECONDS);
+ CONN_MAN.closeIdleConnections(0, TimeUnit.MILLISECONDS);
}
}
@@ -664,11 +686,23 @@ public abstract class AbstractHttpClientWagon
httpMethod.setHeader(HTTP.USER_AGENT, userAgent);
}
+ RequestConfig.Builder requestConfigBuilder = RequestConfig.custom();
+ // WAGON-273: default the cookie-policy to browser compatible
+ requestConfigBuilder.setCookieSpec(CookieSpecs.BROWSER_COMPATIBILITY);
+
+ ProxyInfo proxyInfo = getProxyInfo( getRepository().getProtocol(), getRepository().getHost() );
+ if ( proxyInfo != null )
+ {
+ HttpHost proxy = new HttpHost( proxyInfo.getHost(), proxyInfo.getPort() );
+ requestConfigBuilder.setProxy( proxy );
+ }
+
HttpMethodConfiguration config =
- httpConfiguration == null ? null : httpConfiguration.getMethodConfiguration( httpMethod );
+ httpConfiguration == null ? null : httpConfiguration.getMethodConfiguration(httpMethod);
+
if ( config != null )
{
- localContext.setRequestConfig( config.asRequestConfig() );
+ config.applyConfig(requestConfigBuilder);
if ( config.isUsePreemptive() && authenticationInfo != null )
{
@@ -691,13 +725,10 @@ public abstract class AbstractHttpClientWagon
}
else
{
- RequestConfig requestConfig = RequestConfig.custom()
- .setSocketTimeout( getReadTimeout() )
- .build();
- localContext.setRequestConfig( requestConfig );
+ requestConfigBuilder.setSocketTimeout( getReadTimeout() );
}
- ProxyInfo proxyInfo = getProxyInfo( getRepository().getProtocol(), getRepository().getHost() );
+ localContext.setRequestConfig( requestConfigBuilder.build() );
if ( proxyInfo != null )
{
@@ -721,7 +752,7 @@ public abstract class AbstractHttpClientWagon
}
- return client.execute( httpMethod, localContext );
+ return CLIENT.execute( httpMethod, localContext );
}
protected void setHeaders( HttpUriRequest method )
@@ -736,7 +767,7 @@ public abstract class AbstractHttpClientWagon
method.addHeader( "Pragma", "no-cache" );
method.addHeader( "Expires", "0" );
method.addHeader( "Accept-Encoding", "gzip" );
- method.addHeader( "User-Agent", getDefaultUserAgent() );
+ method.addHeader( "User-Agent", DEFAULT_USER_AGENT );
}
if ( httpHeaders != null )
@@ -757,38 +788,6 @@ public abstract class AbstractHttpClientWagon
}
}
- private String getDefaultUserAgent()
- {
- if ( defaultUserAgent == null )
- {
- defaultUserAgent =
- "Apache-Maven-Wagon/" + getWagonVersion() + " (Java " + System.getProperty( "java.version" ) + "; "
- + System.getProperty( "os.name" ) + " " + System.getProperty( "os.version" ) + ")";
- }
- return defaultUserAgent;
- }
-
- private String getWagonVersion()
- {
- Properties props = new Properties();
-
- InputStream is = getClass().getResourceAsStream( "/META-INF/maven/org.apache.maven.wagon/wagon-http/pom.properties" );
- if ( is != null )
- {
- try
- {
- props.load( is );
- }
- catch ( IOException e )
- {
- // ignore
- }
- IOUtil.close( is );
- }
-
- return props.getProperty( "version", "unknown-version" );
- }
-
protected String getUserAgent( HttpUriRequest method )
{
if ( httpHeaders != null )
http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/e198f011/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpMethodConfiguration.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpMethodConfiguration.java b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpMethodConfiguration.java
index 1d10c49..a1341eb 100755
--- a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpMethodConfiguration.java
+++ b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpMethodConfiguration.java
@@ -146,15 +146,12 @@ public class HttpMethodConfiguration
private static final String COERCE_PATTERN = "%(\\w+),(.+)";
- public RequestConfig asRequestConfig()
+ public void applyConfig(RequestConfig.Builder builder)
{
if ( !hasParams() )
{
- return null;
+ return;
}
- RequestConfig.Builder builder = RequestConfig.custom();
- // WAGON-273: default the cookie-policy to browser compatible
- builder.setCookieSpec(CookieSpecs.BROWSER_COMPATIBILITY);
if ( connectionTimeout > 0 )
{
builder.setConnectTimeout(connectionTimeout);
@@ -244,7 +241,6 @@ public class HttpMethodConfiguration
}
}
}
- return builder.build();
}
private boolean hasParams()
http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/e198f011/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpClientWagonTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpClientWagonTest.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpClientWagonTest.java
index 95683cd..01a130c 100755
--- a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpClientWagonTest.java
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpClientWagonTest.java
@@ -42,7 +42,9 @@ public class HttpClientWagonTest
config.setAll(methodConfig);
HttpHead method = new HttpHead();
- RequestConfig requestConfig = config.getMethodConfiguration(method).asRequestConfig();
+ RequestConfig.Builder builder = RequestConfig.custom();
+ config.getMethodConfiguration(method).applyConfig( builder );
+ RequestConfig requestConfig = builder.build();
assertEquals(2, requestConfig.getMaxRedirects());
}