Author: olamy
Date: Mon Sep 19 22:52:43 2011
New Revision: 1172878

URL: http://svn.apache.org/viewvc?rev=1172878&view=rev
Log:
[WAGON-349] add a unit to ensure file are not uploaded twice with wagon-http.
fix implementation of preemptive for wagon based on asf httpclient.

Modified:
    
maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java
    
maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
    
maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java

Modified: 
maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java
URL: 
http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java?rev=1172878&r1=1172877&r2=1172878&view=diff
==============================================================================
--- 
maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java
 (original)
+++ 
maven/wagon/trunk/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java
 Mon Sep 19 22:52:43 2011
@@ -126,6 +126,7 @@ public class LightweightHttpWagon
 
                 URL url = new URL( visitingUrl );
                 HttpURLConnection urlConnection = (HttpURLConnection) 
url.openConnection( this.proxy );
+
                 urlConnection.setRequestProperty( "Accept-Encoding", "gzip" );
                 if ( !useCache )
                 {

Modified: 
maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
URL: 
http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java?rev=1172878&r1=1172877&r2=1172878&view=diff
==============================================================================
--- 
maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
 (original)
+++ 
maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
 Mon Sep 19 22:52:43 2011
@@ -29,18 +29,22 @@ import org.apache.http.auth.AuthScope;
 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.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.params.ClientPNames;
 import org.apache.http.client.params.CookiePolicy;
+import org.apache.http.client.protocol.ClientContext;
 import org.apache.http.conn.ClientConnectionManager;
 import org.apache.http.conn.params.ConnRoutePNames;
 import org.apache.http.conn.scheme.Scheme;
 import org.apache.http.conn.ssl.BrowserCompatHostnameVerifier;
 import org.apache.http.conn.ssl.SSLSocketFactory;
 import org.apache.http.conn.ssl.X509HostnameVerifier;
+import org.apache.http.impl.auth.BasicScheme;
+import org.apache.http.impl.client.BasicAuthCache;
 import org.apache.http.impl.client.DefaultHttpClient;
 import org.apache.http.impl.conn.SingleClientConnManager;
 import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
@@ -50,6 +54,7 @@ import org.apache.http.message.BasicHead
 import org.apache.http.params.CoreConnectionPNames;
 import org.apache.http.params.CoreProtocolPNames;
 import org.apache.http.params.HttpParams;
+import org.apache.http.protocol.BasicHttpContext;
 import org.apache.maven.wagon.InputData;
 import org.apache.maven.wagon.OutputData;
 import org.apache.maven.wagon.PathUtils;
@@ -91,6 +96,8 @@ import java.util.zip.GZIPInputStream;
 public abstract class AbstractHttpClientWagon
     extends StreamWagon
 {
+
+    private BasicHttpContext localContext;
     private final class RequestEntityImplementation
         implements HttpEntity
     {
@@ -400,6 +407,15 @@ public abstract class AbstractHttpClient
             int port = getRepository().getPort() > -1 ? 
getRepository().getPort() : AuthScope.ANY_PORT;
 
             client.getCredentialsProvider().setCredentials( new AuthScope( 
host, port ), creds );
+
+
+            AuthCache authCache = new BasicAuthCache();
+            BasicScheme basicAuth = new BasicScheme();
+            HttpHost targetHost = new HttpHost( repository.getHost(), 
repository.getPort(), repository.getProtocol() );
+            authCache.put( targetHost, basicAuth );
+
+            localContext = new BasicHttpContext();
+            localContext.setAttribute( ClientContext.AUTH_CACHE, authCache );
         }
 
         ProxyInfo proxyInfo = getProxyInfo( getRepository().getProtocol(), 
getRepository().getHost() );
@@ -646,7 +662,7 @@ public abstract class AbstractHttpClient
         setHeaders( httpMethod );
         client.getParams().setParameter( CoreProtocolPNames.USER_AGENT, 
getUserAgent( httpMethod ) );
 
-        return client.execute( httpMethod );
+        return client.execute( httpMethod, localContext );
     }
 
     protected void setParameters( HttpUriRequest method )

Modified: 
maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java
URL: 
http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java?rev=1172878&r1=1172877&r2=1172878&view=diff
==============================================================================
--- 
maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java
 (original)
+++ 
maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java
 Mon Sep 19 22:52:43 2011
@@ -301,4 +301,31 @@ public class WebDavWagonTest
 
         tearDownWagonTestingFixtures();
     }
+
+    @Override
+    protected boolean supportPreemptiveAuthentication()
+    {
+        return false;
+    }
+
+    protected void testPreemptiveAuthentication( TestSecurityHandler sh )
+    {
+
+        if ( supportPreemptiveAuthentication() )
+        {
+            assertEquals( "not 2 security handler use " + 
sh.securityHandlerRequestReponses, 2,
+                          sh.securityHandlerRequestReponses.size() );
+            assertEquals( 200, sh.securityHandlerRequestReponses.get( 0 
).responseCode );
+        }
+        else
+        {
+            assertEquals( "not 4 security handler use " + 
sh.securityHandlerRequestReponses, 4,
+                          sh.securityHandlerRequestReponses.size() );
+            assertEquals( 401, sh.securityHandlerRequestReponses.get( 0 
).responseCode );
+            assertEquals( 200, sh.securityHandlerRequestReponses.get( 1 
).responseCode );
+            assertEquals( 401, sh.securityHandlerRequestReponses.get( 2 
).responseCode );
+            assertEquals( 200, sh.securityHandlerRequestReponses.get( 3 
).responseCode );
+
+        }
+    }
 }


Reply via email to