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()