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 2008/05/27 10:26:16 UTC

svn commit: r660422 - in /maven/wagon/trunk: wagon-provider-test/src/main/java/org/apache/maven/wagon/ wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/ wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/w...

Author: brett
Date: Tue May 27 01:26:15 2008
New Revision: 660422

URL: http://svn.apache.org/viewvc?rev=660422&view=rev
Log:
fix some problems with spaces in file names

Modified:
    maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java
    maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
    maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/HtmlFileListParser.java
    maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/LSParser.java
    maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/test/java/org/apache/maven/wagon/providers/ssh/LSParserTest.java
    maven/wagon/trunk/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java

Modified: maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java?rev=660422&r1=660421&r2=660422&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java (original)
+++ maven/wagon/trunk/wagon-provider-test/src/main/java/org/apache/maven/wagon/WagonTestCase.java Tue May 27 01:26:15 2008
@@ -508,7 +508,7 @@
         String dirName = "file-list";
 
         String filenames[] =
-            new String[]{"test-resource.txt", "test-resource-b.txt", "test-resource.pom", "more-resources.dat"};
+            new String[]{"test-resource.txt", "test-resource b.txt", "test-resource.pom", "more-resources.dat"};
 
         for ( int i = 0; i < filenames.length; i++ )
         {

Modified: maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java?rev=660422&r1=660421&r2=660422&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java Tue May 27 01:26:15 2008
@@ -23,6 +23,7 @@
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Locale;
@@ -326,7 +327,7 @@
         
         resource.setLastModified( source.lastModified() );
         
-        String url = getRepository().getUrl() + "/" + resource.getName();
+        String url = getRepository().getUrl() + "/" + URLEncoder.encode( resource.getName() );
 
         PutMethod putMethod = new PutMethod( url );
         InputStream is = null;

Modified: maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/HtmlFileListParser.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/HtmlFileListParser.java?rev=660422&r1=660421&r2=660422&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/HtmlFileListParser.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/HtmlFileListParser.java Tue May 27 01:26:15 2008
@@ -29,6 +29,7 @@
 
 import java.io.InputStream;
 import java.io.PrintWriter;
+import java.net.URLDecoder;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.regex.Pattern;
@@ -122,7 +123,7 @@
                                 // Starts with host relative base url "/maven2/"
                                 if ( value.startsWith( basepath ) )
                                 {
-                                    String tst = value.substring( basepath.length() );
+                                    String tst = URLDecoder.decode( value.substring( basepath.length() ) );
                                     if ( validFilename( tst ) )
                                     {
                                         links.add( tst );

Modified: maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/LSParser.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/LSParser.java?rev=660422&r1=660421&r2=660422&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/LSParser.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/LSParser.java Tue May 27 01:26:15 2008
@@ -27,6 +27,8 @@
 import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * LSParser 
@@ -36,10 +38,12 @@
  */
 public class LSParser
 {
+    private Pattern PATTERN = Pattern.compile( ".+\\s+[0-9]+\\s+.+\\s+.+\\s+[0-9]+\\s+([0-9]{4}-[0-9]{2}-[0-9]{2}|.+\\s+[0-9]+)\\s+[0-9:]+\\s+(.+?)" );
+    
     /**
      * Parse a raw "ls -la", and obtain the list of files.
      * 
-     * TODO: Does not handle files with spaces in the name correctly.
+     * @todo use ls -1a and do away with the method all together
      * 
      * @param rawLS the raw LS to parse.
      * @return the list of files found.
@@ -57,12 +61,13 @@
 
             while ( line != null )
             {
-                String[] parts = StringUtils.split( line, " " );
-                if ( parts.length >= 7 )
+                line = line.trim();
+                
+                Matcher m = PATTERN.matcher( line );
+                if ( m.matches() )
                 {
-                    ret.add( parts[parts.length - 1] );
+                    ret.add( m.group( 2 ) );
                 }
-
                 line = br.readLine();
             }
         }

Modified: maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/test/java/org/apache/maven/wagon/providers/ssh/LSParserTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/test/java/org/apache/maven/wagon/providers/ssh/LSParserTest.java?rev=660422&r1=660421&r2=660422&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/test/java/org/apache/maven/wagon/providers/ssh/LSParserTest.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/test/java/org/apache/maven/wagon/providers/ssh/LSParserTest.java Tue May 27 01:26:15 2008
@@ -37,14 +37,16 @@
             + "-rw-r--r--  1 joakim joakim 1194 2006-12-11 09:25 pom.xml\n"
             + "-rw-r--r--  1 joakim joakim  662 2006-12-09 18:46 .project\n"
             + "drwxr-xr-x  4 joakim joakim 4096 2006-11-21 12:26 src\n"
+            + "drwxr-xr-x  4 joakim joakim 4096 2006-11-21 12:26 spaced out\n"
             + "drwxr-xr-x  7 joakim joakim 4096 2006-12-11 10:31 .svn\n"
             + "drwxr-xr-x  3 joakim joakim 4096 2006-12-11 08:39 target\n";
 
         LSParser parser = new LSParser();
         List files = parser.parseFiles( rawLS );
         assertNotNull( files );
-        assertEquals( 8, files.size() );
+        assertEquals( 9, files.size() );
         assertTrue( files.contains( "pom.xml" ) );
+        assertTrue( files.contains( "spaced out" ) );
     }
 
     public void testParseOSX() throws TransferFailedException
@@ -55,14 +57,16 @@
             + "-rw-r--r--   1  joakim  joakim  1194 Dec 11 09:25 pom.xml\n"
             + "-rw-r--r--   1  joakim  joakim   662 May  9  2006 .project\n"
             + "drwxr-xr-x   4  joakim  joakim   204 Dec 11 12:26 src\n"
+            + "drwxr-xr-x   4  joakim  joakim   204 Dec 11 12:26 spaced out\n"
             + "drwxr-xr-x   7  joakim  joakim   476 Dec 11 10:31 .svn\n"
             + "drwxr-xr-x   3  joakim  joakim   238 Dec 11 08:39 target\n";
 
         LSParser parser = new LSParser();
         List files = parser.parseFiles( rawLS );
         assertNotNull( files );
-        assertEquals( 8, files.size() );
+        assertEquals( 9, files.size() );
         assertTrue( files.contains( "pom.xml" ) );
+        assertTrue( files.contains( "spaced out" ) );
     }
 
     public void testParseCygwin() throws TransferFailedException
@@ -73,14 +77,16 @@
             + "-rw-r--r--+  1 joakim None 1194 Dec 11 09:25 pom.xml\n"
             + "-rw-r--r--+  1 joakim None  662 May  9  2006 .project\n"
             + "drwxr-xr-x+  4 joakim None    0 Dec 11 12:26 src\n"
+            + "drwxr-xr-x+  4 joakim None    0 Dec 11 12:26 spaced out\n"
             + "drwxr-xr-x+  7 joakim None    0 Dec 11 10:31 .svn\n"
             + "drwxr-xr-x+  3 joakim None    0 Dec 11 08:39 target\n";
         
         LSParser parser = new LSParser();
         List files = parser.parseFiles( rawLS );
         assertNotNull( files );
-        assertEquals( 8, files.size() );
+        assertEquals( 9, files.size() );
         assertTrue( files.contains( "pom.xml" ) );
+        assertTrue( files.contains( "spaced out" ) );
     }
 
     /**
@@ -93,12 +99,14 @@
         String rawLS = "total 6\n"
             + "drwxr-xr-x  3 snicoll  snicoll  512 Feb  7 11:04 .\n"
             + "drwxr-xr-x  3 snicoll  snicoll  512 Feb  7 11:04 ..\n"
-            + "drwxr-xr-x  3 snicoll  snicoll  512 Feb  7 11:04 org\n";
+            + "drwxr-xr-x  3 snicoll  snicoll  512 Feb  7 11:04 org\n"
+            + "drwxr-xr-x  3 snicoll  snicoll  512 Feb  7 11:04 spaced out\n";
 
         LSParser parser = new LSParser();
         List files = parser.parseFiles( rawLS );
         assertNotNull( files );
-        assertEquals( 3, files.size() );
+        assertEquals( 4, files.size() );
         assertTrue( files.contains( "org" ) );
+        assertTrue( files.contains( "spaced out" ) );
     }
 }

Modified: maven/wagon/trunk/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java?rev=660422&r1=660421&r2=660422&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-webdav/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java Tue May 27 01:26:15 2008
@@ -21,6 +21,7 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.net.URLDecoder;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -264,7 +265,7 @@
                     for (int i = 0; i < multiStatus.getResponses().length; i++)
                     {
                         MultiStatusResponse response = multiStatus.getResponses()[i];
-                        String fileName = PathUtils.filename(response.getHref());
+                        String fileName = PathUtils.filename(URLDecoder.decode( response.getHref()));
                         if (!StringUtils.isEmpty(fileName))
                         {
                             dirs.add(fileName);



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