You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2020/06/18 15:59:12 UTC
[maven-resolver] 01/01: Remove deprecated usages of http client
classes
This is an automated email from the ASF dual-hosted git repository.
slachiewicz pushed a commit to branch upgrade-http-componentc
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git
commit a2bca5d57bd1d2e7c7034cf8ed613d8c194e9009
Author: Sylwester Lachiewicz <sl...@apache.org>
AuthorDate: Thu Jun 18 17:53:34 2020 +0200
Remove deprecated usages of http client classes
---
.../aether/transport/http/AuthSchemePool.java | 4 +-
.../eclipse/aether/transport/http/GlobalState.java | 55 +++++++++-----
.../aether/transport/http/HttpTransporter.java | 88 +++++++++++++---------
.../eclipse/aether/transport/http/LocalState.java | 6 +-
.../aether/transport/http/SharingHttpContext.java | 10 +--
.../aether/transport/http/SslSocketFactory.java | 87 ---------------------
.../http/X509HostnameVerifierAdapter.java | 79 -------------------
.../eclipse/aether/transport/http/HttpServer.java | 2 +-
.../aether/transport/http/HttpTransporterTest.java | 9 +--
9 files changed, 104 insertions(+), 236 deletions(-)
diff --git a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/AuthSchemePool.java b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/AuthSchemePool.java
index 1957688..384227f 100644
--- a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/AuthSchemePool.java
+++ b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/AuthSchemePool.java
@@ -22,7 +22,7 @@ package org.eclipse.aether.transport.http;
import java.util.LinkedList;
import org.apache.http.auth.AuthScheme;
-import org.apache.http.client.params.AuthPolicy;
+import org.apache.http.client.config.AuthSchemes;
import org.apache.http.impl.auth.BasicScheme;
/**
@@ -47,7 +47,7 @@ final class AuthSchemePool
{
authScheme = authSchemes.removeLast();
}
- else if ( AuthPolicy.BASIC.equalsIgnoreCase( schemeName ) )
+ else if ( AuthSchemes.BASIC.equalsIgnoreCase( schemeName ) )
{
authScheme = new BasicScheme();
}
diff --git a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/GlobalState.java b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/GlobalState.java
index 29ef555..b8205ad 100644
--- a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/GlobalState.java
+++ b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/GlobalState.java
@@ -27,15 +27,21 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.apache.http.HttpHost;
-import org.apache.http.conn.ClientConnectionManager;
-import org.apache.http.conn.scheme.PlainSocketFactory;
-import org.apache.http.conn.scheme.Scheme;
-import org.apache.http.conn.scheme.SchemeRegistry;
-import org.apache.http.impl.conn.PoolingClientConnectionManager;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.conn.HttpClientConnectionManager;
+import org.apache.http.conn.socket.ConnectionSocketFactory;
+import org.apache.http.conn.socket.PlainConnectionSocketFactory;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.eclipse.aether.RepositoryCache;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.util.ConfigUtils;
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLSocketFactory;
+
+import static org.apache.http.conn.ssl.SSLConnectionSocketFactory.getDefaultHostnameVerifier;
+
/**
* Container for HTTP-related state that can be shared across incarnations of the transporter to optimize the
* communication with servers.
@@ -88,7 +94,7 @@ final class GlobalState
private static final String CONFIG_PROP_CACHE_STATE = "aether.connector.http.cacheState";
- private final ConcurrentMap<SslConfig, ClientConnectionManager> connectionManagers;
+ private final ConcurrentMap<SslConfig, HttpClientConnectionManager> connectionManagers;
private final ConcurrentMap<CompoundKey, Object> userTokens;
@@ -141,21 +147,21 @@ final class GlobalState
public void close()
{
- for ( Iterator<Map.Entry<SslConfig, ClientConnectionManager>> it = connectionManagers.entrySet().iterator();
+ for ( Iterator<Map.Entry<SslConfig, HttpClientConnectionManager>> it = connectionManagers.entrySet().iterator();
it.hasNext(); )
{
- ClientConnectionManager connMgr = it.next().getValue();
+ HttpClientConnectionManager connMgr = it.next().getValue();
it.remove();
connMgr.shutdown();
}
}
- public ClientConnectionManager getConnectionManager( SslConfig config )
+ public HttpClientConnectionManager getConnectionManager( SslConfig config )
{
- ClientConnectionManager manager = connectionManagers.get( config );
+ HttpClientConnectionManager manager = connectionManagers.get( config );
if ( manager == null )
{
- ClientConnectionManager connMgr = newConnectionManager( config );
+ HttpClientConnectionManager connMgr = newConnectionManager( config );
manager = connectionManagers.putIfAbsent( config, connMgr );
if ( manager != null )
{
@@ -169,14 +175,29 @@ final class GlobalState
return manager;
}
- @SuppressWarnings( "checkstyle:magicnumber" )
- public static ClientConnectionManager newConnectionManager( SslConfig sslConfig )
+ public static HttpClientConnectionManager newConnectionManager( SslConfig sslConfig )
{
- SchemeRegistry schemeReg = new SchemeRegistry();
- schemeReg.register( new Scheme( "http", 80, new PlainSocketFactory() ) );
- schemeReg.register( new Scheme( "https", 443, new SslSocketFactory( sslConfig ) ) );
+ RegistryBuilder<ConnectionSocketFactory> registryBuilder = RegistryBuilder.<ConnectionSocketFactory>create()
+ .register( "http", PlainConnectionSocketFactory.getSocketFactory() );
+
+ if ( sslConfig == null )
+ {
+ registryBuilder.register( "https", SSLConnectionSocketFactory.getSocketFactory() );
+ // check also SSLConnectionSocketFactory.getSystemSocketFactory()
+ }
+ else
+ {
+ SSLSocketFactory sslSocketFactory = ( sslConfig.context != null ) ?
+ sslConfig.context.getSocketFactory() : (SSLSocketFactory) SSLSocketFactory.getDefault();
+
+ HostnameVerifier hostnameVerifier = ( sslConfig.verifier != null ) ?
+ sslConfig.verifier : getDefaultHostnameVerifier();
+
+ registryBuilder.register( "https", new SSLConnectionSocketFactory(
+ sslSocketFactory, sslConfig.protocols, sslConfig.cipherSuites, hostnameVerifier ) );
+ }
- PoolingClientConnectionManager connMgr = new PoolingClientConnectionManager( schemeReg );
+ PoolingHttpClientConnectionManager connMgr = new PoolingHttpClientConnectionManager( registryBuilder.build() );
connMgr.setMaxTotal( 100 );
connMgr.setDefaultMaxPerRoute( 50 );
return connMgr;
diff --git a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporter.java b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporter.java
index 15fa36a..3a8632b 100644
--- a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporter.java
+++ b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporter.java
@@ -25,6 +25,7 @@ import java.io.InterruptedIOException;
import java.io.OutputStream;
import java.net.URI;
import java.net.URISyntaxException;
+import java.nio.charset.Charset;
import java.util.Collections;
import java.util.Date;
import java.util.List;
@@ -39,11 +40,13 @@ import org.apache.http.HttpHeaders;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
+import org.apache.http.auth.AuthSchemeProvider;
import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.params.AuthParams;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.HttpClient;
import org.apache.http.client.HttpResponseException;
+import org.apache.http.client.config.AuthSchemes;
+import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpHead;
import org.apache.http.client.methods.HttpOptions;
@@ -51,14 +54,17 @@ import org.apache.http.client.methods.HttpPut;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.utils.DateUtils;
import org.apache.http.client.utils.URIUtils;
-import org.apache.http.conn.params.ConnRouteParams;
+import org.apache.http.config.Lookup;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.config.SocketConfig;
import org.apache.http.entity.AbstractHttpEntity;
import org.apache.http.entity.ByteArrayEntity;
-import org.apache.http.impl.client.DecompressingHttpClient;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.params.HttpConnectionParams;
-import org.apache.http.params.HttpParams;
-import org.apache.http.params.HttpProtocolParams;
+import org.apache.http.impl.auth.BasicSchemeFactory;
+import org.apache.http.impl.auth.DigestSchemeFactory;
+import org.apache.http.impl.auth.KerberosSchemeFactory;
+import org.apache.http.impl.auth.NTLMSchemeFactory;
+import org.apache.http.impl.auth.SPNegoSchemeFactory;
+import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.eclipse.aether.ConfigurationProperties;
import org.eclipse.aether.RepositorySystemSession;
@@ -140,13 +146,46 @@ final class HttpTransporter
ConfigUtils.getMap( session, Collections.emptyMap(), ConfigurationProperties.HTTP_HEADERS + "."
+ repository.getId(), ConfigurationProperties.HTTP_HEADERS );
- DefaultHttpClient client = new DefaultHttpClient( state.getConnectionManager() );
-
- configureClient( client.getParams(), session, repository, proxy );
-
- client.setCredentialsProvider( toCredentialsProvider( server, repoAuthContext, proxy, proxyAuthContext ) );
-
- this.client = new DecompressingHttpClient( client );
+ String credentialCharset = ConfigUtils.getString( session,
+ ConfigurationProperties.DEFAULT_HTTP_CREDENTIAL_ENCODING,
+ ConfigurationProperties.HTTP_CREDENTIAL_ENCODING + "." + repository.getId(),
+ ConfigurationProperties.HTTP_CREDENTIAL_ENCODING );
+
+ Lookup<AuthSchemeProvider> authSchemeRegistry = RegistryBuilder.<AuthSchemeProvider>create()
+ .register( AuthSchemes.BASIC, new BasicSchemeFactory( Charset.forName( credentialCharset ) ) )
+ .register( AuthSchemes.DIGEST, new DigestSchemeFactory(Charset.forName( credentialCharset ) ) )
+ .register( AuthSchemes.NTLM, new NTLMSchemeFactory() )
+ .register( AuthSchemes.SPNEGO, new SPNegoSchemeFactory() )
+ .register( AuthSchemes.KERBEROS, new KerberosSchemeFactory() )
+ .build();
+
+ SocketConfig socketConfig = SocketConfig.custom()
+ .setSoTimeout( ConfigUtils.getInteger( session, ConfigurationProperties.DEFAULT_REQUEST_TIMEOUT,
+ ConfigurationProperties.REQUEST_TIMEOUT + "." + repository.getId(),
+ ConfigurationProperties.REQUEST_TIMEOUT ) )
+ .build();
+
+ int timeout =
+ ConfigUtils.getInteger( session, ConfigurationProperties.DEFAULT_CONNECT_TIMEOUT,
+ ConfigurationProperties.CONNECT_TIMEOUT + "." + repository.getId(),
+ ConfigurationProperties.CONNECT_TIMEOUT );
+
+ RequestConfig requestConfig = RequestConfig.custom()
+ .setConnectTimeout( timeout )
+ .setConnectionRequestTimeout( timeout )
+ .setSocketTimeout( socketConfig.getSoTimeout() ).build();
+
+ HttpClientBuilder clientBuilder = HttpClientBuilder.create()
+ .setUserAgent( ConfigUtils.getString( session, ConfigurationProperties.DEFAULT_USER_AGENT,
+ ConfigurationProperties.USER_AGENT ) )
+ .setDefaultSocketConfig( socketConfig )
+ .setDefaultRequestConfig( requestConfig )
+ .setDefaultAuthSchemeRegistry( authSchemeRegistry )
+ .setConnectionManager( state.getConnectionManager() )
+ .setDefaultCredentialsProvider( toCredentialsProvider( server, repoAuthContext, proxy, proxyAuthContext ) )
+ .setProxy( proxy );
+
+ this.client = clientBuilder.build();
}
private static HttpHost toHost( Proxy proxy )
@@ -159,27 +198,6 @@ final class HttpTransporter
return host;
}
- private static void configureClient( HttpParams params, RepositorySystemSession session,
- RemoteRepository repository, HttpHost proxy )
- {
- AuthParams.setCredentialCharset( params, ConfigUtils.getString( session,
- ConfigurationProperties.DEFAULT_HTTP_CREDENTIAL_ENCODING,
- ConfigurationProperties.HTTP_CREDENTIAL_ENCODING + "." + repository.getId(),
- ConfigurationProperties.HTTP_CREDENTIAL_ENCODING ) );
- ConnRouteParams.setDefaultProxy( params, proxy );
- HttpConnectionParams.setConnectionTimeout( params, ConfigUtils.getInteger( session,
- ConfigurationProperties.DEFAULT_CONNECT_TIMEOUT,
- ConfigurationProperties.CONNECT_TIMEOUT + "." + repository.getId(),
- ConfigurationProperties.CONNECT_TIMEOUT ) );
- HttpConnectionParams.setSoTimeout( params, ConfigUtils.getInteger( session,
- ConfigurationProperties.DEFAULT_REQUEST_TIMEOUT,
- ConfigurationProperties.REQUEST_TIMEOUT + "." + repository.getId(),
- ConfigurationProperties.REQUEST_TIMEOUT ) );
- HttpProtocolParams.setUserAgent( params, ConfigUtils.getString( session,
- ConfigurationProperties.DEFAULT_USER_AGENT,
- ConfigurationProperties.USER_AGENT ) );
- }
-
private static CredentialsProvider toCredentialsProvider( HttpHost server, AuthenticationContext serverAuthCtx,
HttpHost proxy, AuthenticationContext proxyAuthCtx )
{
diff --git a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/LocalState.java b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/LocalState.java
index ebc5bd5..b8a791f 100644
--- a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/LocalState.java
+++ b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/LocalState.java
@@ -25,7 +25,7 @@ import java.util.concurrent.ConcurrentMap;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScheme;
-import org.apache.http.conn.ClientConnectionManager;
+import org.apache.http.conn.HttpClientConnectionManager;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.repository.RemoteRepository;
import org.eclipse.aether.transport.http.GlobalState.CompoundKey;
@@ -40,7 +40,7 @@ final class LocalState
private final GlobalState global;
- private final ClientConnectionManager connMgr;
+ private final HttpClientConnectionManager connMgr;
private final CompoundKey userTokenKey;
@@ -74,7 +74,7 @@ final class LocalState
}
}
- public ClientConnectionManager getConnectionManager()
+ public HttpClientConnectionManager getConnectionManager()
{
return connMgr;
}
diff --git a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/SharingHttpContext.java b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/SharingHttpContext.java
index 33b8b2f..e47b3d1 100644
--- a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/SharingHttpContext.java
+++ b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/SharingHttpContext.java
@@ -21,7 +21,7 @@ package org.eclipse.aether.transport.http;
import java.io.Closeable;
-import org.apache.http.client.protocol.ClientContext;
+import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.protocol.BasicHttpContext;
/**
@@ -43,13 +43,13 @@ final class SharingHttpContext
{
this.state = state;
authCache = new SharingAuthCache( state );
- super.setAttribute( ClientContext.AUTH_CACHE, authCache );
+ super.setAttribute( HttpClientContext.AUTH_CACHE, authCache );
}
@Override
public Object getAttribute( String id )
{
- if ( ClientContext.USER_TOKEN.equals( id ) )
+ if ( HttpClientContext.USER_TOKEN.equals( id ) )
{
return state.getUserToken();
}
@@ -59,7 +59,7 @@ final class SharingHttpContext
@Override
public void setAttribute( String id, Object obj )
{
- if ( ClientContext.USER_TOKEN.equals( id ) )
+ if ( HttpClientContext.USER_TOKEN.equals( id ) )
{
state.setUserToken( obj );
}
@@ -72,7 +72,7 @@ final class SharingHttpContext
@Override
public Object removeAttribute( String id )
{
- if ( ClientContext.USER_TOKEN.equals( id ) )
+ if ( HttpClientContext.USER_TOKEN.equals( id ) )
{
state.setUserToken( null );
return null;
diff --git a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/SslSocketFactory.java b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/SslSocketFactory.java
deleted file mode 100644
index 4426da4..0000000
--- a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/SslSocketFactory.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.IOException;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSocket;
-import javax.net.ssl.SSLSocketFactory;
-
-import org.apache.http.conn.ssl.X509HostnameVerifier;
-
-/**
- * Specialized SSL socket factory to more closely resemble the JRE's HttpsClient and respect well-known SSL-related
- * configuration properties.
- *
- * @see <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#Customization">JSSE
- * Reference Guide, Customization</a>
- */
-final class SslSocketFactory
- extends org.apache.http.conn.ssl.SSLSocketFactory
-{
-
- private final String[] cipherSuites;
-
- private final String[] protocols;
-
- SslSocketFactory( SslConfig config )
- {
- this( getSocketFactory( config.context ), getHostnameVerifier( config.verifier ), config.cipherSuites,
- config.protocols );
- }
-
- private static SSLSocketFactory getSocketFactory( SSLContext context )
- {
- return ( context != null ) ? context.getSocketFactory() : (SSLSocketFactory) SSLSocketFactory.getDefault();
- }
-
- private static X509HostnameVerifier getHostnameVerifier( HostnameVerifier verifier )
- {
- return ( verifier != null ) ? X509HostnameVerifierAdapter.adapt( verifier )
- : org.apache.http.conn.ssl.SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER;
- }
-
- private SslSocketFactory( SSLSocketFactory socketfactory, X509HostnameVerifier hostnameVerifier,
- String[] cipherSuites, String[] protocols )
- {
- super( socketfactory, hostnameVerifier );
-
- this.cipherSuites = cipherSuites;
- this.protocols = protocols;
- }
-
- @Override
- protected void prepareSocket( SSLSocket socket )
- throws IOException
- {
- super.prepareSocket( socket );
- if ( cipherSuites != null )
- {
- socket.setEnabledCipherSuites( cipherSuites );
- }
- if ( protocols != null )
- {
- socket.setEnabledProtocols( protocols );
- }
- }
-
-}
diff --git a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/X509HostnameVerifierAdapter.java b/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/X509HostnameVerifierAdapter.java
deleted file mode 100644
index ac0825b..0000000
--- a/maven-resolver-transport-http/src/main/java/org/eclipse/aether/transport/http/X509HostnameVerifierAdapter.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.eclipse.aether.transport.http;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.IOException;
-import java.security.cert.X509Certificate;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLException;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.SSLSocket;
-
-import org.apache.http.conn.ssl.X509HostnameVerifier;
-
-/**
- * Makes a standard hostname verifier compatible with Apache HttpClient's API.
- */
-final class X509HostnameVerifierAdapter
- implements X509HostnameVerifier
-{
-
- private final HostnameVerifier verifier;
-
- public static X509HostnameVerifier adapt( HostnameVerifier verifier )
- {
- if ( verifier instanceof X509HostnameVerifier )
- {
- return (X509HostnameVerifier) verifier;
- }
- return new X509HostnameVerifierAdapter( verifier );
- }
-
- private X509HostnameVerifierAdapter( HostnameVerifier verifier )
- {
- this.verifier = verifier;
- }
-
- public boolean verify( String hostname, SSLSession session )
- {
- return verifier.verify( hostname, session );
- }
-
- public void verify( String host, SSLSocket socket )
- throws IOException
- {
- if ( !verify( host, socket.getSession() ) )
- {
- throw new SSLException( "<" + host + "> does not pass hostname verification" );
- }
- }
-
- public void verify( String host, X509Certificate cert )
- {
- throw new UnsupportedOperationException();
- }
-
- public void verify( String host, String[] cns, String[] subjectAlts )
- {
- throw new UnsupportedOperationException();
- }
-
-}
diff --git a/maven-resolver-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpServer.java b/maven-resolver-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpServer.java
index ee5dbed..4539f79 100644
--- a/maven-resolver-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpServer.java
+++ b/maven-resolver-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpServer.java
@@ -114,7 +114,7 @@ public class HttpServer
private String proxyPassword;
- private List<LogEntry> logEntries = Collections.synchronizedList( new ArrayList<LogEntry>() );
+ private final List<LogEntry> logEntries = Collections.synchronizedList( new ArrayList<LogEntry>() );
public String getHost()
{
diff --git a/maven-resolver-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpTransporterTest.java b/maven-resolver-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpTransporterTest.java
index 6bec999..90f82f0 100644
--- a/maven-resolver-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpTransporterTest.java
+++ b/maven-resolver-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpTransporterTest.java
@@ -991,10 +991,9 @@ public class HttpTransporterTest
throws Exception
{
session.setConfigProperty( ConfigurationProperties.REQUEST_TIMEOUT, 100 );
- ServerSocket server = new ServerSocket( 0 );
- newTransporter( "http://localhost:" + server.getLocalPort() );
- try
+ try ( ServerSocket server = new ServerSocket( 0 ) )
{
+ newTransporter( "http://localhost:" + server.getLocalPort() );
try
{
transporter.get( new GetTask( URI.create( "repo/file.txt" ) ) );
@@ -1005,10 +1004,6 @@ public class HttpTransporterTest
assertEquals( Transporter.ERROR_OTHER, transporter.classify( e ) );
}
}
- finally
- {
- server.close();
- }
}
@Test