You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by do...@apache.org on 2002/09/03 14:16:34 UTC
cvs commit: jakarta-avalon-excalibur/io/src/java/org/apache/avalon/excalibur/io FileUtil.java
donaldp 2002/09/03 05:16:34
Modified: io/src/java/org/apache/avalon/excalibur/io FileUtil.java
Log:
here's the problem:
catPath throws an ArrayIndexOutOfBoundsException if lookupPath
(the base path) does not contain any '/' char.
so, i've attached a replacement method.
the change in the new version are :
- no more ArrayIndexOutOfBoundsException, therefore support
� of relative path is ok.
- output is normalized (wich makes the code significantly simplier,
� but also often slower).
- always throws NullPointerException if any parameter is null.
Submitted By: "Nicolas Leclerc" <nl...@novadeck.com>
Revision Changes Path
1.34 +13 -17 jakarta-avalon-excalibur/io/src/java/org/apache/avalon/excalibur/io/FileUtil.java
Index: FileUtil.java
===================================================================
RCS file: /home/cvs/jakarta-avalon-excalibur/io/src/java/org/apache/avalon/excalibur/io/FileUtil.java,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- FileUtil.java 31 Aug 2002 03:57:02 -0000 1.33
+++ FileUtil.java 3 Sep 2002 12:16:34 -0000 1.34
@@ -602,32 +602,28 @@
*
* @return The concatenated paths, or null if error occurs
*/
- public static String catPath( final String lookupPath, final String path )
+ public static String catPath( String lookupPath,
+ final String path )
{
- // Cut off the last slash and everything beyond
- int index = lookupPath.lastIndexOf( "/" );
- String lookup = lookupPath.substring( 0, index );
- String pth = path;
+ if( path == null )
+ {
+ throw new NullPointerException( "path" );
+ }
- // Deal with .. by chopping dirs off the lookup path
- while( pth.startsWith( "../" ) )
+ if( !lookupPath.endsWith( "/" ) )
{
- if( lookup.length() > 0 )
+ final int index = lookupPath.lastIndexOf( "/" );
+ if( index < 0 )
{
- index = lookup.lastIndexOf( "/" );
- lookup = lookup.substring( 0, index );
+ lookupPath = "";
}
else
{
- // More ..'s than dirs, return null
- return null;
+ lookupPath = lookupPath.substring( 0, index + 1 );
}
-
- index = pth.indexOf( "../" ) + 3;
- pth = pth.substring( index );
}
- return new StringBuffer( lookup ).append( "/" ).append( pth ).toString();
+ return normalize( lookupPath + path );
}
/**
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>