You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by de...@apache.org on 2011/01/05 10:40:28 UTC

svn commit: r1055378 - in /maven/shared/trunk/maven-filtering/src: main/java/org/apache/maven/shared/filtering/FilteringUtils.java test/java/org/apache/maven/shared/filtering/FilteringUtilsTest.java

Author: dennisl
Date: Wed Jan  5 09:40:28 2011
New Revision: 1055378

URL: http://svn.apache.org/viewvc?rev=1055378&view=rev
Log:
o Replace String-comparison with reglar expression pattern matching.
o Require that the drive letter actually is a letter.
o Add more test cases.

Modified:
    maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/FilteringUtils.java
    maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/FilteringUtilsTest.java

Modified: maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/FilteringUtils.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/FilteringUtils.java?rev=1055378&r1=1055377&r2=1055378&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/FilteringUtils.java (original)
+++ maven/shared/trunk/maven-filtering/src/main/java/org/apache/maven/shared/filtering/FilteringUtils.java Wed Jan  5 09:40:28 2011
@@ -19,6 +19,7 @@ package org.apache.maven.shared.filterin
  * under the License.
  */
 
+import java.util.regex.Pattern;
 import org.codehaus.plexus.util.StringUtils;
 
 /**
@@ -27,6 +28,9 @@ import org.codehaus.plexus.util.StringUt
  */
 public final class FilteringUtils
 {
+    private static final String WINDOWS_PATH_PATTERN = "^[a-zA-Z]:\\\\(.*)";
+
+    private static final Pattern PATTERN = Pattern.compile( WINDOWS_PATH_PATTERN) ;
 
     /**
      * 
@@ -40,7 +44,7 @@ public final class FilteringUtils
     // How do we distinguish a relative windows path from some other value that happens to contain backslashes??
     public static final String escapeWindowsPath( String val )
     {
-        if ( !StringUtils.isEmpty( val ) && val.indexOf( ":\\" ) == 1 )
+        if ( !StringUtils.isEmpty( val ) && PATTERN.matcher( val ).matches() )
         {
             // Adapted from StringUtils.replace in plexus-utils to accommodate pre-escaped backslashes.
             StringBuffer buf = new StringBuffer( val.length() );

Modified: maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/FilteringUtilsTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/FilteringUtilsTest.java?rev=1055378&r1=1055377&r2=1055378&view=diff
==============================================================================
--- maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/FilteringUtilsTest.java (original)
+++ maven/shared/trunk/maven-filtering/src/test/java/org/apache/maven/shared/filtering/FilteringUtilsTest.java Wed Jan  5 09:40:28 2011
@@ -35,6 +35,16 @@ public class FilteringUtilsTest
         assertEquals( "C:\\\\Users\\\\Administrator", FilteringUtils.escapeWindowsPath( "C:\\Users\\Administrator" ) );
     }
 
+    public void testEscapeWindowsPathMissingDriveLetter()
+    {
+        assertEquals( ":\\Users\\Administrator", FilteringUtils.escapeWindowsPath( ":\\Users\\Administrator" ) );
+    }
+
+    public void testEscapeWindowsPathInvalidDriveLetter()
+    {
+        assertEquals( "4:\\Users\\Administrator", FilteringUtils.escapeWindowsPath( "4:\\Users\\Administrator" ) );
+    }
+
     // This doesn't work, see MSHARED-121
     /*
     public void testEscapeWindowsPathStartingWithDrivelessAbsolutePath()