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 2016/05/01 12:56:25 UTC

[23/50] [abbrv] maven-aether git commit: Bug 442576 - Allow to disable WebDav support

Bug 442576 - Allow to disable WebDav support

Automatically disabled WebDAV mode when detecting a repository manager


Project: http://git-wip-us.apache.org/repos/asf/maven-aether/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-aether/commit/9440b371
Tree: http://git-wip-us.apache.org/repos/asf/maven-aether/tree/9440b371
Diff: http://git-wip-us.apache.org/repos/asf/maven-aether/diff/9440b371

Branch: refs/heads/master
Commit: 9440b371a669b8c0d21ba235858a792b83ca22ce
Parents: cd3cb86
Author: Benjamin Bentmann <be...@sonatype.com>
Authored: Sat Aug 30 21:50:53 2014 +0200
Committer: Benjamin Bentmann <be...@sonatype.com>
Committed: Sat Aug 30 21:50:53 2014 +0200

----------------------------------------------------------------------
 .../aether/transport/http/HttpTransporter.java  | 10 +++++-
 .../transport/http/HttpTransporterTest.java     | 34 ++++++++++++++++++++
 2 files changed, 43 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-aether/blob/9440b371/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporter.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporter.java b/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporter.java
index a801373..5ac9b8f 100644
--- a/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporter.java
+++ b/aether-transport-http/src/main/java/org/eclipse/aether/transport/http/HttpTransporter.java
@@ -338,7 +338,15 @@ final class HttpTransporter
 
     private boolean isWebDav( HttpResponse response )
     {
-        return response.containsHeader( HttpHeaders.DAV );
+        return response.containsHeader( HttpHeaders.DAV ) && !isWebDavOptional( response );
+    }
+
+    private boolean isWebDavOptional( HttpResponse response )
+    {
+        Header header = response.getFirstHeader( HttpHeaders.SERVER );
+        String server = ( header != null ) ? header.getValue() : null;
+        // repository managers don't need webdav mode and work fine with straight puts
+        return server != null && ( server.startsWith( "Artifactory/" ) || server.startsWith( "Nexus/" ) );
     }
 
     private void mkdirs( URI uri, SharingHttpContext context )

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/9440b371/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpTransporterTest.java
----------------------------------------------------------------------
diff --git a/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpTransporterTest.java b/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpTransporterTest.java
index 14ec31e..0ebe893 100644
--- a/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpTransporterTest.java
+++ b/aether-transport-http/src/test/java/org/eclipse/aether/transport/http/HttpTransporterTest.java
@@ -851,6 +851,40 @@ public class HttpTransporterTest
     }
 
     @Test
+    public void testPut_WebDavOptional_AutomaticallyDisabled_Artifactory()
+        throws Exception
+    {
+        testPut_WebDavOptional_AutomaticallyDisabled( "Artifactory/3.3.0" );
+    }
+
+    @Test
+    public void testPut_WebDavOptional_AutomaticallyDisabled_Nexus()
+        throws Exception
+    {
+        testPut_WebDavOptional_AutomaticallyDisabled( "Nexus/2.9.0-02" );
+    }
+
+    private void testPut_WebDavOptional_AutomaticallyDisabled( String server )
+        throws Exception
+    {
+        httpServer.setServer( server );
+        httpServer.setWebDav( HttpServer.WebDav.OPTIONAL );
+        RecordingTransportListener listener = new RecordingTransportListener();
+        PutTask task =
+            new PutTask( URI.create( "repo/dir1/dir2/file.txt" ) ).setListener( listener ).setDataString( "upload" );
+        transporter.put( task );
+        assertEquals( 0, listener.dataOffset );
+        assertEquals( 6, listener.dataLength );
+        assertEquals( 1, listener.startedCount );
+        assertTrue( "Count: " + listener.progressedCount, listener.progressedCount > 0 );
+        assertEquals( "upload", TestFileUtils.readString( new File( repoDir, "dir1/dir2/file.txt" ) ) );
+
+        assertEquals( httpServer.getLogEntries().toString(), 2, httpServer.getLogEntries().size() );
+        assertEquals( "OPTIONS", httpServer.getLogEntries().get( 0 ).method );
+        assertEquals( "PUT", httpServer.getLogEntries().get( 1 ).method );
+    }
+
+    @Test
     public void testPut_FileHandleLeak()
         throws Exception
     {