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><p>WebDavWagon</p>
+<p/>
+<p>Allows using a webdav remote repository for downloads and deployments</p></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><p>WebDavWagon</p>
+<p/>
+<p>Allows using a webdav remote repository for downloads and deployments</p></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><p>WebDavWagon</p>
+<p/>
+<p>Allows using a webdav remote repository for downloads and deployments</p></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><p>WebDavWagon</p>
+<p/>
+<p>Allows using a webdav remote repository for downloads and deployments</p></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