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 2017/07/04 12:35:56 UTC

[4/8] maven-wagon git commit: [WAGON-488] upgrade upgrade webdav wagon to a more recent httpclient version

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/8fadff84/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
deleted file mode 100755
index 405f55e..0000000
--- a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagon.java
+++ /dev/null
@@ -1,1148 +0,0 @@
-package org.apache.maven.wagon.providers.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 org.apache.http.Header;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpException;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.ChallengeState;
-import org.apache.http.auth.Credentials;
-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;
-import org.apache.http.client.methods.HttpHead;
-import org.apache.http.client.methods.HttpPut;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.client.protocol.HttpClientContext;
-import org.apache.http.client.utils.DateUtils;
-import org.apache.http.config.Registry;
-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.conn.ssl.SSLContextBuilder;
-import org.apache.http.conn.ssl.SSLInitializationException;
-import org.apache.http.entity.AbstractHttpEntity;
-import org.apache.http.impl.auth.BasicScheme;
-import org.apache.http.impl.client.BasicAuthCache;
-import org.apache.http.impl.client.BasicCredentialsProvider;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
-import org.apache.http.message.BasicHeader;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.util.EntityUtils;
-import org.apache.maven.wagon.InputData;
-import org.apache.maven.wagon.OutputData;
-import org.apache.maven.wagon.PathUtils;
-import org.apache.maven.wagon.ResourceDoesNotExistException;
-import org.apache.maven.wagon.StreamWagon;
-import org.apache.maven.wagon.TransferFailedException;
-import org.apache.maven.wagon.Wagon;
-import org.apache.maven.wagon.authorization.AuthorizationException;
-import org.apache.maven.wagon.events.TransferEvent;
-import org.apache.maven.wagon.proxy.ProxyInfo;
-import org.apache.maven.wagon.repository.Repository;
-import org.apache.maven.wagon.resource.Resource;
-import org.apache.maven.wagon.shared.http.EncodingUtil;
-import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.StringUtils;
-
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLContext;
-import java.io.ByteArrayInputStream;
-import java.io.Closeable;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Properties;
-import java.util.TimeZone;
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author <a href="michal.maczka@dimatics.com">Michal Maczka</a>
- * @author <a href="mailto:james@atlassian.com">James William Dumay</a>
- */
-public abstract class AbstractHttpClientWagon
-    extends StreamWagon
-{
-    private final class RequestEntityImplementation
-        extends AbstractHttpEntity
-    {
-
-        private static final int BUFFER_SIZE = 2048;
-
-        private final Resource resource;
-
-        private final Wagon wagon;
-
-        private ByteBuffer byteBuffer;
-
-        private File source;
-
-        private long length = -1;
-
-        private RequestEntityImplementation( final InputStream stream, final Resource resource, final Wagon wagon,
-                                             final File source )
-            throws TransferFailedException
-        {
-            if ( source != null )
-            {
-                this.source = source;
-            }
-            else
-            {
-                try
-                {
-                    byte[] bytes = IOUtil.toByteArray( stream );
-                    byteBuffer = ByteBuffer.allocate( bytes.length );
-                    byteBuffer.put( bytes );
-                    stream.close();
-                }
-                catch ( IOException e )
-                {
-                    throw new TransferFailedException( e.getMessage(), e );
-                }
-                finally
-                {
-                    IOUtil.close( stream );
-                }
-            }
-            this.resource = resource;
-            this.length = resource == null ? -1 : resource.getContentLength();
-
-            this.wagon = wagon;
-        }
-
-        public long getContentLength()
-        {
-            return length;
-        }
-
-        public InputStream getContent()
-            throws IOException, IllegalStateException
-        {
-            if ( this.source != null )
-            {
-                return new FileInputStream( this.source );
-            }
-            return new ByteArrayInputStream( this.byteBuffer.array() );
-        }
-
-        public boolean isRepeatable()
-        {
-            return true;
-        }
-
-        public void writeTo( final OutputStream outputStream )
-            throws IOException
-        {
-            if ( outputStream == null )
-            {
-                throw new NullPointerException( "outputStream cannot be null" );
-            }
-            TransferEvent transferEvent =
-                new TransferEvent( wagon, resource, TransferEvent.TRANSFER_PROGRESS, TransferEvent.REQUEST_PUT );
-            transferEvent.setTimestamp( System.currentTimeMillis() );
-            InputStream instream = ( this.source != null )
-                ? new FileInputStream( this.source )
-                : new ByteArrayInputStream( this.byteBuffer.array() );
-            try
-            {
-                byte[] buffer = new byte[BUFFER_SIZE];
-                int l;
-                if ( this.length < 0 )
-                {
-                    // until EOF
-                    while ( ( l = instream.read( buffer ) ) != -1 )
-                    {
-                        fireTransferProgress( transferEvent, buffer, -1 );
-                        outputStream.write( buffer, 0, l );
-                    }
-                }
-                else
-                {
-                    // no need to consume more than length
-                    long remaining = this.length;
-                    while ( remaining > 0 )
-                    {
-                        l = instream.read( buffer, 0, (int) Math.min( BUFFER_SIZE, remaining ) );
-                        if ( l == -1 )
-                        {
-                            break;
-                        }
-                        fireTransferProgress( transferEvent, buffer, (int) Math.min( BUFFER_SIZE, remaining ) );
-                        outputStream.write( buffer, 0, l );
-                        remaining -= l;
-                    }
-                }
-            }
-            finally
-            {
-                instream.close();
-            }
-        }
-
-        public boolean isStreaming()
-        {
-            return true;
-        }
-    }
-
-    private static final TimeZone GMT_TIME_ZONE = TimeZone.getTimeZone( "GMT" );
-
-    /**
-     * use http(s) connection pool mechanism.
-     * <b>enabled by default</b>
-     */
-    private static boolean persistentPool =
-        Boolean.valueOf( System.getProperty( "maven.wagon.http.pool", "true" ) );
-
-    /**
-     * skip failure on certificate validity checks.
-     * <b>disabled by default</b>
-     */
-    private static final boolean SSL_INSECURE =
-        Boolean.valueOf( System.getProperty( "maven.wagon.http.ssl.insecure", "false" ) );
-
-    /**
-     * if using sslInsecure, certificate date issues will be ignored
-     * <b>disabled by default</b>
-     */
-    private static final boolean IGNORE_SSL_VALIDITY_DATES =
-        Boolean.valueOf( System.getProperty( "maven.wagon.http.ssl.ignore.validity.dates", "false" ) );
-
-    /**
-     * If enabled, ssl hostname verifier does not check hostname. Disable this will use a browser compat hostname
-     * verifier <b>disabled by default</b>
-     */
-    private static final boolean SSL_ALLOW_ALL =
-        Boolean.valueOf( System.getProperty( "maven.wagon.http.ssl.allowall", "false" ) );
-
-
-    /**
-     * Maximum concurrent connections per distinct route.
-     * <b>20 by default</b>
-     */
-    private static final int MAX_CONN_PER_ROUTE =
-        Integer.parseInt( System.getProperty( "maven.wagon.httpconnectionManager.maxPerRoute", "20" ) );
-
-    /**
-     * Maximum concurrent connections in total.
-     * <b>40 by default</b>
-     */
-    private static final int MAX_CONN_TOTAL =
-        Integer.parseInt( System.getProperty( "maven.wagon.httpconnectionManager.maxTotal", "40" ) );
-
-    /**
-     * Internal connection manager
-     */
-    private static HttpClientConnectionManager httpClientConnectionManager = createConnManager();
-
-
-    /**
-     * See RFC6585
-     */
-    protected static final int SC_TOO_MANY_REQUESTS = 429;
-
-    /**
-     * For exponential backoff.
-     */
-
-    /**
-     * Initial seconds to back off when a HTTP 429 received.
-     * Subsequent 429 responses result in exponental backoff.
-     * <b>5 by default</b>
-     *
-     * @since 2.7
-     */
-    private int initialBackoffSeconds =
-        Integer.parseInt( System.getProperty( "maven.wagon.httpconnectionManager.backoffSeconds", "5" ) );
-
-    /**
-     * The maximum amount of time we want to back off in the case of
-     * repeated HTTP 429 response codes.
-     *
-     * @since 2.7
-     */
-    private static final int MAX_BACKOFF_WAIT_SECONDS =
-        Integer.parseInt( System.getProperty( "maven.wagon.httpconnectionManager.maxBackoffSeconds", "180" ) );
-
-
-    protected int backoff( int wait, String url )
-        throws InterruptedException, TransferFailedException
-    {
-        TimeUnit.SECONDS.sleep( wait );
-        int nextWait = wait * 2;
-        if ( nextWait >= getMaxBackoffWaitSeconds() )
-        {
-            throw new TransferFailedException(
-                "Waited too long to access: " + url + ". Return code is: " + SC_TOO_MANY_REQUESTS );
-        }
-        return nextWait;
-    }
-
-    @SuppressWarnings( "checkstyle:linelength" )
-    private static PoolingHttpClientConnectionManager createConnManager()
-    {
-
-        String sslProtocolsStr = System.getProperty( "https.protocols" );
-        String cipherSuitesStr = System.getProperty( "https.cipherSuites" );
-        String[] sslProtocols = sslProtocolsStr != null ? sslProtocolsStr.split( " *, *" ) : null;
-        String[] cipherSuites = cipherSuitesStr != null ? cipherSuitesStr.split( " *, *" ) : null;
-
-        SSLConnectionSocketFactory sslConnectionSocketFactory;
-        if ( SSL_INSECURE )
-        {
-            try
-            {
-                SSLContext sslContext = new SSLContextBuilder().useSSL().loadTrustMaterial( null,
-                                                                                            new RelaxedTrustStrategy(
-                                                                                                IGNORE_SSL_VALIDITY_DATES ) ).build();
-                sslConnectionSocketFactory = new SSLConnectionSocketFactory( sslContext, sslProtocols, cipherSuites,
-                                                                             SSL_ALLOW_ALL
-                                                                                 ? SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER
-                                                                                 : SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER );
-            }
-            catch ( Exception ex )
-            {
-                throw new SSLInitializationException( ex.getMessage(), ex );
-            }
-        }
-        else
-        {
-            sslConnectionSocketFactory =
-                new SSLConnectionSocketFactory( HttpsURLConnection.getDefaultSSLSocketFactory(), sslProtocols,
-                                                cipherSuites,
-                                                SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER );
-        }
-
-        Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create().register( "http",
-                                                                                                                 PlainConnectionSocketFactory.INSTANCE ).register(
-            "https", sslConnectionSocketFactory ).build();
-
-        PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager( registry );
-        if ( persistentPool )
-        {
-            connManager.setDefaultMaxPerRoute( MAX_CONN_PER_ROUTE );
-            connManager.setMaxTotal( MAX_CONN_TOTAL );
-        }
-        else
-        {
-            connManager.setMaxTotal( 1 );
-        }
-        return connManager;
-    }
-
-    private static CloseableHttpClient httpClient = createClient();
-
-    private static CloseableHttpClient createClient()
-    {
-        return HttpClientBuilder.create() //
-            .useSystemProperties() //
-            .disableConnectionState() //
-            .setConnectionManager( httpClientConnectionManager ) //
-            .build();
-    }
-
-    private CredentialsProvider credentialsProvider;
-
-    private AuthCache authCache;
-
-    private Closeable closeable;
-
-    /**
-     * @plexus.configuration
-     * @deprecated Use httpConfiguration instead.
-     */
-    private Properties httpHeaders;
-
-    /**
-     * @since 1.0-beta-6
-     */
-    private HttpConfiguration httpConfiguration;
-
-    /**
-     * Basic auth scope overrides
-     * @since 2.8
-     */
-    private BasicAuthScope basicAuth;
-
-    /**
-     * Proxy basic auth scope overrides
-     * @since 2.8
-     */
-    private BasicAuthScope proxyAuth;
-
-    public void openConnectionInternal()
-    {
-        repository.setUrl( getURL( repository ) );
-
-        credentialsProvider = new BasicCredentialsProvider();
-        authCache = new BasicAuthCache();
-
-        if ( authenticationInfo != null )
-        {
-
-            String username = authenticationInfo.getUserName();
-            String password = authenticationInfo.getPassword();
-
-            if ( StringUtils.isNotEmpty( username ) && StringUtils.isNotEmpty( password ) )
-            {
-                Credentials creds = new UsernamePasswordCredentials( username, password );
-
-                String host = getRepository().getHost();
-                int port = getRepository().getPort();
-
-                credentialsProvider.setCredentials( getBasicAuthScope().getScope( host, port ), creds );
-            }
-        }
-
-        ProxyInfo proxyInfo = getProxyInfo( getRepository().getProtocol(), getRepository().getHost() );
-        if ( proxyInfo != null )
-        {
-            String proxyUsername = proxyInfo.getUserName();
-            String proxyPassword = proxyInfo.getPassword();
-            String proxyHost = proxyInfo.getHost();
-            String proxyNtlmHost = proxyInfo.getNtlmHost();
-            String proxyNtlmDomain = proxyInfo.getNtlmDomain();
-            if ( proxyHost != null )
-            {
-                if ( proxyUsername != null && proxyPassword != null )
-                {
-                    Credentials creds;
-                    if ( proxyNtlmHost != null || proxyNtlmDomain != null )
-                    {
-                        creds = new NTCredentials( proxyUsername, proxyPassword, proxyNtlmHost, proxyNtlmDomain );
-                    }
-                    else
-                    {
-                        creds = new UsernamePasswordCredentials( proxyUsername, proxyPassword );
-                    }
-
-                    int proxyPort = proxyInfo.getPort();
-
-                    AuthScope authScope = getProxyBasicAuthScope().getScope( proxyHost, proxyPort );
-                    credentialsProvider.setCredentials( authScope, creds );
-                }
-            }
-        }
-    }
-
-    public void closeConnection()
-    {
-        if ( !persistentPool )
-        {
-            httpClientConnectionManager.closeIdleConnections( 0, TimeUnit.MILLISECONDS );
-        }
-
-        if ( authCache != null )
-        {
-            authCache.clear();
-            authCache = null;
-        }
-
-        if ( credentialsProvider != null )
-        {
-            credentialsProvider.clear();
-            credentialsProvider = null;
-        }
-    }
-
-    public static void setPersistentPool( boolean persistentPool )
-    {
-        persistentPool = persistentPool;
-    }
-
-    public static void setPoolingHttpClientConnectionManager(
-        PoolingHttpClientConnectionManager poolingHttpClientConnectionManager )
-    {
-        httpClientConnectionManager = poolingHttpClientConnectionManager;
-        httpClient = createClient();
-    }
-
-    public void put( File source, String resourceName )
-        throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
-    {
-        Resource resource = new Resource( resourceName );
-
-        firePutInitiated( resource, source );
-
-        resource.setContentLength( source.length() );
-
-        resource.setLastModified( source.lastModified() );
-
-        put( null, resource, source );
-    }
-
-    public void putFromStream( final InputStream stream, String destination, long contentLength, long lastModified )
-        throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
-    {
-        Resource resource = new Resource( destination );
-
-        firePutInitiated( resource, null );
-
-        resource.setContentLength( contentLength );
-
-        resource.setLastModified( lastModified );
-
-        put( stream, resource, null );
-    }
-
-    private void put( final InputStream stream, Resource resource, File source )
-        throws TransferFailedException, AuthorizationException, ResourceDoesNotExistException
-    {
-        put( resource, source, new RequestEntityImplementation( stream, resource, this, source ) );
-    }
-
-    private void put( Resource resource, File source, HttpEntity httpEntity )
-        throws TransferFailedException, AuthorizationException, ResourceDoesNotExistException
-    {
-        put( resource, source, httpEntity, buildUrl( resource ) );
-    }
-
-    /**
-     * Builds a complete URL string from the repository URL and the relative path of the resource passed.
-     *
-     * @param resource the resource to extract the relative path from.
-     * @return the complete URL
-     */
-    private String buildUrl( Resource resource )
-    {
-        return EncodingUtil.encodeURLToString( getRepository().getUrl(), resource.getName() );
-    }
-
-
-    private void put( Resource resource, File source, HttpEntity httpEntity, String url )
-        throws TransferFailedException, AuthorizationException, ResourceDoesNotExistException
-    {
-        put( getInitialBackoffSeconds(), resource, source, httpEntity, url );
-    }
-
-
-    private void put( int wait, Resource resource, File source, HttpEntity httpEntity, String url )
-        throws TransferFailedException, AuthorizationException, ResourceDoesNotExistException
-    {
-
-        //Parent directories need to be created before posting
-        try
-        {
-            mkdirs( PathUtils.dirname( resource.getName() ) );
-        }
-        catch ( HttpException he )
-        {
-            fireTransferError( resource, he, TransferEvent.REQUEST_PUT );
-        }
-        catch ( IOException e )
-        {
-            fireTransferError( resource, e, TransferEvent.REQUEST_PUT );
-        }
-
-        // preemptive for put
-        // TODO: is it a good idea, though? 'Expect-continue' handshake would serve much better
-
-        Repository repo = getRepository();
-        HttpHost targetHost = new HttpHost( repo.getHost(), repo.getPort(), repo.getProtocol() );
-        AuthScope targetScope = getBasicAuthScope().getScope( targetHost );
-
-        if ( credentialsProvider.getCredentials( targetScope ) != null )
-        {
-            BasicScheme targetAuth = new BasicScheme();
-            authCache.put( targetHost, targetAuth );
-        }
-
-        HttpPut putMethod = new HttpPut( url );
-
-        firePutStarted( resource, source );
-
-        try
-        {
-            putMethod.setEntity( httpEntity );
-
-            CloseableHttpResponse response = execute( putMethod );
-            try
-            {
-                int statusCode = response.getStatusLine().getStatusCode();
-                String reasonPhrase = ", ReasonPhrase: " + response.getStatusLine().getReasonPhrase() + ".";
-                fireTransferDebug( url + " - Status code: " + statusCode + reasonPhrase );
-
-                // Check that we didn't run out of retries.
-                switch ( statusCode )
-                {
-                    // Success Codes
-                    case HttpStatus.SC_OK: // 200
-                    case HttpStatus.SC_CREATED: // 201
-                    case HttpStatus.SC_ACCEPTED: // 202
-                    case HttpStatus.SC_NO_CONTENT:  // 204
-                        break;
-                    // handle all redirect even if http specs says " the user agent MUST NOT automatically redirect
-                    // the request unless it can be confirmed by the user"
-                    case HttpStatus.SC_MOVED_PERMANENTLY: // 301
-                    case HttpStatus.SC_MOVED_TEMPORARILY: // 302
-                    case HttpStatus.SC_SEE_OTHER: // 303
-                        put( resource, source, httpEntity, calculateRelocatedUrl( response ) );
-                        return;
-                    case HttpStatus.SC_FORBIDDEN:
-                        fireSessionConnectionRefused();
-                        throw new AuthorizationException( "Access denied to: " + url + reasonPhrase );
-
-                    case HttpStatus.SC_NOT_FOUND:
-                        throw new ResourceDoesNotExistException( "File: " + url + " does not exist" + reasonPhrase );
-
-                    case SC_TOO_MANY_REQUESTS:
-                        put( backoff( wait, url ), resource, source, httpEntity, url );
-                        break;
-                    //add more entries here
-                    default:
-                        TransferFailedException e = new TransferFailedException(
-                            "Failed to transfer file: " + url + ". Return code is: " + statusCode + reasonPhrase );
-                        fireTransferError( resource, e, TransferEvent.REQUEST_PUT );
-                        throw e;
-                }
-
-                firePutCompleted( resource, source );
-
-                EntityUtils.consume( response.getEntity() );
-            }
-            finally
-            {
-                response.close();
-            }
-        }
-        catch ( IOException e )
-        {
-            fireTransferError( resource, e, TransferEvent.REQUEST_PUT );
-
-            throw new TransferFailedException( e.getMessage(), e );
-        }
-        catch ( HttpException e )
-        {
-            fireTransferError( resource, e, TransferEvent.REQUEST_PUT );
-
-            throw new TransferFailedException( e.getMessage(), e );
-        }
-        catch ( InterruptedException e )
-        {
-            fireTransferError( resource, e, TransferEvent.REQUEST_PUT );
-
-            throw new TransferFailedException( e.getMessage(), e );
-        }
-
-    }
-
-    protected String calculateRelocatedUrl( HttpResponse response )
-    {
-        Header locationHeader = response.getFirstHeader( "Location" );
-        String locationField = locationHeader.getValue();
-        // is it a relative Location or a full ?
-        return locationField.startsWith( "http" ) ? locationField : getURL( getRepository() ) + '/' + locationField;
-    }
-
-    protected void mkdirs( String dirname )
-        throws HttpException, IOException
-    {
-        // nothing to do
-    }
-
-    public boolean resourceExists( String resourceName )
-        throws TransferFailedException, AuthorizationException
-    {
-        return resourceExists( getInitialBackoffSeconds(), resourceName );
-    }
-
-
-    private boolean resourceExists( int wait, String resourceName )
-        throws TransferFailedException, AuthorizationException
-    {
-        String repositoryUrl = getRepository().getUrl();
-        String url = repositoryUrl + ( repositoryUrl.endsWith( "/" ) ? "" : "/" ) + resourceName;
-        HttpHead headMethod = new HttpHead( url );
-        try
-        {
-            CloseableHttpResponse response = execute( headMethod );
-            try
-            {
-                int statusCode = response.getStatusLine().getStatusCode();
-                String reasonPhrase = ", ReasonPhrase: " + response.getStatusLine().getReasonPhrase() + ".";
-                boolean result;
-                switch ( statusCode )
-                {
-                    case HttpStatus.SC_OK:
-                        result = true;
-                        break;
-                    case HttpStatus.SC_NOT_MODIFIED:
-                        result = true;
-                        break;
-                    case HttpStatus.SC_FORBIDDEN:
-                        throw new AuthorizationException( "Access denied to: " + url + reasonPhrase );
-
-                    case HttpStatus.SC_UNAUTHORIZED:
-                        throw new AuthorizationException( "Not authorized " + reasonPhrase );
-
-                    case HttpStatus.SC_PROXY_AUTHENTICATION_REQUIRED:
-                        throw new AuthorizationException( "Not authorized by proxy " + reasonPhrase );
-
-                    case HttpStatus.SC_NOT_FOUND:
-                        result = false;
-                        break;
-
-                    case SC_TOO_MANY_REQUESTS:
-                        return resourceExists( backoff( wait, resourceName ), resourceName );
-
-                    //add more entries here
-                    default:
-                        throw new TransferFailedException(
-                            "Failed to transfer file: " + url + ". Return code is: " + statusCode + reasonPhrase );
-                }
-
-                EntityUtils.consume( response.getEntity() );
-                return result;
-            }
-            finally
-            {
-                response.close();
-            }
-        }
-        catch ( IOException e )
-        {
-            throw new TransferFailedException( e.getMessage(), e );
-        }
-        catch ( HttpException e )
-        {
-            throw new TransferFailedException( e.getMessage(), e );
-        }
-        catch ( InterruptedException e )
-        {
-            throw new TransferFailedException( e.getMessage(), e );
-        }
-
-    }
-
-    protected CloseableHttpResponse execute( HttpUriRequest httpMethod )
-        throws HttpException, IOException
-    {
-        setHeaders( httpMethod );
-        String userAgent = getUserAgent( httpMethod );
-        if ( userAgent != null )
-        {
-            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 );
-
-        Repository repo = getRepository();
-        ProxyInfo proxyInfo = getProxyInfo( repo.getProtocol(), repo.getHost() );
-        if ( proxyInfo != null )
-        {
-            HttpHost proxy = new HttpHost( proxyInfo.getHost(), proxyInfo.getPort() );
-            requestConfigBuilder.setProxy( proxy );
-        }
-
-        HttpMethodConfiguration config =
-            httpConfiguration == null ? null : httpConfiguration.getMethodConfiguration( httpMethod );
-
-        if ( config != null )
-        {
-            ConfigurationUtils.copyConfig( config, requestConfigBuilder );
-        }
-        else
-        {
-            requestConfigBuilder.setSocketTimeout( getReadTimeout() );
-            if ( httpMethod instanceof HttpPut )
-            {
-                requestConfigBuilder.setExpectContinueEnabled( true );
-            }
-        }
-
-        if ( httpMethod instanceof HttpPut )
-        {
-            requestConfigBuilder.setRedirectsEnabled( false );
-        }
-
-        HttpClientContext localContext = HttpClientContext.create();
-        localContext.setCredentialsProvider( credentialsProvider );
-        localContext.setAuthCache( authCache );
-        localContext.setRequestConfig( requestConfigBuilder.build() );
-
-        if ( config != null && config.isUsePreemptive() )
-        {
-            HttpHost targetHost = new HttpHost( repo.getHost(), repo.getPort(), repo.getProtocol() );
-            AuthScope targetScope = getBasicAuthScope().getScope( targetHost );
-
-            if ( credentialsProvider.getCredentials( targetScope ) != null )
-            {
-                BasicScheme targetAuth = new BasicScheme();
-                authCache.put( targetHost, targetAuth );
-            }
-        }
-
-        if ( proxyInfo != null )
-        {
-            if ( proxyInfo.getHost() != null )
-            {
-                HttpHost proxyHost = new HttpHost( proxyInfo.getHost(), proxyInfo.getPort() );
-                AuthScope proxyScope = getProxyBasicAuthScope().getScope( proxyHost );
-
-                if ( credentialsProvider.getCredentials( proxyScope ) != null )
-                {
-                    /* This is extremely ugly because we need to set challengeState to PROXY, but
-                     * the constructor is deprecated. Alternatively, we could subclass BasicScheme
-                     * to ProxyBasicScheme and set the state internally in the constructor.
-                     */
-                    BasicScheme proxyAuth = new BasicScheme( ChallengeState.PROXY );
-                    authCache.put( proxyHost, proxyAuth );
-                }
-            }
-        }
-
-        return httpClient.execute( httpMethod, localContext );
-    }
-
-    protected void setHeaders( HttpUriRequest method )
-    {
-        HttpMethodConfiguration config =
-            httpConfiguration == null ? null : httpConfiguration.getMethodConfiguration( method );
-        if ( config == null || config.isUseDefaultHeaders() )
-        {
-            // TODO: merge with the other headers and have some better defaults, unify with lightweight headers
-            method.addHeader( "Cache-control", "no-cache" );
-            method.addHeader( "Cache-store", "no-store" );
-            method.addHeader( "Pragma", "no-cache" );
-            method.addHeader( "Expires", "0" );
-            method.addHeader( "Accept-Encoding", "gzip" );
-        }
-
-        if ( httpHeaders != null )
-        {
-            for ( Map.Entry<Object, Object> entry : httpHeaders.entrySet() )
-            {
-                method.setHeader( (String) entry.getKey(), (String) entry.getValue() );
-            }
-        }
-
-        Header[] headers = config == null ? null : config.asRequestHeaders();
-        if ( headers != null )
-        {
-            for ( Header header : headers )
-            {
-                method.setHeader( header );
-            }
-        }
-    }
-
-    protected String getUserAgent( HttpUriRequest method )
-    {
-        if ( httpHeaders != null )
-        {
-            String value = (String) httpHeaders.get( "User-Agent" );
-            if ( value != null )
-            {
-                return value;
-            }
-        }
-        HttpMethodConfiguration config =
-            httpConfiguration == null ? null : httpConfiguration.getMethodConfiguration( method );
-
-        if ( config != null )
-        {
-            return (String) config.getHeaders().get( "User-Agent" );
-        }
-        return null;
-    }
-
-    /**
-     * getUrl
-     * Implementors can override this to remove unwanted parts of the url such as role-hints
-     *
-     * @param repository
-     * @return
-     */
-    protected String getURL( Repository repository )
-    {
-        return repository.getUrl();
-    }
-
-    public HttpConfiguration getHttpConfiguration()
-    {
-        return httpConfiguration;
-    }
-
-    public void setHttpConfiguration( HttpConfiguration httpConfiguration )
-    {
-        this.httpConfiguration = httpConfiguration;
-    }
-
-    /**
-     * Get the override values for standard HttpClient AuthScope
-     *
-     * @return the basicAuth
-     */
-    public BasicAuthScope getBasicAuthScope()
-    {
-        if ( basicAuth == null )
-        {
-            basicAuth = new BasicAuthScope();
-        }
-        return basicAuth;
-    }
-
-    /**
-     * Set the override values for standard HttpClient AuthScope
-     *
-     * @param basicAuth the AuthScope to set
-     */
-    public void setBasicAuthScope( BasicAuthScope basicAuth )
-    {
-        this.basicAuth = basicAuth;
-    }
-
-    /**
-     * Get the override values for proxy HttpClient AuthScope
-     *
-     * @return the proxyAuth
-     */
-    public BasicAuthScope getProxyBasicAuthScope()
-    {
-        if ( proxyAuth == null )
-        {
-            proxyAuth = new BasicAuthScope();
-        }
-        return proxyAuth;
-    }
-
-    /**
-     * Set the override values for proxy HttpClient AuthScope
-     *
-     * @param proxyAuth the AuthScope to set
-     */
-    public void setProxyBasicAuthScope( BasicAuthScope proxyAuth )
-    {
-        this.proxyAuth = proxyAuth;
-    }
-
-    public void fillInputData( InputData inputData )
-        throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
-    {
-        fillInputData( getInitialBackoffSeconds(), inputData );
-    }
-
-    private void fillInputData( int wait, InputData inputData )
-        throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
-    {
-        Resource resource = inputData.getResource();
-
-        String repositoryUrl = getRepository().getUrl();
-        String url = repositoryUrl + ( repositoryUrl.endsWith( "/" ) ? "" : "/" ) + resource.getName();
-        HttpGet getMethod = new HttpGet( url );
-        long timestamp = resource.getLastModified();
-        if ( timestamp > 0 )
-        {
-            SimpleDateFormat fmt = new SimpleDateFormat( "EEE, dd-MMM-yy HH:mm:ss zzz", Locale.US );
-            fmt.setTimeZone( GMT_TIME_ZONE );
-            Header hdr = new BasicHeader( "If-Modified-Since", fmt.format( new Date( timestamp ) ) );
-            fireTransferDebug( "sending ==> " + hdr + "(" + timestamp + ")" );
-            getMethod.addHeader( hdr );
-        }
-
-        try
-        {
-            CloseableHttpResponse response = execute( getMethod );
-            closeable = response;
-            int statusCode = response.getStatusLine().getStatusCode();
-
-            String reasonPhrase = ", ReasonPhrase:" + response.getStatusLine().getReasonPhrase() + ".";
-
-            fireTransferDebug( url + " - Status code: " + statusCode + reasonPhrase );
-
-            switch ( statusCode )
-            {
-                case HttpStatus.SC_OK:
-                    break;
-
-                case HttpStatus.SC_NOT_MODIFIED:
-                    // return, leaving last modified set to original value so getIfNewer should return unmodified
-                    return;
-                case HttpStatus.SC_FORBIDDEN:
-                    fireSessionConnectionRefused();
-                    throw new AuthorizationException( "Access denied to: " + url + " " + reasonPhrase );
-
-                case HttpStatus.SC_UNAUTHORIZED:
-                    fireSessionConnectionRefused();
-                    throw new AuthorizationException( "Not authorized " + reasonPhrase );
-
-                case HttpStatus.SC_PROXY_AUTHENTICATION_REQUIRED:
-                    fireSessionConnectionRefused();
-                    throw new AuthorizationException( "Not authorized by proxy " + reasonPhrase );
-
-                case HttpStatus.SC_NOT_FOUND:
-                    throw new ResourceDoesNotExistException( "File: " + url + " " + reasonPhrase );
-
-                case SC_TOO_MANY_REQUESTS:
-                    fillInputData( backoff( wait, url ), inputData );
-                    break;
-
-                // add more entries here
-                default:
-                    cleanupGetTransfer( resource );
-                    TransferFailedException e = new TransferFailedException(
-                        "Failed to transfer file: " + url + ". Return code is: " + statusCode + " " + reasonPhrase );
-                    fireTransferError( resource, e, TransferEvent.REQUEST_GET );
-                    throw e;
-            }
-
-            Header contentLengthHeader = response.getFirstHeader( "Content-Length" );
-
-            if ( contentLengthHeader != null )
-            {
-                try
-                {
-                    long contentLength = Long.parseLong( contentLengthHeader.getValue() );
-
-                    resource.setContentLength( contentLength );
-                }
-                catch ( NumberFormatException e )
-                {
-                    fireTransferDebug(
-                        "error parsing content length header '" + contentLengthHeader.getValue() + "' " + e );
-                }
-            }
-
-            Header lastModifiedHeader = response.getFirstHeader( "Last-Modified" );
-            if ( lastModifiedHeader != null )
-            {
-                Date lastModified = DateUtils.parseDate( lastModifiedHeader.getValue() );
-                if ( lastModified != null )
-                {
-                    resource.setLastModified( lastModified.getTime() );
-                    fireTransferDebug( "last-modified = " + lastModifiedHeader.getValue() + " ("
-                        + lastModified.getTime() + ")" );
-                }
-            }
-
-            HttpEntity entity = response.getEntity();
-            if ( entity != null )
-            {
-                inputData.setInputStream( entity.getContent() );
-            }
-        }
-        catch ( IOException e )
-        {
-            fireTransferError( resource, e, TransferEvent.REQUEST_GET );
-
-            throw new TransferFailedException( e.getMessage(), e );
-        }
-        catch ( HttpException e )
-        {
-            fireTransferError( resource, e, TransferEvent.REQUEST_GET );
-
-            throw new TransferFailedException( e.getMessage(), e );
-        }
-        catch ( InterruptedException e )
-        {
-            fireTransferError( resource, e, TransferEvent.REQUEST_GET );
-
-            throw new TransferFailedException( e.getMessage(), e );
-        }
-
-    }
-
-    protected void cleanupGetTransfer( Resource resource )
-    {
-        if ( closeable != null )
-        {
-            try
-            {
-                closeable.close();
-            }
-            catch ( IOException ignore )
-            {
-                // ignore
-            }
-
-        }
-    }
-
-
-    @Override
-    public void putFromStream( InputStream stream, String destination )
-        throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
-    {
-        putFromStream( stream, destination, -1, -1 );
-    }
-
-    @Override
-    protected void putFromStream( InputStream stream, Resource resource )
-        throws TransferFailedException, AuthorizationException, ResourceDoesNotExistException
-    {
-        putFromStream( stream, resource.getName(), -1, -1 );
-    }
-
-    public Properties getHttpHeaders()
-    {
-        return httpHeaders;
-    }
-
-    public void setHttpHeaders( Properties httpHeaders )
-    {
-        this.httpHeaders = httpHeaders;
-    }
-
-    @Override
-    public void fillOutputData( OutputData outputData )
-        throws TransferFailedException
-    {
-        // no needed in this implementation but throw an Exception if used
-        throw new IllegalStateException( "this wagon http client must not use fillOutputData" );
-    }
-
-    public int getInitialBackoffSeconds()
-    {
-        return initialBackoffSeconds;
-    }
-
-    public void setInitialBackoffSeconds( int initialBackoffSeconds )
-    {
-        this.initialBackoffSeconds = initialBackoffSeconds;
-    }
-
-    public static int getMaxBackoffWaitSeconds()
-    {
-        return MAX_BACKOFF_WAIT_SECONDS;
-    }
-}

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/8fadff84/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/BasicAuthScope.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/BasicAuthScope.java b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/BasicAuthScope.java
deleted file mode 100644
index 5bcc2d3..0000000
--- a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/BasicAuthScope.java
+++ /dev/null
@@ -1,168 +0,0 @@
-package org.apache.maven.wagon.providers.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 org.apache.http.HttpHost;
-import org.apache.http.auth.AuthScope;
-
-/**
- * @since 2.8
- */
-public class BasicAuthScope
-{
-    private String host;
-
-    private String port;
-
-    private String realm;
-
-    /**
-     * @return the host
-     */
-    public String getHost()
-    {
-        return host;
-    }
-
-    /**
-     * @param host the host to set
-     */
-    public void setHost( String host )
-    {
-        this.host = host;
-    }
-
-    /**
-     * @return the realm
-     */
-    public String getRealm()
-    {
-        return realm;
-    }
-
-    /**
-     * @param realm the realm to set
-     */
-    public void setRealm( String realm )
-    {
-        this.realm = realm;
-    }
-
-    /**
-     * Create an authScope given the /repository/host and /repository/password
-     * and the /server/basicAuth or /server/proxyBasicAuth host, port and realm
-     * settings. The basicAuth setting should override the repository settings
-     * host and/or port if host, port or realm is set to "ANY".
-     * <p/>
-     * Realm can also be set to a specific string and will be set if
-     * /server/basicAuthentication/realm is non-null
-     *
-     * @param host The server setting's /server/host value
-     * @param port The server setting's /server/port value
-     * @return
-     */
-    public AuthScope getScope( String host, int port )
-    {
-        if ( getHost() != null //
-            && "ANY".compareTo( getHost() ) == 0 //
-            && getPort() != null //
-            && "ANY".compareTo( getPort() ) == 0 //
-            && getRealm() != null //
-            && "ANY".compareTo( getRealm() ) == 0 )
-        {
-            return AuthScope.ANY;
-        }
-        String scopeHost = host;
-        if ( getHost() != null )
-        {
-            if ( "ANY".compareTo( getHost() ) == 0 )
-            {
-                scopeHost = AuthScope.ANY_HOST;
-            }
-            else
-            {
-                scopeHost = getHost();
-            }
-        }
-
-        int scopePort = port > -1 ? port : AuthScope.ANY_PORT;
-        // -1 for server/port settings does this, but providing an override here
-        // in
-        // the BasicAuthScope config
-        if ( getPort() != null )
-        {
-            if ( "ANY".compareTo( getPort() ) == 0 )
-            {
-                scopePort = AuthScope.ANY_PORT;
-            }
-            else
-            {
-                scopePort = Integer.parseInt( getPort() );
-            }
-        }
-
-        String scopeRealm = AuthScope.ANY_REALM;
-        if ( getRealm() != null )
-        {
-            if ( "ANY".compareTo( getRealm() ) != 0 )
-            {
-                scopeRealm = getRealm();
-            }
-            else
-            {
-                scopeRealm = getRealm();
-            }
-        }
-
-        return new AuthScope( scopeHost, scopePort, scopeRealm );
-    }
-
-    /**
-     * @return the port
-     */
-    public String getPort()
-    {
-        return port;
-    }
-
-    /**
-     * @param port the port to set
-     */
-    public void setPort( String port )
-    {
-        this.port = port;
-    }
-
-    /**
-     * Given a HttpHost, return scope with overrides from appropriate basicAuth
-     * configuration.
-     * <p>
-     * Note: Protocol is ignored. AuthScope impl ignores it as well, but if that
-     * changed, there could be a problem.
-     * </p>
-     *
-     * @param targetHost
-     * @return
-     */
-    public AuthScope getScope( HttpHost targetHost )
-    {
-        return getScope( targetHost.getHostName(), targetHost.getPort() );
-    }
-}

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/8fadff84/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/ConfigurationUtils.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/ConfigurationUtils.java b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/ConfigurationUtils.java
deleted file mode 100755
index 4078c8c..0000000
--- a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/ConfigurationUtils.java
+++ /dev/null
@@ -1,230 +0,0 @@
-package org.apache.maven.wagon.providers.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 org.apache.http.Header;
-import org.apache.http.HttpHost;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.message.BasicHeader;
-import org.apache.maven.wagon.Wagon;
-
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.Arrays;
-import java.util.Map;
-import java.util.Properties;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-class ConfigurationUtils
-{
-
-    private static final String SO_TIMEOUT                  = "http.socket.timeout";
-    private static final String STALE_CONNECTION_CHECK      = "http.connection.stalecheck";
-    private static final String CONNECTION_TIMEOUT          = "http.connection.timeout";
-    private static final String USE_EXPECT_CONTINUE         = "http.protocol.expect-continue";
-    private static final String DEFAULT_PROXY               = "http.route.default-proxy";
-    private static final String LOCAL_ADDRESS               = "http.route.local-address";
-    private static final String PROXY_AUTH_PREF             = "http.auth.proxy-scheme-pref";
-    private static final String TARGET_AUTH_PREF            = "http.auth.target-scheme-pref";
-    private static final String HANDLE_AUTHENTICATION       = "http.protocol.handle-authentication";
-    private static final String ALLOW_CIRCULAR_REDIRECTS    = "http.protocol.allow-circular-redirects";
-    private static final String CONN_MANAGER_TIMEOUT        = "http.conn-manager.timeout";
-    private static final String COOKIE_POLICY               = "http.protocol.cookie-policy";
-    private static final String MAX_REDIRECTS               = "http.protocol.max-redirects";
-    private static final String HANDLE_REDIRECTS            = "http.protocol.handle-redirects";
-    private static final String REJECT_RELATIVE_REDIRECT    = "http.protocol.reject-relative-redirect";
-
-    private static final String COERCE_PATTERN = "%(\\w+),(.+)";
-
-    public static void copyConfig( HttpMethodConfiguration config, RequestConfig.Builder builder )
-    {
-        if ( config.getConnectionTimeout() > 0 )
-        {
-            builder.setConnectTimeout( config.getConnectionTimeout() );
-        }
-        if ( config.getReadTimeout() > 0 )
-        {
-            builder.setSocketTimeout( config.getReadTimeout() );
-        }
-        Properties params = config.getParams();
-        if ( params != null )
-        {
-
-            Pattern coercePattern = Pattern.compile( COERCE_PATTERN );
-            for ( Map.Entry entry : params.entrySet() )
-            {
-                String key = (String) entry.getKey();
-                String value = (String) entry.getValue();
-                Matcher matcher = coercePattern.matcher( value );
-                if ( matcher.matches() )
-                {
-                    value = matcher.group( 2 );
-                }
-
-                if ( key.equals( SO_TIMEOUT ) )
-                {
-                    builder.setSocketTimeout( Integer.parseInt( value ) );
-                }
-                else if ( key.equals( STALE_CONNECTION_CHECK ) )
-                {
-                    builder.setStaleConnectionCheckEnabled( Boolean.valueOf( value ) );
-                }
-                else if ( key.equals( CONNECTION_TIMEOUT ) )
-                {
-                    builder.setConnectTimeout( Integer.parseInt( value ) );
-                }
-                else if ( key.equals( USE_EXPECT_CONTINUE ) )
-                {
-                    builder.setExpectContinueEnabled( Boolean.valueOf( value ) );
-                }
-                else if ( key.equals( DEFAULT_PROXY ) )
-                {
-                    builder.setProxy( new HttpHost( value ) );
-                }
-                else if ( key.equals( LOCAL_ADDRESS ) )
-                {
-                    try
-                    {
-                        builder.setLocalAddress( InetAddress.getByName( value ) );
-                    }
-                    catch ( UnknownHostException ignore )
-                    {
-                        // ignore
-                    }
-                }
-                else if ( key.equals( PROXY_AUTH_PREF ) )
-                {
-                    builder.setProxyPreferredAuthSchemes( Arrays.asList( value.split( "," ) ) );
-                }
-                else if ( key.equals( TARGET_AUTH_PREF ) )
-                {
-                    builder.setTargetPreferredAuthSchemes( Arrays.asList( value.split( "," ) ) );
-                }
-                else if ( key.equals( HANDLE_AUTHENTICATION ) )
-                {
-                    builder.setAuthenticationEnabled( Boolean.valueOf( value ) );
-                }
-                else if ( key.equals( ALLOW_CIRCULAR_REDIRECTS ) )
-                {
-                    builder.setCircularRedirectsAllowed( Boolean.valueOf( value ) );
-                }
-                else if ( key.equals( CONN_MANAGER_TIMEOUT ) )
-                {
-                    builder.setConnectionRequestTimeout( Integer.parseInt( value ) );
-                }
-                else if ( key.equals( COOKIE_POLICY ) )
-                {
-                    builder.setCookieSpec( value );
-                }
-                else if ( key.equals( MAX_REDIRECTS ) )
-                {
-                    builder.setMaxRedirects( Integer.parseInt( value ) );
-                }
-                else if ( key.equals( HANDLE_REDIRECTS ) )
-                {
-                    builder.setRedirectsEnabled( Boolean.valueOf( value ) );
-                }
-                else if ( key.equals( REJECT_RELATIVE_REDIRECT ) )
-                {
-                    builder.setRelativeRedirectsAllowed( !Boolean.valueOf( value ) );
-                }
-            }
-        }
-    }
-
-    public static Header[] asRequestHeaders( HttpMethodConfiguration config )
-    {
-        Properties headers = config.getHeaders();
-        if ( headers == null )
-        {
-            return new Header[0];
-        }
-
-        Header[] result = new Header[headers.size()];
-
-        int index = 0;
-        for ( Map.Entry entry : headers.entrySet() )
-        {
-            String key = (String) entry.getKey();
-            String value = (String) entry.getValue();
-
-            Header header = new BasicHeader( key, value );
-            result[index++] = header;
-        }
-
-        return result;
-    }
-
-    public static HttpMethodConfiguration merge( HttpMethodConfiguration defaults, HttpMethodConfiguration base,
-                                            HttpMethodConfiguration local )
-    {
-        HttpMethodConfiguration result = merge( defaults, base );
-        return merge( result, local );
-    }
-
-    public static HttpMethodConfiguration merge( HttpMethodConfiguration base, HttpMethodConfiguration local )
-    {
-        if ( base == null && local == null )
-        {
-            return null;
-        }
-        else if ( base == null )
-        {
-            return local;
-        }
-        else if ( local == null )
-        {
-            return base;
-        }
-        else
-        {
-            HttpMethodConfiguration result = base.copy();
-
-            if ( local.getConnectionTimeout() != Wagon.DEFAULT_CONNECTION_TIMEOUT )
-            {
-                result.setConnectionTimeout( local.getConnectionTimeout() );
-            }
-
-            if ( local.getReadTimeout() != Wagon.DEFAULT_READ_TIMEOUT )
-            {
-                result.setReadTimeout( local.getReadTimeout() );
-            }
-
-            if ( local.getHeaders() != null )
-            {
-                result.getHeaders().putAll( local.getHeaders() );
-            }
-
-            if ( local.getParams() != null )
-            {
-                result.getParams().putAll( local.getParams() );
-            }
-
-            if ( local.getUseDefaultHeaders() != null )
-            {
-                result.setUseDefaultHeaders( local.isUseDefaultHeaders() );
-            }
-
-            return result;
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/8fadff84/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpConfiguration.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpConfiguration.java b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpConfiguration.java
deleted file mode 100644
index 87c8876..0000000
--- a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpConfiguration.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package org.apache.maven.wagon.providers.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 org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpHead;
-import org.apache.http.client.methods.HttpPut;
-import org.apache.http.client.methods.HttpUriRequest;
-
-/**
- * 
- */
-public class HttpConfiguration
-{
-    
-    private static final HttpMethodConfiguration DEFAULT_PUT =
-        new HttpMethodConfiguration().addParam( "http.protocol.expect-continue", "%b,true" );
-
-    private HttpMethodConfiguration all;
-
-    private HttpMethodConfiguration get;
-
-    private HttpMethodConfiguration put;
-
-    private HttpMethodConfiguration head;
-
-    public HttpMethodConfiguration getAll()
-    {
-        return all;
-    }
-
-    public HttpConfiguration setAll( HttpMethodConfiguration all )
-    {
-        this.all = all;
-        return this;
-    }
-
-    public HttpMethodConfiguration getGet()
-    {
-        return get;
-    }
-
-    public HttpConfiguration setGet( HttpMethodConfiguration get )
-    {
-        this.get = get;
-        return this;
-    }
-
-    public HttpMethodConfiguration getPut()
-    {
-        return put;
-    }
-
-    public HttpConfiguration setPut( HttpMethodConfiguration put )
-    {
-        this.put = put;
-        return this;
-    }
-
-    public HttpMethodConfiguration getHead()
-    {
-        return head;
-    }
-
-    public HttpConfiguration setHead( HttpMethodConfiguration head )
-    {
-        this.head = head;
-        return this;
-    }
-
-    public HttpMethodConfiguration getMethodConfiguration( HttpUriRequest method )
-    {
-        if ( method instanceof HttpGet )
-        {
-            return ConfigurationUtils.merge( all, get );
-        }
-        else if ( method instanceof HttpPut )
-        {
-            return ConfigurationUtils.merge( DEFAULT_PUT, all, put );
-        }
-        else if ( method instanceof HttpHead )
-        {
-            return ConfigurationUtils.merge( all, head );
-        }
-
-        return all;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/8fadff84/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
deleted file mode 100755
index aef7c9c..0000000
--- a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpMethodConfiguration.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package org.apache.maven.wagon.providers.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.util.Map;
-import java.util.Properties;
-
-import org.apache.http.Header;
-import org.apache.http.message.BasicHeader;
-import org.apache.maven.wagon.Wagon;
-
-/**
- * 
- */
-public class HttpMethodConfiguration
-{
-
-    private Boolean useDefaultHeaders;
-
-    private Properties headers = new Properties();
-
-    private Properties params = new Properties();
-
-    private int connectionTimeout = Wagon.DEFAULT_CONNECTION_TIMEOUT;
-
-    private int readTimeout =
-        Integer.parseInt( System.getProperty( "maven.wagon.rto", Integer.toString( Wagon.DEFAULT_READ_TIMEOUT ) ) );
-
-    private boolean usePreemptive = false;
-
-    public boolean isUseDefaultHeaders()
-    {
-        return useDefaultHeaders == null || useDefaultHeaders.booleanValue();
-    }
-
-    public HttpMethodConfiguration setUseDefaultHeaders( boolean useDefaultHeaders )
-    {
-        this.useDefaultHeaders = Boolean.valueOf( useDefaultHeaders );
-        return this;
-    }
-
-    public Boolean getUseDefaultHeaders()
-    {
-        return useDefaultHeaders;
-    }
-
-    public HttpMethodConfiguration addHeader( String header, String value )
-    {
-        headers.setProperty( header, value );
-        return this;
-    }
-
-    public Properties getHeaders()
-    {
-        return headers;
-    }
-
-    public HttpMethodConfiguration setHeaders( Properties headers )
-    {
-        this.headers = headers;
-        return this;
-    }
-
-    public HttpMethodConfiguration addParam( String param, String value )
-    {
-        params.setProperty( param, value );
-        return this;
-    }
-
-    public Properties getParams()
-    {
-        return params;
-    }
-
-    public HttpMethodConfiguration setParams( Properties params )
-    {
-        this.params = params;
-        return this;
-    }
-
-    public int getConnectionTimeout()
-    {
-        return connectionTimeout;
-    }
-
-    public HttpMethodConfiguration setConnectionTimeout( int connectionTimeout )
-    {
-        this.connectionTimeout = connectionTimeout;
-        return this;
-    }
-
-    public int getReadTimeout()
-    {
-        return readTimeout;
-    }
-
-    public HttpMethodConfiguration setReadTimeout( int readTimeout )
-    {
-        this.readTimeout = readTimeout;
-        return this;
-    }
-
-    public boolean isUsePreemptive()
-    {
-        return usePreemptive;
-    }
-
-    public HttpMethodConfiguration setUsePreemptive( boolean usePreemptive )
-    {
-        this.usePreemptive = usePreemptive;
-        return this;
-    }
-
-    public Header[] asRequestHeaders()
-    {
-        if ( headers == null )
-        {
-            return new Header[0];
-        }
-
-        Header[] result = new Header[headers.size()];
-
-        int index = 0;
-        for ( Map.Entry entry : headers.entrySet() )
-        {
-            String key = (String) entry.getKey();
-            String value = (String) entry.getValue();
-
-            Header header = new BasicHeader( key, value );
-            result[index++] = header;
-        }
-
-        return result;
-    }
-
-    HttpMethodConfiguration copy()
-    {
-        HttpMethodConfiguration copy = new HttpMethodConfiguration();
-
-        copy.setConnectionTimeout( getConnectionTimeout() );
-        copy.setReadTimeout( getReadTimeout() );
-        if ( getHeaders() != null )
-        {
-            copy.setHeaders( getHeaders() );
-        }
-
-        if ( getParams() != null )
-        {
-            copy.setParams( getParams() );
-        }
-
-        copy.setUseDefaultHeaders( isUseDefaultHeaders() );
-
-        return copy;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/8fadff84/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java
index 9410c8f..6d2f5a1 100755
--- a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java
+++ b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java
@@ -27,6 +27,7 @@ import org.apache.http.client.methods.HttpGet;
 import org.apache.maven.wagon.ResourceDoesNotExistException;
 import org.apache.maven.wagon.TransferFailedException;
 import org.apache.maven.wagon.authorization.AuthorizationException;
+import org.apache.maven.wagon.shared.http.AbstractHttpClientWagon;
 import org.apache.maven.wagon.shared.http.HtmlFileListParser;
 
 import java.io.IOException;

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/8fadff84/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/RelaxedTrustStrategy.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/RelaxedTrustStrategy.java b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/RelaxedTrustStrategy.java
deleted file mode 100644
index 94a0878..0000000
--- a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/RelaxedTrustStrategy.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.apache.maven.wagon.providers.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 org.apache.http.conn.ssl.TrustStrategy;
-
-import java.security.cert.CertificateException;
-import java.security.cert.CertificateExpiredException;
-import java.security.cert.CertificateNotYetValidException;
-import java.security.cert.X509Certificate;
-
-/**
- * Relaxed X509 certificate trust manager: can ignore invalid certificate date.
- *
- * @author Olivier Lamy
- * @since 2.0
- */
-public class RelaxedTrustStrategy
-    implements TrustStrategy
-{
-    private final boolean ignoreSSLValidityDates;
-
-    public RelaxedTrustStrategy( boolean ignoreSSLValidityDates )
-    {
-        this.ignoreSSLValidityDates = ignoreSSLValidityDates;
-    }
-
-    public boolean isTrusted( X509Certificate[] certificates, String authType )
-        throws CertificateException
-    {
-        if ( ( certificates != null ) && ( certificates.length == 1 ) )
-        {
-            try
-            {
-                certificates[0].checkValidity();
-            }
-            catch ( CertificateExpiredException e )
-            {
-                if ( !ignoreSSLValidityDates )
-                {
-                    throw e;
-                }
-            }
-            catch ( CertificateNotYetValidException e )
-            {
-                if ( !ignoreSSLValidityDates )
-                {
-                    throw e;
-                }
-            }
-            return true;
-        }
-        else
-        {
-            return false;
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/8fadff84/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagonTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagonTest.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagonTest.java
index 15b1f6b..e4091ec 100644
--- a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagonTest.java
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/AbstractHttpClientWagonTest.java
@@ -22,6 +22,7 @@ package org.apache.maven.wagon.providers.http;
 import org.apache.maven.wagon.InputData;
 import org.apache.maven.wagon.repository.Repository;
 import org.apache.maven.wagon.resource.Resource;
+import org.apache.maven.wagon.shared.http.AbstractHttpClientWagon;
 import org.junit.Test;
 
 public class AbstractHttpClientWagonTest

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/8fadff84/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/BasicAuthScopeTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/BasicAuthScopeTest.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/BasicAuthScopeTest.java
index 9cab689..708278c 100644
--- a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/BasicAuthScopeTest.java
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/BasicAuthScopeTest.java
@@ -20,6 +20,7 @@ package org.apache.maven.wagon.providers.http;
  */
 
 import org.apache.http.auth.AuthScope;
+import org.apache.maven.wagon.shared.http.BasicAuthScope;
 import org.junit.Assert;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/8fadff84/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 4634481..57552f4 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
@@ -23,10 +23,16 @@ package org.apache.maven.wagon.providers.http;
 import junit.framework.TestCase;
 
 import org.apache.http.Header;
+
+
 import org.apache.http.client.config.RequestConfig;
 import org.apache.http.client.methods.HttpHead;
 import org.apache.maven.wagon.OutputData;
 import org.apache.maven.wagon.TransferFailedException;
+import org.apache.maven.wagon.shared.http.AbstractHttpClientWagon;
+import org.apache.maven.wagon.shared.http.ConfigurationUtils;
+import org.apache.maven.wagon.shared.http.HttpConfiguration;
+import org.apache.maven.wagon.shared.http.HttpMethodConfiguration;
 
 public class HttpClientWagonTest
     extends TestCase

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/8fadff84/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonPreemptiveTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonPreemptiveTest.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonPreemptiveTest.java
index f8c8be5..cd12232 100644
--- a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonPreemptiveTest.java
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonPreemptiveTest.java
@@ -20,6 +20,8 @@ package org.apache.maven.wagon.providers.http;
  */
 
 import org.apache.maven.wagon.Wagon;
+import org.apache.maven.wagon.shared.http.HttpConfiguration;
+import org.apache.maven.wagon.shared.http.HttpMethodConfiguration;
 
 /**
  * @author <a href="michal.maczka@dimatics.com">Michal Maczka</a>

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/8fadff84/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTest.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTest.java
index bcfaf2e..f872147 100755
--- a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTest.java
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTest.java
@@ -23,6 +23,8 @@ import java.util.Properties;
 
 import org.apache.maven.wagon.StreamingWagon;
 import org.apache.maven.wagon.http.HttpWagonTestCase;
+import org.apache.maven.wagon.shared.http.HttpConfiguration;
+import org.apache.maven.wagon.shared.http.HttpMethodConfiguration;
 
 /**
  * @author <a href="michal.maczka@dimatics.com">Michal Maczka</a>

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/8fadff84/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java
index 5983b4f..ee1d0ec 100644
--- a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpWagonTimeoutTest.java
@@ -23,6 +23,8 @@ import org.apache.maven.wagon.FileTestUtils;
 import org.apache.maven.wagon.TransferFailedException;
 import org.apache.maven.wagon.Wagon;
 import org.apache.maven.wagon.repository.Repository;
+import org.apache.maven.wagon.shared.http.HttpConfiguration;
+import org.apache.maven.wagon.shared.http.HttpMethodConfiguration;
 import org.eclipse.jetty.servlet.ServletHolder;
 
 import java.io.File;

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/8fadff84/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java
index ace5b3c..25cc61c 100644
--- a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java
@@ -20,6 +20,8 @@ package org.apache.maven.wagon.providers.http;
  */
 
 import org.apache.maven.wagon.Wagon;
+import org.apache.maven.wagon.shared.http.HttpConfiguration;
+import org.apache.maven.wagon.shared.http.HttpMethodConfiguration;
 import org.eclipse.jetty.server.Connector;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.ssl.SslSocketConnector;

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/8fadff84/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java
index 7d0de20..9612a3a 100644
--- a/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java
+++ b/wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java
@@ -43,11 +43,11 @@ public class HttpsWagonTest
 
         SslSocketConnector connector = new SslSocketConnector();
         connector.setPort( server.getConnectors()[0].getPort() );
-        connector.setKeystore( getTestPath( "src/test/resources/ssl/keystore" ) );
-        connector.setPassword( "wagonhttp" );
-        connector.setKeyPassword( "wagonhttp" );
-        connector.setTruststore( getTestPath( "src/test/resources/ssl/keystore" ) );
-        connector.setTrustPassword( "wagonhttp" );
+        connector.getSslContextFactory().setKeyStorePath( "src/test/resources/ssl/keystore" );
+        connector.getSslContextFactory().setKeyStorePassword( "wagonhttp" );
+        connector.getSslContextFactory().setKeyManagerPassword( "wagonhttp" );
+        connector.getSslContextFactory().setTrustStore( getTestPath( "src/test/resources/ssl/keystore" ) );
+        connector.getSslContextFactory().setTrustStorePassword( "wagonhttp" );
         server.setConnectors( new Connector[]{ connector } );
     }
 }

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/8fadff84/wagon-providers/wagon-webdav-jackrabbit/pom.xml
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-webdav-jackrabbit/pom.xml b/wagon-providers/wagon-webdav-jackrabbit/pom.xml
index 4df83af..d34bfe9 100644
--- a/wagon-providers/wagon-webdav-jackrabbit/pom.xml
+++ b/wagon-providers/wagon-webdav-jackrabbit/pom.xml
@@ -54,12 +54,16 @@ under the License.
     <dependency>
       <groupId>org.apache.jackrabbit</groupId>
       <artifactId>jackrabbit-webdav</artifactId>
-      <version>2.5.2</version>
+      <version>2.14.1</version>
       <exclusions>
         <exclusion>
           <artifactId>commons-logging</artifactId>
           <groupId>commons-logging</groupId>
         </exclusion>
+        <exclusion>
+          <groupId>commons-httpclient</groupId>
+          <artifactId>commons-httpclient</artifactId>
+        </exclusion>
       </exclusions>
     </dependency>
     <dependency>
@@ -85,18 +89,17 @@ under the License.
     <dependency>
       <groupId>org.apache.httpcomponents</groupId>
       <artifactId>httpclient</artifactId>
-      <!--
-        The version of commons-logging that comes transitively has class loader
-        problems. So we exclude it here and add a newer version below.
-        Is replaced by org.slf4j:jcl-over-slf4j
-      -->
       <exclusions>
         <exclusion>
-          <groupId>commons-logging</groupId>
           <artifactId>commons-logging</artifactId>
+          <groupId>commons-logging</groupId>
         </exclusion>
       </exclusions>
     </dependency>
+    <dependency>
+      <groupId>org.apache.httpcomponents</groupId>
+      <artifactId>httpcore</artifactId>
+    </dependency>
 
     <!-- Test dependencies -->
     <dependency>
@@ -144,25 +147,6 @@ under the License.
           </execution>
         </executions>
       </plugin>
-      <plugin><!-- Jackrabbit is compiled for JDK 6 -->
-        <artifactId>maven-enforcer-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>enforce-bytecode-version</id>
-            <goals>
-              <goal>enforce</goal>
-            </goals>
-            <configuration>
-              <rules>
-                <enforceBytecodeVersion>
-                  <maxJdkVersion>1.6</maxJdkVersion>
-                </enforceBytecodeVersion>
-              </rules>
-              <fail>true</fail>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
     </plugins>
   </build>
 </project>

http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/8fadff84/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/jackrabbit/webdav/client/methods/XmlRequestEntity.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/jackrabbit/webdav/client/methods/XmlRequestEntity.java b/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/jackrabbit/webdav/client/methods/XmlRequestEntity.java
index 094e114..24d44c6 100644
--- a/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/jackrabbit/webdav/client/methods/XmlRequestEntity.java
+++ b/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/jackrabbit/webdav/client/methods/XmlRequestEntity.java
@@ -19,10 +19,12 @@ package org.apache.jackrabbit.webdav.client.methods;
  * under the License.
  */
 
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.commons.httpclient.methods.RequestEntity;
-import org.apache.commons.httpclient.methods.StringRequestEntity;
 import org.w3c.dom.Document;
 
 import java.io.OutputStream;
@@ -38,14 +40,15 @@ import javax.xml.transform.stream.StreamResult;
 
 /**
  * <code>XmlRequestEntity</code>...
+ * @deprecated is it really use???
  */
 public class XmlRequestEntity
-    implements RequestEntity
+    extends HttpEntityEnclosingRequestBase
 {
 
     private static Logger log = LoggerFactory.getLogger( XmlRequestEntity.class );
 
-    private final RequestEntity delegatee;
+    private final StringEntity delegatee;
 
     public XmlRequestEntity( Document xmlDocument )
         throws IOException
@@ -70,7 +73,7 @@ public class XmlRequestEntity
             throw exception;
         }
 
-        delegatee = new StringRequestEntity( out.toString(), "text/xml", "UTF-8" );
+        delegatee = new StringEntity( out.toString(), "text/xml", "UTF-8" );
     }
 
     public boolean isRepeatable()
@@ -80,16 +83,22 @@ public class XmlRequestEntity
 
     public String getContentType()
     {
-        return delegatee.getContentType();
+        return delegatee.getContentType().getValue();
     }
 
     public void writeRequest( OutputStream out ) throws IOException
     {
-        delegatee.writeRequest( out );
+        delegatee.writeTo( out );
     }
 
     public long getContentLength()
     {
         return delegatee.getContentLength();
     }
+
+    @Override
+    public String getMethod()
+    {
+        return HttpPost.METHOD_NAME;
+    }
 }
\ No newline at end of file