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 br...@apache.org on 2009/02/19 05:05:34 UTC
svn commit: r745718 - in /maven/wagon/trunk:
wagon-provider-test/src/main/java/org/apache/maven/wagon/http/
wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/
wagon-providers/wagon-webdav-jackrabbit/src/test/...
Author: brett
Date: Thu Feb 19 04:05:33 2009
New Revision: 745718
URL: http://svn.apache.org/viewvc?rev=745718&view=rev
Log:
[WAGON-244] fix some path parsing errors when creating directories and add tests
Modified:
maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java
maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/PathNavigator.java
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/PathNavigatorTest.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-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java?rev=745718&r1=745717&r2=745718&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java (original)
+++ maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/http/HttpWagonTestCase.java Thu Feb 19 04:05:33 2009
@@ -310,7 +310,7 @@
return ( file.lastModified() / 1000 ) * 1000;
}
- private File getRepositoryDirectory()
+ protected File getRepositoryDirectory()
{
return getTestFile( "target/test-output/http-repository" );
}
Modified: maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/PathNavigator.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/PathNavigator.java?rev=745718&r1=745717&r2=745718&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/PathNavigator.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/PathNavigator.java Thu Feb 19 04:05:33 2009
@@ -36,7 +36,7 @@
public PathNavigator( String path )
{
list = Arrays.asList( StringUtils.split( path, "/" ) );
- currentPosition = list.size() + 1;
+ currentPosition = list.size();
}
public String getPath()
@@ -53,7 +53,7 @@
public boolean backward()
{
- if ( currentPosition - 1 == 0 )
+ if ( currentPosition == 0 )
{
return false;
}
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=745718&r1=745717&r2=745718&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 Thu Feb 19 04:05:33 2009
@@ -40,6 +40,7 @@
import org.apache.maven.wagon.PathUtils;
import org.apache.maven.wagon.ResourceDoesNotExistException;
import org.apache.maven.wagon.TransferFailedException;
+import org.apache.maven.wagon.WagonConstants;
import org.apache.maven.wagon.authorization.AuthorizationException;
import org.apache.maven.wagon.repository.Repository;
import org.apache.maven.wagon.shared.http.AbstractHttpClientWagon;
@@ -105,6 +106,13 @@
Repository repository = getRepository();
String basedir = repository.getBasedir();
+ String baseUrl = repository.getProtocol() + "://" + repository.getHost();
+ if ( repository.getPort() != WagonConstants.UNKNOWN_PORT )
+ {
+ baseUrl += ":" + repository.getPort();
+ }
+
+ // create relative path that will always have a leading and trailing slash
String relpath = FileUtils.normalize( getPath( basedir, dir ) + "/" );
PathNavigator navigator = new PathNavigator(relpath);
@@ -112,9 +120,9 @@
// traverse backwards until we hit a directory that already exists (OK/NOT_ALLOWED), or that we were able to
// create (CREATED), or until we get to the top of the path
int status = SC_NULL;
- while ( navigator.backward() )
+ do
{
- String url = getUrl( navigator );
+ String url = baseUrl + "/" + navigator.getPath();
status = doMkCol( url );
if ( status == HttpStatus.SC_OK || status == HttpStatus.SC_CREATED
|| status == HttpStatus.SC_METHOD_NOT_ALLOWED )
@@ -122,11 +130,12 @@
break;
}
}
+ while ( navigator.backward() );
// traverse forward creating missing directories
while ( navigator.forward() )
{
- String url = getUrl( navigator );
+ String url = baseUrl + "/" + navigator.getPath();
status = doMkCol( url );
if ( status != HttpStatus.SC_OK && status != HttpStatus.SC_CREATED )
{
@@ -152,12 +161,6 @@
}
}
- private String getUrl( PathNavigator navigator )
- {
- String url = getRepository().getUrl().replaceAll( getRepository().getBasedir(), "" );
- return url + '/' + navigator.getPath();
- }
-
/**
* Copy a directory from local system to remote webdav server
*
Modified: maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/PathNavigatorTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/PathNavigatorTest.java?rev=745718&r1=745717&r2=745718&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/PathNavigatorTest.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/PathNavigatorTest.java Thu Feb 19 04:05:33 2009
@@ -26,34 +26,38 @@
*/
public class PathNavigatorTest extends TestCase
{
- private static final String TEST_PATH = "the/quick/brown/fox/jumps/over/the/lazy/maven/developer";
+ private static final String TEST_PATH = "foo/bar/baz";
- public void testBackForwardBack()
+ public void testBackAndForward()
{
PathNavigator navigator = new PathNavigator( TEST_PATH );
+ assertEquals( "foo/bar/baz/", navigator.getPath() );
+
// Nav backward
assertTrue( navigator.backward() );
- assertEquals( "the/quick/brown/fox/jumps/over/the/lazy/maven/developer/", navigator.getPath() );
+ assertEquals( "foo/bar/", navigator.getPath() );
assertTrue( navigator.backward() );
- assertEquals( "the/quick/brown/fox/jumps/over/the/lazy/maven/", navigator.getPath() );
+ assertEquals( "foo/", navigator.getPath() );
assertTrue( navigator.backward() );
- assertEquals( "the/quick/brown/fox/jumps/over/the/lazy/", navigator.getPath() );
-
- assertTrue( navigator.backward() );
- assertEquals( "the/quick/brown/fox/jumps/over/the/", navigator.getPath() );
+ assertEquals( "", navigator.getPath() );
+ assertFalse( navigator.backward() );
+ assertEquals( "", navigator.getPath() );
+
// Nav forward
assertTrue( navigator.forward() );
- assertEquals( "the/quick/brown/fox/jumps/over/the/lazy/", navigator.getPath() );
+ assertEquals( "foo/", navigator.getPath() );
assertTrue( navigator.forward() );
- assertEquals( "the/quick/brown/fox/jumps/over/the/lazy/maven/", navigator.getPath() );
+ assertEquals( "foo/bar/", navigator.getPath() );
- // Nav backward
- assertTrue( navigator.backward() );
- assertEquals( "the/quick/brown/fox/jumps/over/the/lazy/", navigator.getPath() );
+ assertTrue( navigator.forward() );
+ assertEquals( "foo/bar/baz/", navigator.getPath() );
+
+ assertFalse( navigator.forward() );
+ assertEquals( "foo/bar/baz/", navigator.getPath() );
}
}
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=745718&r1=745717&r2=745718&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 Thu Feb 19 04:05:33 2009
@@ -129,6 +129,89 @@
{
assertURL( "dav+https://localhost:10007/dav/", "https://localhost:10007/dav/" );
}
+
+ public void testMkdirs() throws Exception
+ {
+ setupRepositories();
+
+ setupWagonTestingFixtures();
+
+ WebDavWagon wagon = (WebDavWagon) getWagon();
+ wagon.connect( testRepository, getAuthInfo() );
+
+ try
+ {
+ File dir = getRepositoryDirectory();
+
+ // check basedir also doesn't exist and will need to be created
+ dir = new File( dir, testRepository.getBasedir() );
+ assertFalse( dir.exists() );
+
+ // test leading /
+ assertFalse( new File( dir, "foo" ).exists() );
+ wagon.mkdirs( "/foo" );
+ assertTrue( new File( dir, "foo" ).exists() );
+
+ // test trailing /
+ assertFalse( new File( dir, "bar" ).exists() );
+ wagon.mkdirs( "bar/" );
+ assertTrue( new File( dir, "bar" ).exists() );
+
+ // test when already exists
+ wagon.mkdirs( "bar" );
+
+ // test several parts
+ assertFalse( new File( dir, "1/2/3/4" ).exists() );
+ wagon.mkdirs( "1/2/3/4" );
+ assertTrue( new File( dir, "1/2/3/4" ).exists() );
+
+ // test additional part and trailing /
+ assertFalse( new File( dir, "1/2/3/4/5" ).exists() );
+ wagon.mkdirs( "1/2/3/4/5/" );
+ assertTrue( new File( dir, "1/2/3/4" ).exists() );
+ }
+ finally
+ {
+ wagon.disconnect();
+
+ tearDownWagonTestingFixtures();
+ }
+ }
+
+ public void testMkdirsWithNoBasedir() throws Exception
+ {
+ // WAGON-244
+ setupRepositories();
+
+ setupWagonTestingFixtures();
+
+ // reconstruct with no basedir
+ testRepository.setUrl( testRepository.getProtocol() + "://" + testRepository.getHost() + ":"
+ + testRepository.getPort() );
+
+ WebDavWagon wagon = (WebDavWagon) getWagon();
+ wagon.connect( testRepository, getAuthInfo() );
+
+ try
+ {
+ File dir = getRepositoryDirectory();
+
+ // check basedir also doesn't exist and will need to be created
+ dir = new File( dir, testRepository.getBasedir() );
+ assertTrue( dir.exists() );
+
+ // test leading /
+ assertFalse( new File( dir, "foo" ).exists() );
+ wagon.mkdirs( "/foo" );
+ assertTrue( new File( dir, "foo" ).exists() );
+ }
+ finally
+ {
+ wagon.disconnect();
+
+ tearDownWagonTestingFixtures();
+ }
+ }
protected void setHttpHeaders( StreamingWagon wagon, Properties properties )
{
---------------------------------------------------------------------
To unsubscribe, e-mail: wagon-commits-unsubscribe@maven.apache.org
For additional commands, e-mail: wagon-commits-help@maven.apache.org