You are viewing a plain text version of this content. The canonical link for it is here.
Posted to surefire-commits@maven.apache.org by hb...@apache.org on 2008/03/10 23:36:30 UTC
svn commit: r635738 - in /maven/surefire/trunk/surefire-api/src:
main/java/org/apache/maven/surefire/util/UrlUtils.java
test/java/org/apache/maven/surefire/util/UrlUtilsTest.java
Author: hboutemy
Date: Mon Mar 10 15:36:24 2008
New Revision: 635738
URL: http://svn.apache.org/viewvc?rev=635738&view=rev
Log:
[SUREFIRE-467] restore JDK1.3 compatibility: revert r597766 and fix umlaut handling without JDK1.4 API
Modified:
maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/util/UrlUtils.java
maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/util/UrlUtilsTest.java
Modified: maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/util/UrlUtils.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/util/UrlUtils.java?rev=635738&r1=635737&r2=635738&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/util/UrlUtils.java (original)
+++ maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/util/UrlUtils.java Mon Mar 10 15:36:24 2008
@@ -20,22 +20,76 @@
*/
import java.io.File;
+import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.BitSet;
/**
* Utility for dealing with URLs in pre-JDK 1.4.
*/
public class UrlUtils
{
+ private static final BitSet UNRESERVED = new BitSet( Byte.MAX_VALUE - Byte.MIN_VALUE + 1 );
+
+ private static final int RADIX = 16;
+
+ private static final int MASK = 0xf;
+
+ private UrlUtils()
+ {
+ }
+
+ private static final String ENCODING = "UTF-8";
+
+ static
+ {
+ try
+ {
+ byte[] bytes =
+ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.!~*'():/".getBytes( ENCODING );
+ for ( int i = 0; i < bytes.length; i++ )
+ {
+ UNRESERVED.set( bytes[i] );
+ }
+ }
+ catch ( UnsupportedEncodingException e )
+ {
+ // can't happen as UTF-8 must be present
+ }
+ }
public static URL getURL( File file )
throws MalformedURLException
{
-
+ // with JDK 1.4+, code would be: return new URL( file.toURI().toASCIIString() );
+ URL url = file.toURL();
// encode any characters that do not comply with RFC 2396
// this is primarily to handle Windows where the user's home directory contains spaces
-
- return new URL( file.toURI().toASCIIString() );
+ try
+ {
+ byte[] bytes = url.toString().getBytes( ENCODING );
+ StringBuffer buf = new StringBuffer( bytes.length );
+ for ( int i = 0; i < bytes.length; i++ )
+ {
+ byte b = bytes[i];
+ if ( b > 0 && UNRESERVED.get( b ) )
+ {
+ buf.append( (char) b );
+ }
+ else
+ {
+ buf.append( '%' );
+ buf.append( Character.forDigit( b >>> 4 & MASK, RADIX ) );
+ buf.append( Character.forDigit( b & MASK, RADIX ) );
+ }
+ }
+ return new URL( buf.toString() );
+ }
+ catch ( UnsupportedEncodingException e )
+ {
+ // should not happen as UTF-8 must be present
+ throw new NestedRuntimeException( e );
+ }
}
}
Modified: maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/util/UrlUtilsTest.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/util/UrlUtilsTest.java?rev=635738&r1=635737&r2=635738&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/util/UrlUtilsTest.java (original)
+++ maven/surefire/trunk/surefire-api/src/test/java/org/apache/maven/surefire/util/UrlUtilsTest.java Mon Mar 10 15:36:24 2008
@@ -70,7 +70,7 @@
throws IOException
{
File f = new File( homeDir, "fo\u00DC.txt" );
- assertEquals( new URL( "file:" + homeDir + "/fo%C3%9C.txt" ), UrlUtils.getURL( f ) );
+ assertEquals( new URL( "file:" + homeDir + "/fo%c3%9c.txt" ), UrlUtils.getURL( f ) );
}
}