You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ad...@apache.org on 2003/06/24 12:38:16 UTC
cvs commit: jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/provider/test GenericFileNameTestCase.java
adammurdoch 2003/06/24 03:38:16
Modified: vfs/src/java/org/apache/commons/vfs/provider
GenericFileName.java UriParser.java
vfs/src/test/org/apache/commons/vfs/provider/test
GenericFileNameTestCase.java
Log:
Encode and decode username and password as part of GenericFileName.
Patch submitted by Jeff Barrett.
Revision Changes Path
1.9 +8 -8 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/GenericFileName.java
Index: GenericFileName.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/GenericFileName.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- GenericFileName.java 17 Mar 2003 09:07:32 -0000 1.8
+++ GenericFileName.java 24 Jun 2003 10:38:16 -0000 1.9
@@ -55,8 +55,8 @@
*/
package org.apache.commons.vfs.provider;
-import org.apache.commons.vfs.FileSystemException;
import org.apache.commons.vfs.FileName;
+import org.apache.commons.vfs.FileSystemException;
/**
* A file name that represents a 'generic' URI, as per RFC 2396. Consists of
@@ -74,6 +74,8 @@
private final int defaultPort;
private final String password;
private final int port;
+ private static final char[] USERNAME_RESERVED = { ':', '@' };
+ private static final char[] PASSWORD_RESERVED = { '@' };
protected GenericFileName( final String scheme,
final String hostName,
@@ -196,7 +198,6 @@
name.delete( 0, 2 );
// Extract userinfo, and split into username and password
- // TODO - need to decode username and password
final String userInfo = extractUserInfo( name );
final String userName;
final String password;
@@ -219,8 +220,8 @@
userName = null;
password = null;
}
- auth.userName = userName;
- auth.password = password;
+ auth.userName = UriParser.decode( userName );
+ auth.password = UriParser.decode( password );
// Extract hostname, and normalise (lowercase)
final String hostName = extractHostName( name );
@@ -340,12 +341,11 @@
buffer.append( "://" );
if ( userName != null && userName.length() != 0 )
{
- // TODO - need to encode username and password
- buffer.append( userName );
+ UriParser.appendEncoded( buffer, userName, USERNAME_RESERVED );
if ( password != null && password.length() != 0 )
{
buffer.append( ':' );
- buffer.append( password );
+ UriParser.appendEncoded( buffer, password, PASSWORD_RESERVED );
}
buffer.append( '@' );
}
1.15 +4 -0 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/UriParser.java
Index: UriParser.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/UriParser.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- UriParser.java 12 Feb 2003 07:56:13 -0000 1.14
+++ UriParser.java 24 Jun 2003 10:38:16 -0000 1.15
@@ -314,6 +314,10 @@
public static String decode( final String encodedStr )
throws FileSystemException
{
+ if ( encodedStr == null )
+ {
+ return null;
+ }
final StringBuffer buffer = new StringBuffer( encodedStr );
decode( buffer, 0, buffer.length() );
return buffer.toString();
1.2 +12 -1 jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/provider/test/GenericFileNameTestCase.java
Index: GenericFileNameTestCase.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/provider/test/GenericFileNameTestCase.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- GenericFileNameTestCase.java 15 Feb 2003 00:15:19 -0000 1.1
+++ GenericFileNameTestCase.java 24 Jun 2003 10:38:16 -0000 1.2
@@ -128,6 +128,17 @@
assertEquals( "/file", name.getPath() );
assertEquals( "ftp://user:password@hostname/", name.getRootURI() );
assertEquals( "ftp://user:password@hostname/file", name.getURI() );
+
+ // Encoded username and password
+ name = GenericFileName.parseUri( "ftp://%75ser%3A:%40@hostname", 21 );
+ assertEquals( "ftp", name.getScheme() );
+ assertEquals( "user:", name.getUserName() );
+ assertEquals( "@", name.getPassword() );
+ assertEquals( "hostname", name.getHostName() );
+ assertEquals( 21, name.getPort() );
+ assertEquals( "/", name.getPath() );
+ assertEquals( "ftp://user%3a:%40@hostname/", name.getRootURI() );
+ assertEquals( "ftp://user%3a:%40@hostname/", name.getURI() );
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org