preemptive for webdav MKCOL Signed-off-by: olivier lamy <[email protected]>
Project: http://git-wip-us.apache.org/repos/asf/maven-wagon/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-wagon/commit/cf4d26bb Tree: http://git-wip-us.apache.org/repos/asf/maven-wagon/tree/cf4d26bb Diff: http://git-wip-us.apache.org/repos/asf/maven-wagon/diff/cf4d26bb Branch: refs/heads/master Commit: cf4d26bb2edf19e60668afdc7ec8ae118368283f Parents: a465ee0 Author: olivier lamy <[email protected]> Authored: Tue Jul 4 17:14:54 2017 +1000 Committer: olivier lamy <[email protected]> Committed: Tue Jul 4 22:15:09 2017 +1000 ---------------------------------------------------------------------- pom.xml | 8 ++++++ .../maven/wagon/http/HttpWagonTestCase.java | 24 ++++++---------- .../shared/http/AbstractHttpClientWagon.java | 10 +++++++ .../wagon/providers/webdav/WebDavWagon.java | 19 ++++++++++--- .../wagon/providers/webdav/WebDavWagonTest.java | 30 +++++++++++++++----- 5 files changed, 64 insertions(+), 27 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/cf4d26bb/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index b3f5cd1..2536df6 100644 --- a/pom.xml +++ b/pom.xml @@ -387,6 +387,14 @@ under the License. </lifecycleMappingMetadata> </configuration> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-checkstyle-plugin</artifactId> + <configuration> + <failsOnError>false</failsOnError> + <failOnViolation>false</failOnViolation> + </configuration> + </plugin> </plugins> </pluginManagement> <plugins> http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/cf4d26bb/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java ---------------------------------------------------------------------- diff --git a/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java b/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java index c19eaa3..d7587f0 100644 --- a/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java +++ b/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java @@ -44,11 +44,11 @@ import org.eclipse.jetty.server.Response; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.AbstractHandler; import org.eclipse.jetty.server.handler.HandlerCollection; -import org.eclipse.jetty.util.security.Constraint; -import org.eclipse.jetty.util.security.Password; import org.eclipse.jetty.servlet.DefaultServlet; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; +import org.eclipse.jetty.util.security.Constraint; +import org.eclipse.jetty.util.security.Password; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -698,9 +698,7 @@ public abstract class HttpWagonTestCase File tmpResult = File.createTempFile( "foo", "get" ); - FileOutputStream fileOutputStream = new FileOutputStream( tmpResult ); - - try + try ( FileOutputStream fileOutputStream = new FileOutputStream( tmpResult ) ) { wagon.getToStream( "resource", fileOutputStream ); fileOutputStream.flush(); @@ -843,8 +841,7 @@ public abstract class HttpWagonTestCase String content = "put top secret"; FileUtils.fileWrite( tempFile.getAbsolutePath(), content ); - FileInputStream fileInputStream = new FileInputStream( tempFile ); - try + try ( FileInputStream fileInputStream = new FileInputStream( tempFile ) ) { wagon.putFromStream( fileInputStream, "test-secured-put-resource", content.length(), -1 ); assertEquals( content, FileUtils.fileRead( sourceFile.getAbsolutePath() ) ); @@ -854,7 +851,6 @@ public abstract class HttpWagonTestCase finally { wagon.disconnect(); - fileInputStream.close(); tempFile.delete(); } @@ -915,8 +911,7 @@ public abstract class HttpWagonTestCase String content = "put top secret"; FileUtils.fileWrite( tempFile.getAbsolutePath(), content ); - FileInputStream fileInputStream = new FileInputStream( tempFile ); - try + try (FileInputStream fileInputStream = new FileInputStream( tempFile )) { wagon.putFromStream( fileInputStream, "test-secured-put-resource", content.length(), -1 ); assertEquals( content, FileUtils.fileRead( sourceFile.getAbsolutePath() ) ); @@ -926,7 +921,6 @@ public abstract class HttpWagonTestCase finally { wagon.disconnect(); - fileInputStream.close(); tempFile.delete(); } @@ -1141,7 +1135,7 @@ public abstract class HttpWagonTestCase PutHandler putHandler = new PutHandler( this.repositoryDirectory ); putHandler.handle( target, baseRequest, request, response ); handlerRequestResponses.add( - new HandlerRequestResponse( request.getMethod(), ( (Response) response ).getStatus(), + new HandlerRequestResponse( request.getMethod(), response.getStatus(), request.getRequestURI() ) ); return; } @@ -1150,7 +1144,7 @@ public abstract class HttpWagonTestCase baseRequest.setHandled( true ); handlerRequestResponses.add( - new HandlerRequestResponse( request.getMethod(), ( (Response) response ).getStatus(), + new HandlerRequestResponse( request.getMethod(), response.getStatus(), request.getRequestURI() ) ); } @@ -1865,14 +1859,12 @@ public abstract class HttpWagonTestCase String content = "put top secret"; FileUtils.fileWrite( tempFile.getAbsolutePath(), content ); - FileInputStream fileInputStream = new FileInputStream( tempFile ); - try + try(FileInputStream fileInputStream = new FileInputStream( tempFile )) { wagon.putFromStream( fileInputStream, "test-secured-put-resource", content.length(), -1 ); } finally { - fileInputStream.close(); tempFile.delete(); } http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/cf4d26bb/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java ---------------------------------------------------------------------- diff --git a/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java b/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java index eba6169..db34732 100755 --- a/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java +++ b/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java @@ -1145,6 +1145,16 @@ public abstract class AbstractHttpClientWagon throw new IllegalStateException( "this wagon http client must not use fillOutputData" ); } + protected CredentialsProvider getCredentialsProvider() + { + return credentialsProvider; + } + + protected AuthCache getAuthCache() + { + return authCache; + } + public int getInitialBackoffSeconds() { return initialBackoffSeconds; http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/cf4d26bb/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java ---------------------------------------------------------------------- diff --git a/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java b/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java index ad1fa71..71648f6 100644 --- a/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java +++ b/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java @@ -20,9 +20,12 @@ package org.apache.maven.wagon.providers.webdav; */ import org.apache.http.HttpException; +import org.apache.http.HttpHost; import org.apache.http.HttpStatus; +import org.apache.http.auth.AuthScope; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpUriRequest; +import org.apache.http.impl.auth.BasicScheme; import org.apache.jackrabbit.webdav.DavConstants; import org.apache.jackrabbit.webdav.DavException; import org.apache.jackrabbit.webdav.MultiStatus; @@ -104,8 +107,8 @@ public class WebDavWagon { Properties props = new Properties(); - try (InputStream is = AbstractHttpClientWagon.class.getResourceAsStream( - "/META-INF/maven/org.apache.maven.wagon/wagon-webdav-jackrabbit/pom.properties" );) + try ( InputStream is = AbstractHttpClientWagon.class.getResourceAsStream( + "/META-INF/maven/org.apache.maven.wagon/wagon-webdav-jackrabbit/pom.properties" ) ) { props.load( is ); is.close(); @@ -185,10 +188,18 @@ public class WebDavWagon private int doMkCol( String url ) throws IOException { + Repository repo = getRepository(); + HttpHost targetHost = new HttpHost( repo.getHost(), repo.getPort(), repo.getProtocol() ); + AuthScope targetScope = getBasicAuthScope().getScope( targetHost ); + + if ( getCredentialsProvider().getCredentials( targetScope ) != null ) + { + BasicScheme targetAuth = new BasicScheme(); + getAuthCache().put( targetHost, targetAuth ); + } HttpMkcol method = new HttpMkcol( url ); - try (CloseableHttpResponse closeableHttpResponse = execute( method )) + try ( CloseableHttpResponse closeableHttpResponse = execute( method ) ) { - return closeableHttpResponse.getStatusLine().getStatusCode(); } catch ( HttpException e ) http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/cf4d26bb/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java ---------------------------------------------------------------------- diff --git a/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java b/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java index bb646b8..e432970 100644 --- a/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java +++ b/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java @@ -17,7 +17,9 @@ package org.apache.maven.wagon.providers.webdav; import it.could.webdav.DAVServlet; import org.apache.http.HttpException; +import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpRequestBase; +import org.apache.http.client.methods.HttpUriRequest; import org.apache.maven.wagon.ResourceDoesNotExistException; import org.apache.maven.wagon.StreamingWagon; import org.apache.maven.wagon.TransferFailedException; @@ -25,6 +27,8 @@ import org.apache.maven.wagon.Wagon; import org.apache.maven.wagon.http.HttpWagonTestCase; import org.apache.maven.wagon.repository.Repository; import org.apache.maven.wagon.resource.Resource; +import org.apache.maven.wagon.shared.http.HttpConfiguration; +import org.apache.maven.wagon.shared.http.HttpMethodConfiguration; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; @@ -47,6 +51,18 @@ import javax.servlet.http.HttpServletResponse; public class WebDavWagonTest extends HttpWagonTestCase { + + @Override + protected Wagon getWagon() + throws Exception + { + WebDavWagon wagon = (WebDavWagon) super.getWagon(); + wagon.setHttpConfiguration( + new HttpConfiguration() // + .setPut( new HttpMethodConfiguration().setUsePreemptive( true ) )); + return wagon; + } + protected String getTestRepositoryUrl() throws IOException { @@ -356,7 +372,7 @@ public class WebDavWagonTest { private static final String TIMEOUT_TRIGGER = "timeout"; - protected int execute( HttpRequestBase httpRequestBase ) + protected CloseableHttpResponse execute( HttpUriRequest httpRequestBase ) throws HttpException, IOException { if ( httpRequestBase.getURI().getPath().contains( TIMEOUT_TRIGGER ) ) @@ -365,7 +381,7 @@ public class WebDavWagonTest } else { - return super.execute( httpRequestBase ).getStatusLine().getStatusCode(); + return super.execute( httpRequestBase ); } } } @@ -416,7 +432,7 @@ public class WebDavWagonTest @Override protected boolean supportProxyPreemptiveAuthentication() { - return false; + return true; } protected void testPreemptiveAuthenticationGet( TestSecurityHandler sh, boolean preemptive ) @@ -497,14 +513,14 @@ public class WebDavWagonTest { assertEquals( "found:" + putHandler.handlerRequestResponses, 0, putHandler.handlerRequestResponses.size() ); - assertEquals( "found:" + redirectHandler.handlerRequestResponses, 4, + assertEquals( "found:" + redirectHandler.handlerRequestResponses, 6, redirectHandler.handlerRequestResponses.size() ); assertEquals( "found:" + redirectHandler.handlerRequestResponses, HttpServletResponse.SC_SEE_OTHER, redirectHandler.handlerRequestResponses.get( 0 ).responseCode ); - assertEquals( "found:" + redirectHandler.handlerRequestResponses, HttpServletResponse.SC_SEE_OTHER, + assertEquals( "found:" + redirectHandler.handlerRequestResponses, HttpServletResponse.SC_OK, redirectHandler.handlerRequestResponses.get( 1 ).responseCode ); - assertEquals( "found:" + redirectHandler.handlerRequestResponses, HttpServletResponse.SC_CREATED, - redirectHandler.handlerRequestResponses.get( 3 ).responseCode ); + assertEquals( "found:" + redirectHandler.handlerRequestResponses, HttpServletResponse.SC_SEE_OTHER, + redirectHandler.handlerRequestResponses.get( 2 ).responseCode ); }
