You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wagon-commits@maven.apache.org by jo...@apache.org on 2008/05/31 23:50:14 UTC

svn commit: r662092 - in /maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src: main/java/org/apache/maven/wagon/providers/webdav/ main/resources/ main/resources/META-INF/ main/resources/META-INF/plexus/ test/java/org/apache/maven/wagon/provid...

Author: joakime
Date: Sat May 31 14:50:14 2008
New Revision: 662092

URL: http://svn.apache.org/viewvc?rev=662092&view=rev
Log:
* Adding support for URI spec protocol definitions for webdav as well.
  Original protocol prefixes - dav:http:// and dav:https://
  Added URI protocol prefixes - dav:// and davs:// and dav+http:// and dav+https://
* Adding tests to ensure backwards compatibility, as well as to test url mappings for new URI protocol specs.


Added:
    maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/resources/
    maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/resources/META-INF/
    maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/resources/META-INF/plexus/
    maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/resources/META-INF/plexus/components.xml   (with props)
Modified:
    maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.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-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java?rev=662092&r1=662091&r2=662092&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java Sat May 31 14:50:14 2008
@@ -67,6 +67,23 @@
     extends AbstractHttpClientWagon
 {
     /**
+     * Defines the protocol mapping to use.
+     * 
+     * First string is the user definition way to define a webdav url,
+     * the second string is the internal representation of that url.
+     * 
+     * NOTE: The order of the mapping becomes the search order.
+     */
+    private static final String[][] protocolMap = new String[][] {
+        { "dav:http://", "http://" },    /* maven 2.0.x url string format. (violates URI spec) */
+        { "dav:https://", "https://" },  /* maven 2.0.x url string format. (violates URI spec) */
+        { "dav+http://", "http://" },    /* URI spec compliant (protocol+transport) */
+        { "dav+https://", "https://" },  /* URI spec compliant (protocol+transport) */
+        { "dav://", "http://" },         /* URI spec compliant (protocol only) */
+        { "davs://", "https://" }        /* URI spec compliant (protocol only) */
+    };
+    
+    /**
      * Puts a file into the remote repository
      *
      * @param source       the file to transfer
@@ -297,17 +314,21 @@
         throw new ResourceDoesNotExistException("Destination path exists but is not a " + "WebDAV collection (directory): " + url );
     }
     
-    protected String getURL( Repository repository )
+    public String getURL( Repository repository )
     {
         String url = repository.getUrl();
-        String s = "dav:";
-        if ( url.startsWith( s ) )
-        {
-            return url.substring( s.length() );
-        }
-        else
+
+        // Process mappings first.
+        for ( int i = 0; i < protocolMap.length; i++ )
         {
-            return url;
+            String protocol = protocolMap[i][0];
+            if ( url.startsWith( protocol ) )
+            {
+                return protocolMap[i][1] + url.substring( protocol.length() );
+            }
         }
+
+        // No mapping trigger? then just return as-is.
+        return url;
     }
 }

Added: maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/resources/META-INF/plexus/components.xml?rev=662092&view=auto
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/resources/META-INF/plexus/components.xml (added)
+++ maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/resources/META-INF/plexus/components.xml Sat May 31 14:50:14 2008
@@ -0,0 +1,44 @@
+<component-set>
+  <components>
+    <component>
+      <role>org.apache.maven.wagon.Wagon</role>
+      <role-hint>dav</role-hint>
+      <implementation>org.apache.maven.wagon.providers.webdav.WebDavWagon</implementation>
+      <instantiation-strategy>per-lookup</instantiation-strategy>
+      <description>&lt;p&gt;WebDavWagon&lt;/p&gt;
+&lt;p/&gt;
+&lt;p&gt;Allows using a webdav remote repository for downloads and deployments&lt;/p&gt;</description>
+      <isolated-realm>false</isolated-realm>
+    </component>
+    <component>
+      <role>org.apache.maven.wagon.Wagon</role>
+      <role-hint>davs</role-hint>
+      <implementation>org.apache.maven.wagon.providers.webdav.WebDavWagon</implementation>
+      <instantiation-strategy>per-lookup</instantiation-strategy>
+      <description>&lt;p&gt;WebDavWagon&lt;/p&gt;
+&lt;p/&gt;
+&lt;p&gt;Allows using a webdav remote repository for downloads and deployments&lt;/p&gt;</description>
+      <isolated-realm>false</isolated-realm>
+    </component>
+    <component>
+      <role>org.apache.maven.wagon.Wagon</role>
+      <role-hint>dav+http</role-hint>
+      <implementation>org.apache.maven.wagon.providers.webdav.WebDavWagon</implementation>
+      <instantiation-strategy>per-lookup</instantiation-strategy>
+      <description>&lt;p&gt;WebDavWagon&lt;/p&gt;
+&lt;p/&gt;
+&lt;p&gt;Allows using a webdav remote repository for downloads and deployments&lt;/p&gt;</description>
+      <isolated-realm>false</isolated-realm>
+    </component>
+    <component>
+      <role>org.apache.maven.wagon.Wagon</role>
+      <role-hint>dav+https</role-hint>
+      <implementation>org.apache.maven.wagon.providers.webdav.WebDavWagon</implementation>
+      <instantiation-strategy>per-lookup</instantiation-strategy>
+      <description>&lt;p&gt;WebDavWagon&lt;/p&gt;
+&lt;p/&gt;
+&lt;p&gt;Allows using a webdav remote repository for downloads and deployments&lt;/p&gt;</description>
+      <isolated-realm>false</isolated-realm>
+    </component>
+  </components>
+</component-set>

Propchange: maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/resources/META-INF/plexus/components.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/resources/META-INF/plexus/components.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Propchange: maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/resources/META-INF/plexus/components.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

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=662092&r1=662091&r2=662092&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 Sat May 31 14:50:14 2008
@@ -48,7 +48,7 @@
     {
         return "dav";
     }
-
+    
     protected void setupWagonTestingFixtures()
         throws Exception
     {
@@ -78,4 +78,59 @@
         File file = getTestFile( "target/test-output/dav-repository/newfolder/folder2", resource.getName() );
         return file.lastModified();
     }
+    
+    private void assertURL( String userUrl, String expectedUrl )
+    {
+        Repository repo = new Repository( "test-geturl", userUrl );
+        String actualUrl = ( new WebDavWagon() ).getURL( repo );
+        assertEquals( "WebDavWagon.getURL(" + userUrl + ")", expectedUrl, actualUrl );
+    }
+
+    /**
+     * Tests the maven 2.0.x way to define a webdav URL without SSL.
+     */
+    public void testGetURLDavHttp()
+    {
+        assertURL( "dav:http://localhost:10007/dav/", "http://localhost:10007/dav/" );
+    }
+    
+    /**
+     * Tests the maven 2.0.x way to define a webdav URL with SSL.
+     */
+    public void testGetURLDavHttps()
+    {
+        assertURL( "dav:https://localhost:10007/dav/", "https://localhost:10007/dav/" );
+    }
+
+    /**
+     * Tests the URI spec way of defining a webdav URL without SSL.
+     */
+    public void testGetURLDavUri()
+    {
+        assertURL( "dav://localhost:10007/dav/", "http://localhost:10007/dav/" );
+    }
+
+    /**
+     * Tests the URI spec way of defining a webdav URL with SSL.
+     */
+    public void testGetURLDavUriWithSsl()
+    {
+        assertURL( "davs://localhost:10007/dav/", "https://localhost:10007/dav/" );
+    }
+
+    /**
+     * Tests the URI spec way of defining a webdav URL without SSL.
+     */
+    public void testGetURLDavPlusHttp()
+    {
+        assertURL( "dav+https://localhost:10007/dav/", "https://localhost:10007/dav/" );
+    }
+
+    /**
+     * Tests the URI spec way of defining a webdav URL with SSL.
+     */
+    public void testGetURLDavPlusHttps()
+    {
+        assertURL( "dav+https://localhost:10007/dav/", "https://localhost:10007/dav/" );
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: wagon-commits-unsubscribe@maven.apache.org
For additional commands, e-mail: wagon-commits-help@maven.apache.org