cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-12-04 Thread scolebourne
scolebourne2004/12/04 11:28:40

  Modified:io/src/test/org/apache/commons/io FilenameUtilsTestCase.java
   io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  Add equals methods, document Unix/Windows behaviour
  
  Revision  ChangesPath
  1.23  +23 -1 
jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java
  
  Index: FilenameUtilsTestCase.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- FilenameUtilsTestCase.java27 Nov 2004 17:00:51 -  1.22
  +++ FilenameUtilsTestCase.java4 Dec 2004 19:28:40 -   1.23
  @@ -451,6 +451,28 @@
   }
   
   //---
  +public void testEquals() {
  +assertEquals(true, FilenameUtils.equals(null, null));
  +assertEquals(false, FilenameUtils.equals(null, ));
  +assertEquals(false, FilenameUtils.equals(, null));
  +assertEquals(true, FilenameUtils.equals(, ));
  +assertEquals(true, FilenameUtils.equals(file.txt, file.txt));
  +assertEquals(WINDOWS, FilenameUtils.equals(file.txt, FILE.TXT));
  +assertEquals(false, FilenameUtils.equals(a\\b\\file.txt, 
a/b/file.txt));
  +}
  +
  +public void testEqualsNormalized() {
  +assertEquals(true, FilenameUtils.equalsNormalized(null, null));
  +assertEquals(false, FilenameUtils.equalsNormalized(null, ));
  +assertEquals(false, FilenameUtils.equalsNormalized(, null));
  +assertEquals(true, FilenameUtils.equalsNormalized(, ));
  +assertEquals(true, FilenameUtils.equalsNormalized(file.txt, 
file.txt));
  +assertEquals(WINDOWS, FilenameUtils.equalsNormalized(file.txt, 
FILE.TXT));
  +assertEquals(true, FilenameUtils.equalsNormalized(a\\b\\file.txt, 
a/b/file.txt));
  +assertEquals(true, FilenameUtils.equalsNormalized(a\\b\\, a/b));
  +}
  +
  +//---
   public void testIsExtension() {
   assertEquals(false, FilenameUtils.isExtension(null, (String) null));
   assertEquals(false, FilenameUtils.isExtension(file.txt, (String) 
null));
  
  
  
  1.31  +134 -26   
jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java
  
  Index: FilenameUtils.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- FilenameUtils.java27 Nov 2004 17:00:51 -  1.30
  +++ FilenameUtils.java4 Dec 2004 19:28:40 -   1.31
  @@ -22,6 +22,16 @@
   /**
* Utility class that provides methods to manipulate filenames and filepaths.
* p
  + * When dealing with filenames you can hit problems when moving from a 
Windows
  + * based development machine to a Unix based production machine.
  + * This class aims to help avoid those problems.
  + * p
  + * Most methods on this class are designed to work the same on both Unix and 
Windows.
  + * Both separators (forward and back) are recognised, and both sets of 
prefixes.
  + * The comparison methods do differ by machine however, comparing case 
insensitive
  + * on Windows and case sensitive on Unix.
  + * See the javadoc of each method for details.
  + * p
* This class defines six components within a filename (example 
C:\dev\project\file.txt):
* ul
* lithe prefix - C:\/li
  @@ -31,7 +41,9 @@
* lithe base name - file/li
* lithe extension - txt/li
* /ul
  - * The class only supports Unix and Windows style names. Prefixes are 
matched as follows:
  + * Note that the path of a directory is the parent directory.
  + * p
  + * This class only supports Unix and Windows style names. Prefixes are 
matched as follows:
* pre
* Windows style:
* a\b\c.txt   --   -- relative
  @@ -45,6 +57,8 @@
* ~/a/b/c.txt -- ~/-- current user relative
* ~user/a/b/c.txt -- ~user/-- named user relative
* /pre
  + * Both prefix styles are matched always, irrespective of the machine that 
you are
  + * currently running on.
* 
* /p
* h3Origin of code/h3
  @@ -133,6 +147,9 @@
* A double dot will cause that path segment and the one before to be 
removed.
* If the double dot has no parent path segment to work with, 
codenull/code
* is returned.
  + * p
  + * The output will be the same on both Unix and Windows except
  + * for the separator character.
* pre
* /foo//   --   /foo
* /foo/./  --   /foo
  @@ -151,7 +168,7 @@
* ~/foo/../bar 

cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-11-27 Thread scolebourne
scolebourne2004/11/27 09:00:51

  Modified:io/src/test/org/apache/commons/io FilenameUtilsTestCase.java
   io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  Rewrite catPath, renaming to concat
  
  Revision  ChangesPath
  1.22  +32 -13
jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java
  
  Index: FilenameUtilsTestCase.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- FilenameUtilsTestCase.java27 Nov 2004 01:22:05 -  1.21
  +++ FilenameUtilsTestCase.java27 Nov 2004 17:00:51 -  1.22
  @@ -82,18 +82,6 @@
   }
   
   //---
  -public void testCatPath() {
  -// TODO StringIndexOutOfBoundsException thrown if file doesn't 
contain slash.
  -// Is this acceptable?
  -//assertEquals(, FilenameUtils.catPath(a, b));
  -
  -assertEquals(/a + File.separator + c, 
FilenameUtils.catPath(/a/b, c));
  -assertEquals(/a + File.separator + d, 
FilenameUtils.catPath(/a/b/c, ../d));
  -assertEquals(C:\\a + File.separator + c, 
FilenameUtils.catPath(C:\\a\\b, c));
  -assertEquals(C:\\a + File.separator + d, 
FilenameUtils.catPath(C:\\a\\b\\c, ../d));
  -}
  -
  -//---
   public void testNormalize() throws Exception {
   assertEquals(null, FilenameUtils.normalize(null));
   assertEquals(null, FilenameUtils.normalize(:));
  @@ -213,6 +201,37 @@
   assertEquals(null, FilenameUtils.normalize(//server/../a));
   assertEquals(null, FilenameUtils.normalize(//server/..));
   assertEquals(SEP + SEP + server + SEP + , 
FilenameUtils.normalize(//server/));
  +}
  +
  +//---
  +public void testConcat() {
  +assertEquals(null, FilenameUtils.concat(, null));
  +assertEquals(null, FilenameUtils.concat(null, null));
  +assertEquals(null, FilenameUtils.concat(null, ));
  +assertEquals(null, FilenameUtils.concat(null, a));
  +assertEquals(SEP + a, FilenameUtils.concat(null, /a));
  +
  +assertEquals(null, FilenameUtils.concat(, :)); // invalid prefix
  +assertEquals(null, FilenameUtils.concat(:, )); // invalid prefix
  +
  +assertEquals(f, FilenameUtils.concat(, f/));
  +assertEquals(f, FilenameUtils.concat(, f));
  +assertEquals(a + SEP + f, FilenameUtils.concat(a/, f/));
  +assertEquals(a + SEP + f, FilenameUtils.concat(a, f));
  +assertEquals(a + SEP + b + SEP + f, 
FilenameUtils.concat(a/b/, f/));
  +assertEquals(a + SEP + b + SEP + f, 
FilenameUtils.concat(a/b, f));
  +
  +assertEquals(a + SEP + f, FilenameUtils.concat(a/b/, ../f/));
  +assertEquals(a + SEP + f, FilenameUtils.concat(a/b, ../f));
  +assertEquals(a + SEP + c + SEP + g, 
FilenameUtils.concat(a/b/../c/, f/../g/));
  +assertEquals(a + SEP + c + SEP + g, 
FilenameUtils.concat(a/b/../c, f/../g));
  +
  +assertEquals(a + SEP + c.txt + SEP + f, 
FilenameUtils.concat(a/c.txt, f));
  +
  +assertEquals(SEP + f, FilenameUtils.concat(, /f/));
  +assertEquals(SEP + f, FilenameUtils.concat(, /f));
  +assertEquals(SEP + f, FilenameUtils.concat(a/, /f/));
  +assertEquals(SEP + f, FilenameUtils.concat(a, /f));
   }
   
   //---
  
  
  
  1.30  +71 -47
jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java
  
  Index: FilenameUtils.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- FilenameUtils.java27 Nov 2004 01:22:05 -  1.29
  +++ FilenameUtils.java27 Nov 2004 17:00:51 -  1.30
  @@ -31,13 +31,28 @@
* lithe base name - file/li
* lithe extension - txt/li
* /ul
  - * The class only supports Unix and Windows style names.
  + * The class only supports Unix and Windows style names. Prefixes are 
matched as follows:
  + * pre
  + * Windows style:
  + * a\b\c.txt   --   -- relative
  + * \a\b\c.txt  -- \ -- drive relative
  + * C:\a\b\c.txt-- C:\   -- absolute
  + * \\server\a\b\c.txt  -- \\server\ -- UNC
  + * 
  + * Unix style:
  + * a/b/c.txt   --   -- relative
  + * /a/b/c.txt  -- / -- absolute
  + * ~/a/b/c.txt -- ~/

cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-11-26 Thread martinc
martinc 2004/11/26 11:18:28

  Modified:io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  Fix breakage when getPrefixLength() is fed a string of length one.
  
  Revision  ChangesPath
  1.28  +1 -2  
jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java
  
  Index: FilenameUtils.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- FilenameUtils.java23 Nov 2004 00:04:29 -  1.27
  +++ FilenameUtils.java26 Nov 2004 19:18:28 -  1.28
  @@ -416,7 +416,6 @@
   }
   } else {
   char ch0 = filename.charAt(0);
  -char ch1 = filename.charAt(1);
   if (ch0 == '~') {
   if (len == 1) {
   return -1;
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-11-26 Thread scolebourne
scolebourne2004/11/26 17:22:06

  Modified:io/src/test/org/apache/commons/io FilenameUtilsTestCase.java
   io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  Refactor normalize method, and simplify getPrefixLength
  
  Revision  ChangesPath
  1.21  +204 -216  
jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java
  
  Index: FilenameUtilsTestCase.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- FilenameUtilsTestCase.java23 Nov 2004 00:04:29 -  1.20
  +++ FilenameUtilsTestCase.java27 Nov 2004 01:22:05 -  1.21
  @@ -38,6 +38,7 @@
*/
   public class FilenameUtilsTestCase extends FileBasedTestCase {
   
  +private static final String SEP =  + File.separatorChar;
   private static final boolean WINDOWS = (File.separatorChar == '\\');
   
   private File testFile1;
  @@ -80,8 +81,7 @@
   FileUtils.deleteDirectory(getTestDirectory());
   }
   
  -// catPath
  -
  +//---
   public void testCatPath() {
   // TODO StringIndexOutOfBoundsException thrown if file doesn't 
contain slash.
   // Is this acceptable?
  @@ -93,96 +93,126 @@
   assertEquals(C:\\a + File.separator + d, 
FilenameUtils.catPath(C:\\a\\b\\c, ../d));
   }
   
  -// resolveFile
  -
  -public void testResolveFileDotDot() throws Exception {
  -File file = FilenameUtils.resolveFile(getTestDirectory(), ..);
  -assertEquals(
  -Check .. operator,
  -file,
  -getTestDirectory().getParentFile());
  -}
  -
  -public void testResolveFileDot() throws Exception {
  -File file = FilenameUtils.resolveFile(getTestDirectory(), .);
  -assertEquals(Check . operator, file, getTestDirectory());
  -}
  -
  -// normalize
  -
  +//---
   public void testNormalize() throws Exception {
  -String[] src =
  -{
  -null,
  -,
  -/,
  -///,
  -/foo,
  -/foo//,
  -/./,
  -/foo/./,
  -/foo/./bar,
  -/foo/../bar,
  -/foo/../bar/../baz,
  -/foo/bar/../../baz,
  -/././,
  -/foo/./../bar,
  -/foo/.././bar/,
  -//foo//./bar,
  -/../,
  -/foo/../../,
  -../foo,
  -foo/../../bar,
  -foo/../bar };
  -
  -String[] dest =
  -{
  -null,
  -,
  -/,
  -/,
  -/foo,
  -/foo/,
  -/,
  -/foo/,
  -/foo/bar,
  -/bar,
  -/baz,
  -/baz,
  -/,
  -/bar,
  -/bar/,
  -/foo/bar,
  -null,
  -null,
  -null,
  -null,
  -bar };
  -
  -assertEquals(Oops, test writer goofed, src.length, dest.length);
  -
  -for (int i = 0; i  src.length; i++) {
  -String destStr = FilenameUtils.separatorsToSystem(dest[i]);
  -String resultStr = FilenameUtils.normalize(src[i]);
  -assertEquals(
  -Check if ' + src[i] + ' normalized to ' + destStr + ', 
was ' + resultStr + ',
  -destStr, resultStr);
  -}
  -}
  -
  -private String replaceAll(
  -String text,
  -String lookFor,
  -String replaceWith) {
  -StringBuffer sb = new StringBuffer(text);
  -while (true) {
  -int idx = sb.toString().indexOf(lookFor);
  -if (idx  0) {
  -break;
  -}
  -sb.replace(idx, idx + lookFor.length(), replaceWith);
  -}
  -return sb.toString();
  +assertEquals(null, FilenameUtils.normalize(null));
  +assertEquals(null, FilenameUtils.normalize(:));
  +assertEquals(null, FilenameUtils.normalize(1:\\a\\b\\c.txt));
  +assertEquals(null, FilenameUtils.normalize(1:));
  +assertEquals(null, FilenameUtils.normalize(1:a));
  +assertEquals(null, FilenameUtils.normalize(\\a\\b\\c.txt));
  +assertEquals(null, FilenameUtils.normalize(a));
  +assertEquals(null, FilenameUtils.normalize(~));
  +assertEquals(null, FilenameUtils.normalize(~user));
  +
  +

cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-11-22 Thread scolebourne
scolebourne2004/11/22 16:04:29

  Modified:io/src/test/org/apache/commons/io FilenameUtilsTestCase.java
   io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  Add methods to handle filename prefixes
  
  Revision  ChangesPath
  1.20  +166 -6
jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java
  
  Index: FilenameUtilsTestCase.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- FilenameUtilsTestCase.java31 Oct 2004 00:03:03 -  1.19
  +++ FilenameUtilsTestCase.java23 Nov 2004 00:04:29 -  1.20
  @@ -113,6 +113,7 @@
   public void testNormalize() throws Exception {
   String[] src =
   {
  +null,
   ,
   /,
   ///,
  @@ -129,10 +130,14 @@
   /foo/.././bar/,
   //foo//./bar,
   /../,
  -/foo/../../ };
  +/foo/../../,
  +../foo,
  +foo/../../bar,
  +foo/../bar };
   
   String[] dest =
   {
  +null,
   ,
   /,
   /,
  @@ -149,15 +154,19 @@
   /bar/,
   /foo/bar,
   null,
  -null };
  +null,
  +null,
  +null,
  +bar };
   
   assertEquals(Oops, test writer goofed, src.length, dest.length);
   
   for (int i = 0; i  src.length; i++) {
  +String destStr = FilenameUtils.separatorsToSystem(dest[i]);
  +String resultStr = FilenameUtils.normalize(src[i]);
   assertEquals(
  -Check if ' + src[i] + ' normalized to ' + dest[i] + ',
  -dest[i],
  -FilenameUtils.normalize(src[i]));
  +Check if ' + src[i] + ' normalized to ' + destStr + ', 
was ' + resultStr + ',
  +destStr, resultStr);
   }
   }
   
  @@ -214,6 +223,46 @@
   }
   
   //---
  +public void testGetPrefixLength() {
  +assertEquals(-1, FilenameUtils.getPrefixLength(null));
  +if (WINDOWS) {
  +assertEquals(-1, 
FilenameUtils.getPrefixLength(1:\\a\\b\\c.txt));
  +assertEquals(-1, FilenameUtils.getPrefixLength(1:));
  +assertEquals(-1, FilenameUtils.getPrefixLength(1:a));
  +assertEquals(-1, 
FilenameUtils.getPrefixLength(\\a\\b\\c.txt));
  +assertEquals(-1, FilenameUtils.getPrefixLength(a));
  +
  +assertEquals(0, FilenameUtils.getPrefixLength(a\\b\\c.txt));
  +assertEquals(1, FilenameUtils.getPrefixLength(\\a\\b\\c.txt));
  +assertEquals(3, 
FilenameUtils.getPrefixLength(C:\\a\\b\\c.txt));
  +assertEquals(9, 
FilenameUtils.getPrefixLength(server\\a\\b\\c.txt));
  +
  +assertEquals(0, FilenameUtils.getPrefixLength(a/b/c.txt));
  +assertEquals(1, FilenameUtils.getPrefixLength(/a/b/c.txt));
  +assertEquals(3, FilenameUtils.getPrefixLength(C:/a/b/c.txt));
  +assertEquals(9, 
FilenameUtils.getPrefixLength(//server/a/b/c.txt));
  +
  +assertEquals(0, FilenameUtils.getPrefixLength(~/a/b/c.txt));
  +assertEquals(0, 
FilenameUtils.getPrefixLength(~user/a/b/c.txt));
  +} else {
  +assertEquals(-1, FilenameUtils.getPrefixLength(~));
  +assertEquals(-1, FilenameUtils.getPrefixLength(~user));
  +
  +assertEquals(0, FilenameUtils.getPrefixLength(a/b/c.txt));
  +assertEquals(1, FilenameUtils.getPrefixLength(/a/b/c.txt));
  +assertEquals(2, FilenameUtils.getPrefixLength(~/a/b/c.txt));
  +assertEquals(6, 
FilenameUtils.getPrefixLength(~user/a/b/c.txt));
  +
  +assertEquals(0, FilenameUtils.getPrefixLength(a\\b\\c.txt));
  +assertEquals(1, FilenameUtils.getPrefixLength(\\a\\b\\c.txt));
  +assertEquals(2, FilenameUtils.getPrefixLength(~\\a\\b\\c.txt));
  +assertEquals(6, 
FilenameUtils.getPrefixLength(~user\\a\\b\\c.txt));
  +
  +assertEquals(0, 
FilenameUtils.getPrefixLength(C:\\a\\b\\c.txt));
  +assertEquals(1, 
FilenameUtils.getPrefixLength(server\\a\\b\\c.txt));
  +}
  +}
  +
   public void testIndexOfLastSeparator() {
   assertEquals(-1, FilenameUtils.indexOfLastSeparator(null));
   assertEquals(-1, 
FilenameUtils.indexOfLastSeparator(noseperator.inthispath));
  @@ 

cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-11-21 Thread scolebourne
scolebourne2004/11/21 17:11:56

  Modified:io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  Add commented out implementations of prefix handling, Javadoc
  
  Revision  ChangesPath
  1.26  +218 -17   
jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java
  
  Index: FilenameUtils.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- FilenameUtils.java31 Oct 2004 04:17:34 -  1.25
  +++ FilenameUtils.java22 Nov 2004 01:11:55 -  1.26
  @@ -23,9 +23,10 @@
   /**
* Utility class that provides methods to manipulate filenames and filepaths.
* p
  - * This class defines three basic components within a filename (example 
C:\dev\file.txt):
  + * This class defines four basic components within a filename (example 
C:\dev\project\file.txt):
* ul
  - * lithe path - C:\dev
  + * lithe prefix - C:\
  + * lithe path - dev\project
* lithe name - file.txt
* lithe extension - txt
* /ul
  @@ -90,11 +91,119 @@
*/
   private static final char SYSTEM_SEPARATOR = File.separatorChar;
   
  +///**
  +// * The separator character that is the opposite of the system 
separator.
  +// */
  +//private static final char OTHER_SEPARATOR;
  +//static {
  +//if (SYSTEM_SEPARATOR == WINDOWS_SEPARATOR) {
  +//OTHER_SEPARATOR = UNIX_SEPARATOR;
  +//} else {
  +//OTHER_SEPARATOR = WINDOWS_SEPARATOR;
  +//}
  +//}
  +
   /**
* Instances should NOT be constructed in standard programming.
*/
   public FilenameUtils() { }
   
  +//
//---
  +///**
  +// * Checks if the character is a separator.
  +// * 
  +// * @param ch  the character to check
  +// * @return true if it is a separators
  +// */
  +//private static boolean isSeparator(char ch) {
  +//return (ch == UNIX_SEPARATOR) || (ch == WINDOWS_SEPARATOR);
  +//}
  +//
  +//
//---
  +///**
  +// * Normalizes a path, removing double and single dot path steps.
  +// * p
  +// * This method normalizes a path to a standard format.
  +// * The input may contain separators in either Unix or Windows format.
  +// * The output will contain separators in the format of the system.
  +// * p
  +// * A double slash will be merged to a single slash (thus UNC names are 
not handled).
  +// * A single dot path segment will be removed with no other effect.
  +// * A double dot will cause that path segment and the one before to be 
removed.
  +// * If the double dot has no parent path segment to work with, 
codenull/code
  +// * is returned.
  +// * pre
  +// * /foo//   -- /foo/
  +// * /foo/./  -- /foo/
  +// * /foo/../bar  -- /bar
  +// * /foo/../bar/ -- /bar/
  +// * /foo/../bar/../baz   -- /baz
  +// * //foo//./bar -- /foo/bar
  +// * /../ -- null
  +// * ../foo   -- null
  +// * foo/../../bar-- null
  +// * foo/../bar   -- bar
  +// * /pre
  +// *
  +// * @param path  the path to normalize, null returns null
  +// * @return the normalized String, or null if too many ..'s.
  +// * @todo prefixes for Windows
  +// */
  +//public static String normalize(String path) {
  +//if (path == null) {
  +//return null;
  +//}
  +//char[] array = path.toCharArray();
  +//int size = array.length;
  +//// fix separators
  +//for (int i = 0; i  array.length; i++) {
  +//if (array[i] == OTHER_SEPARATOR) {
  +//array[i] = SYSTEM_SEPARATOR;
  +//}
  +//}
  +//// adjoining slashes
  +//for (int i = 1; i  size; i++) {
  +//if (array[i] == SYSTEM_SEPARATOR  array[i - 1] == 
SYSTEM_SEPARATOR) {
  +//System.arraycopy(array, i, array, i - 1, size - i);
  +//size--;
  +//i--;
  +//}
  +//}
  +//// dot slash
  +//for (int i = 2; i  size; i++) {
  +//if (array[i] == SYSTEM_SEPARATOR  array[i - 1] == '.' 
  +//array[i - 2] == SYSTEM_SEPARATOR) {
  +//System.arraycopy(array, i, array, i - 2, size - i);
  +//size -=2;
  +//i--;
  +//}
  +//}
  +//// double dot slash
  +//outer:
  +//for (int i = 2; i  size; i++) {
  +//if (array[i] == SYSTEM_SEPARATOR  array[i - 

cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-10-30 Thread scolebourne
scolebourne2004/10/30 15:16:23

  Modified:io/src/test/org/apache/commons/io FilenameUtilsTestCase.java
   io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  Add separatorsToXxx methods to FilenameUtils
  
  Revision  ChangesPath
  1.13  +38 -1 
jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java
  
  Index: FilenameUtilsTestCase.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- FilenameUtilsTestCase.java24 Oct 2004 18:44:51 -  1.12
  +++ FilenameUtilsTestCase.java30 Oct 2004 22:16:23 -  1.13
  @@ -274,4 +274,41 @@
   }
   }
   
  +//---
  +public void testSeparatorsToUnix() {
  +assertEquals(null, FilenameUtils.separatorsToUnix(null));
  +assertEquals(/a/b/c, FilenameUtils.separatorsToUnix(/a/b/c));
  +assertEquals(/a/b/c.txt, FilenameUtils.separatorsToUnix(/a/b/c.txt));
  +assertEquals(/a/b/c, FilenameUtils.separatorsToUnix(/a/b\\c));
  +assertEquals(/a/b/c, FilenameUtils.separatorsToUnix(\\a\\b\\c));
  +assertEquals(D:/a/b/c, FilenameUtils.separatorsToUnix(D:\\a\\b\\c));
  +}
  +
  +public void testSeparatorsToWindows() {
  +assertEquals(null, FilenameUtils.separatorsToWindows(null));
  +assertEquals(\\a\\b\\c, FilenameUtils.separatorsToWindows(\\a\\b\\c));
  +assertEquals(\\a\\b\\c.txt, 
FilenameUtils.separatorsToWindows(\\a\\b\\c.txt));
  +assertEquals(\\a\\b\\c, FilenameUtils.separatorsToWindows(\\a\\b/c));
  +assertEquals(\\a\\b\\c, FilenameUtils.separatorsToWindows(/a/b/c));
  +assertEquals(D:\\a\\b\\c, FilenameUtils.separatorsToWindows(D:/a/b/c));
  +}
  +
  +public void testSeparatorsToSystem() {
  +if (File.separatorChar == '/') {
  +assertEquals(null, FilenameUtils.separatorsToSystem(null));
  +assertEquals(/a/b/c, FilenameUtils.separatorsToSystem(/a/b/c));
  +assertEquals(/a/b/c.txt, 
FilenameUtils.separatorsToSystem(/a/b/c.txt));
  +assertEquals(/a/b/c, FilenameUtils.separatorsToSystem(/a/b\\c));
  +assertEquals(/a/b/c, FilenameUtils.separatorsToSystem(\\a\\b\\c));
  +assertEquals(D:/a/b/c, 
FilenameUtils.separatorsToSystem(D:\\a\\b\\c));
  +} else {
  +assertEquals(null, FilenameUtils.separatorsToSystem(null));
  +assertEquals(\\a\\b\\c, 
FilenameUtils.separatorsToSystem(\\a\\b\\c));
  +assertEquals(\\a\\b\\c.txt, 
FilenameUtils.separatorsToSystem(\\a\\b\\c.txt));
  +assertEquals(\\a\\b\\c, FilenameUtils.separatorsToSystem(\\a\\b/c));
  +assertEquals(\\a\\b\\c, FilenameUtils.separatorsToSystem(/a/b/c));
  +assertEquals(D:\\a\\b\\c, 
FilenameUtils.separatorsToSystem(D:/a/b/c));
  +}
  +}
  +
   }
  
  
  
  1.19  +65 -1 
jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java
  
  Index: FilenameUtils.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- FilenameUtils.java29 Oct 2004 21:38:49 -  1.18
  +++ FilenameUtils.java30 Oct 2004 22:16:23 -  1.19
  @@ -55,6 +55,7 @@
* @author Matthew Hawthorne
* @author Martin Cooper
* @author a href=mailto:[EMAIL PROTECTED]Jeremias Maerki/a
  + * @author Stephen Colebourne
* @version $Id$
* @since Commons IO 1.1
*/
  @@ -66,6 +67,21 @@
   private static final char INTERNAL_SEPARATOR_CHAR = '/';
   
   /**
  + * The Unix separator character.
  + */
  +private static final char UNIX_SEPARATOR = '/';
  +
  +/**
  + * The Windows separator character.
  + */
  +private static final char WINDOWS_SEPARATOR = '\\';
  +
  +/**
  + * The system separator character.
  + */
  +private static final char SYSTEM_SEPARATOR = File.separatorChar;
  +
  +/**
* Standard separator string used when internalizing paths.
*/
   // KILL? It's here to match symmetry of File.separator and to promote its use
  @@ -472,6 +488,54 @@
   if (INTERNAL_SEPARATOR_CHAR != File.separatorChar) {
   path = path.replace(INTERNAL_SEPARATOR_CHAR, File.separatorChar);
   }
  +return path;
  +}
  +
  +//---
  +/**
  + * Convert all separators to the Unix separator of forward slash.
  + * 
  + * @param path  the path to be changed, null ignored
  + * 

cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-10-30 Thread scolebourne
scolebourne2004/10/30 15:41:57

  Modified:io/src/test/org/apache/commons/io FilenameUtilsTestCase.java
   io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  Add indexOfXxx methods to FilenameUtils
  
  Revision  ChangesPath
  1.14  +20 -7 
jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java
  
  Index: FilenameUtilsTestCase.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- FilenameUtilsTestCase.java30 Oct 2004 22:16:23 -  1.13
  +++ FilenameUtilsTestCase.java30 Oct 2004 22:41:56 -  1.14
  @@ -114,12 +114,6 @@
   assertEquals(C:\\a + File.separator + d, 
FilenameUtils.catPath(C:\\a\\b\\c, ../d));
   }
   
  -public void testIndexOfLastPathSeparator() {
  -assertEquals(-1, 
FilenameUtils.indexOfLastPathSeparator(noseperator.inthispath));
  -assertEquals(3, FilenameUtils.indexOfLastPathSeparator(a/b/c));
  -assertEquals(3, FilenameUtils.indexOfLastPathSeparator(a\\b\\c));
  -}
  -
   // resolveFile
   
   public void testResolveFileDotDot() throws Exception {
  @@ -309,6 +303,25 @@
   assertEquals(\\a\\b\\c, FilenameUtils.separatorsToSystem(/a/b/c));
   assertEquals(D:\\a\\b\\c, 
FilenameUtils.separatorsToSystem(D:/a/b/c));
   }
  +}
  +
  +//---
  +public void testIndexOfLastSeparator() {
  +assertEquals(-1, FilenameUtils.indexOfLastSeparator(null));
  +assertEquals(-1, 
FilenameUtils.indexOfLastSeparator(noseperator.inthispath));
  +assertEquals(3, FilenameUtils.indexOfLastSeparator(a/b/c));
  +assertEquals(3, FilenameUtils.indexOfLastSeparator(a\\b\\c));
  +}
  +
  +public void testIndexOfExtension() {
  +assertEquals(-1, FilenameUtils.indexOfExtension(null));
  +assertEquals(-1, FilenameUtils.indexOfExtension(file));
  +assertEquals(4, FilenameUtils.indexOfExtension(file.txt));
  +assertEquals(13, FilenameUtils.indexOfExtension(a.txt/b.txt/c.txt));
  +assertEquals(-1, FilenameUtils.indexOfExtension(a/b/c));
  +assertEquals(-1, FilenameUtils.indexOfExtension(a\\b\\c));
  +assertEquals(-1, FilenameUtils.indexOfExtension(a/b.notextension/c));
  +assertEquals(-1, FilenameUtils.indexOfExtension(a\\b.notextension\\c));
   }
   
   }
  
  
  
  1.20  +63 -31
jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java
  
  Index: FilenameUtils.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- FilenameUtils.java30 Oct 2004 22:16:23 -  1.19
  +++ FilenameUtils.java30 Oct 2004 22:41:57 -  1.20
  @@ -19,9 +19,16 @@
   import java.io.IOException;
   
   /**
  - * Common [EMAIL PROTECTED] java.io.File} manipulation routines through
  - * use of a filename/path.
  - *
  + * Utility class that provides methods to manipulate filenames and filepaths.
  + * p
  + * This class defines three basic components within a filename (example 
C:\dev\file.txt):
  + * ul
  + * lithe path - C:\dev
  + * lithe name - file.txt
  + * lithe extension - txt
  + * /ul
  + * The class only supports Unix and Windows style names.
  + * 
* h3Path-related methods/h3
*
* pMethods exist to retrieve the components of a typical file path. For
  @@ -67,6 +74,11 @@
   private static final char INTERNAL_SEPARATOR_CHAR = '/';
   
   /**
  + * The extension separator character.
  + */
  +private static final char EXTENSION_SEPARATOR = '.';
  +
  +/**
* The Unix separator character.
*/
   private static final char UNIX_SEPARATOR = '/';
  @@ -356,14 +368,14 @@
// TODO UNIX/Windows only. Is this a problem?
   public static String catPath(String lookupPath, String path) {
   // Cut off the last slash and everything beyond
  -int index = indexOfLastPathSeparator(lookupPath);
  +int index = indexOfLastSeparator(lookupPath);
   String lookup = lookupPath.substring(0, index);
   String pth = path;
   
   // Deal with .. by chopping dirs off the lookup path
   while (pth.startsWith(../) || pth.startsWith(..\\)) {
   if (lookup.length()  0) {
  -index = indexOfLastPathSeparator(lookup);
  +index = indexOfLastSeparator(lookup);
   lookup = lookup.substring(0, index);
   } else {
   // More ..'s than dirs, return null
  @@ -378,22 +390,6 

cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-10-30 Thread scolebourne
scolebourne2004/10/30 15:43:21

  Modified:io/src/test/org/apache/commons/io FilenameUtilsTestCase.java
   io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  Remove File based methods as this is a Filename class
  
  Revision  ChangesPath
  1.15  +1 -9  
jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java
  
  Index: FilenameUtilsTestCase.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- FilenameUtilsTestCase.java30 Oct 2004 22:41:56 -  1.14
  +++ FilenameUtilsTestCase.java30 Oct 2004 22:43:21 -  1.15
  @@ -75,14 +75,6 @@
   FileUtils.deleteDirectory(getTestDirectory());
   }
   
  -// mkdir
  -
  -public void testMkdir() {
  -File dir = new File(getTestDirectory(), testdir);
  -FilenameUtils.mkdir(dir.getAbsolutePath());
  -dir.deleteOnExit();
  -}
  -
   // removePath
   
   public void testRemovePath() {
  
  
  
  1.21  +1 -39 
jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java
  
  Index: FilenameUtils.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- FilenameUtils.java30 Oct 2004 22:41:57 -  1.20
  +++ FilenameUtils.java30 Oct 2004 22:43:21 -  1.21
  @@ -105,44 +105,6 @@
   public FilenameUtils() { }
   
   /**
  - * Check if a file exits.
  - *
  - * @param fileName The name of the file to check.
  - * @return true if file exists.
  - */
  -// KILL: Not filename based
  -public static boolean fileExists(String fileName) {
  -File file = new File(fileName);
  -return file.exists();
  -}
  -
  -
  -
  -/**
  - * Deletes a file.
  - *
  - * @param fileName The name of the file to delete.
  - */
  -// KILL: Not filename based
  -public static void fileDelete(String fileName) {
  -File file = new File(fileName);
  -file.delete();
  -}
  -
  -/**
  - * Simple way to make a directory. It also creates the parent directories
  - * if necessary.
  - * @param dir directory to create
  - */
  -// KILL: Not filename based
  -public static void mkdir(String dir) {
  -File file = new File(dir);
  -if (!file.exists()) {
  -file.mkdirs();
  -}
  -}
  -
  -/**
* Remove extension from filename.
* ie
* pre
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-10-30 Thread scolebourne
scolebourne2004/10/30 16:12:18

  Modified:io/src/test/org/apache/commons/io FilenameUtilsTestCase.java
   io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  Refactor getXxx methods in FilenameUtils
  
  Revision  ChangesPath
  1.16  +36 -53
jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java
  
  Index: FilenameUtilsTestCase.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- FilenameUtilsTestCase.java30 Oct 2004 22:43:21 -  1.15
  +++ FilenameUtilsTestCase.java30 Oct 2004 23:12:18 -  1.16
  @@ -75,24 +75,6 @@
   FileUtils.deleteDirectory(getTestDirectory());
   }
   
  -// removePath
  -
  -public void testRemovePath() {
  -String fileName =
  -FilenameUtils.removePath(
  -new File(getTestDirectory(), getName()).getAbsolutePath());
  -assertEquals(getName(), fileName);
  -}
  -
  -// getPath
  -
  -public void testGetPath() {
  -String fileName =
  -FilenameUtils.getPath(
  -new File(getTestDirectory(), getName()).getAbsolutePath());
  -assertEquals(getTestDirectory().getAbsolutePath(), fileName);
  -}
  -
   // catPath
   
   public void testCatPath() {
  @@ -189,40 +171,6 @@
   return sb.toString();
   }
   
  -public void testGetExtension() {
  -String[][] tests = {
  -{ filename.ext, ext }, 
  -{ README,  }, 
  -{ domain.dot.com, com }, 
  -{ image.jpeg, jpeg },
  -{ a.b/c,  },
  -{ a.b/c.txt, txt },
  -{ a/b/c,  },
  -};
  -for (int i = 0; i  tests.length; i++) {
  -assertEquals(tests[i][1], FilenameUtils.getExtension(tests[i][0]));
  -//assertEquals(tests[i][1], FilenameUtils.extension(tests[i][0]));
  -}
  -}
  -
  -public void testGetExtensionWithPaths() {
  -String[][] testsWithPaths =
  -{ { /tmp/foo/filename.ext, ext }, {
  -C:\\temp\\foo\\filename.ext, ext }, {
  -/tmp/foo.bar/filename.ext, ext }, {
  -C:\\temp\\foo.bar\\filename.ext, ext }, {
  -/tmp/foo.bar/README,  }, {
  -C:\\temp\\foo.bar\\README,  }, {
  -../filename.ext, ext }
  -};
  -for (int i = 0; i  testsWithPaths.length; i++) {
  -assertEquals(
  -testsWithPaths[i][1],
  -FilenameUtils.getExtension(testsWithPaths[i][0]));
  -//assertEquals(testsWithPaths[i][1], 
FilenameUtils.extension(testsWithPaths[i][0]));
  -}
  -}
  -
   public void testRemoveExtension() {
   String[][] tests = { 
   { filename.ext, filename }, 
  @@ -314,6 +262,41 @@
   assertEquals(-1, FilenameUtils.indexOfExtension(a\\b\\c));
   assertEquals(-1, FilenameUtils.indexOfExtension(a/b.notextension/c));
   assertEquals(-1, FilenameUtils.indexOfExtension(a\\b.notextension\\c));
  +}
  +
  +//---
  +public void testGetPath() {
  +assertEquals(null, FilenameUtils.getPath(null));
  +assertEquals(, FilenameUtils.getPath(noseperator.inthispath));
  +assertEquals(a/b, FilenameUtils.getPath(a/b/c.txt));
  +assertEquals(a/b, FilenameUtils.getPath(a/b/c));
  +assertEquals(a/b/c, FilenameUtils.getPath(a/b/c/));
  +assertEquals(a\\b, FilenameUtils.getPath(a\\b\\c));
  +}
  +
  +public void testRemovePath() {
  +assertEquals(null, FilenameUtils.getName(null));
  +assertEquals(noseperator.inthispath, 
FilenameUtils.getName(noseperator.inthispath));
  +assertEquals(c.txt, FilenameUtils.getName(a/b/c.txt));
  +assertEquals(c, FilenameUtils.getName(a/b/c));
  +assertEquals(, FilenameUtils.getName(a/b/c/));
  +assertEquals(c, FilenameUtils.getName(a\\b\\c));
  +}
  +
  +public void testGetExtension() {
  +assertEquals(null, FilenameUtils.getExtension(null));
  +assertEquals(ext, FilenameUtils.getExtension(file.ext));
  +assertEquals(, FilenameUtils.getExtension(README));
  +assertEquals(com, FilenameUtils.getExtension(domain.dot.com));
  +assertEquals(jpeg, FilenameUtils.getExtension(image.jpeg));
  +assertEquals(, FilenameUtils.getExtension(a.b/c));
  +assertEquals(txt, FilenameUtils.getExtension(a.b/c.txt));
  +assertEquals(, FilenameUtils.getExtension(a/b/c));
  +assertEquals(, FilenameUtils.getExtension(a.b\\c));
  +assertEquals(txt, 

cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-10-30 Thread scolebourne
scolebourne2004/10/30 16:23:54

  Modified:io/src/test/org/apache/commons/io FilenameUtilsTestCase.java
   io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  Update removeExtension method and remove unused code from FilenameUtils
  
  Revision  ChangesPath
  1.17  +18 -39
jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java
  
  Index: FilenameUtilsTestCase.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- FilenameUtilsTestCase.java30 Oct 2004 23:12:18 -  1.16
  +++ FilenameUtilsTestCase.java30 Oct 2004 23:23:53 -  1.17
  @@ -171,43 +171,6 @@
   return sb.toString();
   }
   
  -public void testRemoveExtension() {
  -String[][] tests = { 
  -{ filename.ext, filename }, 
  -{ first.second.third.ext, first.second.third }, 
  -{ README, README }, 
  -{ domain.dot.com, domain.dot }, 
  -{ image.jpeg, image },
  -{ a.b/c, a.b/c },
  -{ a.b/c.txt, a.b/c },
  -{ a/b/c, a/b/c },
  -};
  -
  -for (int i = 0; i  tests.length; i++) {
  -assertEquals(tests[i][1], FilenameUtils.removeExtension(tests[i][0]));
  -//assertEquals(tests[i][1], FilenameUtils.basename(tests[i][0]));
  -}
  -}
  -
  -public void testRemoveExtensionWithPaths() {
  -String[][] testsWithPaths =
  -{ { /tmp/foo/filename.ext, /tmp/foo/filename }, {
  -C:\\temp\\foo\\filename.ext, C:\\temp\\foo\\filename }, {
  -/tmp/foo.bar/filename.ext, /tmp/foo.bar/filename }, {
  -C:\\temp\\foo.bar\\filename.ext, C:\\temp\\foo.bar\\filename }, 
{
  -/tmp/foo.bar/README, /tmp/foo.bar/README }, {
  -C:\\temp\\foo.bar\\README, C:\\temp\\foo.bar\\README }, {
  -../filename.ext, ../filename }
  -};
  -
  -for (int i = 0; i  testsWithPaths.length; i++) {
  -assertEquals(
  -testsWithPaths[i][1],
  -FilenameUtils.removeExtension(testsWithPaths[i][0]));
  -//assertEquals(testsWithPaths[i][1], 
FilenameUtils.basename(testsWithPaths[i][0]));
  -}
  -}
  -
   //---
   public void testSeparatorsToUnix() {
   assertEquals(null, FilenameUtils.separatorsToUnix(null));
  @@ -274,7 +237,7 @@
   assertEquals(a\\b, FilenameUtils.getPath(a\\b\\c));
   }
   
  -public void testRemovePath() {
  +public void testGetName() {
   assertEquals(null, FilenameUtils.getName(null));
   assertEquals(noseperator.inthispath, 
FilenameUtils.getName(noseperator.inthispath));
   assertEquals(c.txt, FilenameUtils.getName(a/b/c.txt));
  @@ -297,6 +260,22 @@
   assertEquals(, FilenameUtils.getExtension(a\\b\\c));
   assertEquals(, FilenameUtils.getExtension(C:\\temp\\foo.bar\\README));
   assertEquals(ext, FilenameUtils.getExtension(../filename.ext));
  +}
  +
  +public void testRemoveExtension() {
  +assertEquals(null, FilenameUtils.removeExtension(null));
  +assertEquals(file, FilenameUtils.removeExtension(file.ext));
  +assertEquals(README, FilenameUtils.removeExtension(README));
  +assertEquals(domain.dot, FilenameUtils.removeExtension(domain.dot.com));
  +assertEquals(image, FilenameUtils.removeExtension(image.jpeg));
  +assertEquals(a.b/c, FilenameUtils.removeExtension(a.b/c));
  +assertEquals(a.b/c, FilenameUtils.removeExtension(a.b/c.txt));
  +assertEquals(a/b/c, FilenameUtils.removeExtension(a/b/c));
  +assertEquals(a.b\\c, FilenameUtils.removeExtension(a.b\\c));
  +assertEquals(a.b\\c, FilenameUtils.removeExtension(a.b\\c.txt));
  +assertEquals(a\\b\\c, FilenameUtils.removeExtension(a\\b\\c));
  +assertEquals(C:\\temp\\foo.bar\\README, 
FilenameUtils.removeExtension(C:\\temp\\foo.bar\\README));
  +assertEquals(../filename, 
FilenameUtils.removeExtension(../filename.ext));
   }
   
   }
  
  
  
  1.23  +33 -64
jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java
  
  Index: FilenameUtils.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- FilenameUtils.java30 Oct 2004 23:12:18 -  1.22
  +++ FilenameUtils.java30 Oct 2004 23:23:54 -  1.23
  @@ -69,11 +69,6 @@
   public 

cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-10-30 Thread scolebourne
scolebourne2004/10/30 16:59:17

  Modified:io/src/test/org/apache/commons/io FilenameUtilsTestCase.java
   io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  Add isExtension methods to test for matching extensions in FilenameUtils
  
  Revision  ChangesPath
  1.18  +132 -10   
jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java
  
  Index: FilenameUtilsTestCase.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/test/org/apache/commons/io/FilenameUtilsTestCase.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- FilenameUtilsTestCase.java30 Oct 2004 23:23:53 -  1.17
  +++ FilenameUtilsTestCase.java30 Oct 2004 23:59:17 -  1.18
  @@ -17,13 +17,16 @@
   
   import java.io.File;
   import java.io.IOException;
  -
  -import org.apache.commons.io.testtools.FileBasedTestCase;
  +import java.util.ArrayList;
  +import java.util.Arrays;
  +import java.util.Collection;
   
   import junit.framework.Test;
   import junit.framework.TestSuite;
   import junit.textui.TestRunner;
   
  +import org.apache.commons.io.testtools.FileBasedTestCase;
  +
   /**
* This is used to test FilenameUtils for correctness.
*
  @@ -34,6 +37,8 @@
* @see FilenameUtils
*/
   public class FilenameUtilsTestCase extends FileBasedTestCase {
  +
  +private static final boolean WINDOWS = (File.separatorChar == '\\');
   
   private File testFile1;
   private File testFile2;
  @@ -191,20 +196,20 @@
   }
   
   public void testSeparatorsToSystem() {
  -if (File.separatorChar == '/') {
  -assertEquals(null, FilenameUtils.separatorsToSystem(null));
  -assertEquals(/a/b/c, FilenameUtils.separatorsToSystem(/a/b/c));
  -assertEquals(/a/b/c.txt, 
FilenameUtils.separatorsToSystem(/a/b/c.txt));
  -assertEquals(/a/b/c, FilenameUtils.separatorsToSystem(/a/b\\c));
  -assertEquals(/a/b/c, FilenameUtils.separatorsToSystem(\\a\\b\\c));
  -assertEquals(D:/a/b/c, 
FilenameUtils.separatorsToSystem(D:\\a\\b\\c));
  -} else {
  +if (WINDOWS) {
   assertEquals(null, FilenameUtils.separatorsToSystem(null));
   assertEquals(\\a\\b\\c, 
FilenameUtils.separatorsToSystem(\\a\\b\\c));
   assertEquals(\\a\\b\\c.txt, 
FilenameUtils.separatorsToSystem(\\a\\b\\c.txt));
   assertEquals(\\a\\b\\c, FilenameUtils.separatorsToSystem(\\a\\b/c));
   assertEquals(\\a\\b\\c, FilenameUtils.separatorsToSystem(/a/b/c));
   assertEquals(D:\\a\\b\\c, 
FilenameUtils.separatorsToSystem(D:/a/b/c));
  +} else {
  +assertEquals(null, FilenameUtils.separatorsToSystem(null));
  +assertEquals(/a/b/c, FilenameUtils.separatorsToSystem(/a/b/c));
  +assertEquals(/a/b/c.txt, 
FilenameUtils.separatorsToSystem(/a/b/c.txt));
  +assertEquals(/a/b/c, FilenameUtils.separatorsToSystem(/a/b\\c));
  +assertEquals(/a/b/c, FilenameUtils.separatorsToSystem(\\a\\b\\c));
  +assertEquals(D:/a/b/c, 
FilenameUtils.separatorsToSystem(D:\\a\\b\\c));
   }
   }
   
  @@ -276,6 +281,123 @@
   assertEquals(a\\b\\c, FilenameUtils.removeExtension(a\\b\\c));
   assertEquals(C:\\temp\\foo.bar\\README, 
FilenameUtils.removeExtension(C:\\temp\\foo.bar\\README));
   assertEquals(../filename, 
FilenameUtils.removeExtension(../filename.ext));
  +}
  +
  +//---
  +public void testIsExtension() {
  +assertEquals(false, FilenameUtils.isExtension(null, (String) null));
  +assertEquals(false, FilenameUtils.isExtension(file.txt, (String) null));
  +assertEquals(false, FilenameUtils.isExtension(file.txt, ));
  +assertEquals(true, FilenameUtils.isExtension(file.txt, txt));
  +assertEquals(false, FilenameUtils.isExtension(file.txt, rtf));
  +
  +assertEquals(false, FilenameUtils.isExtension(a/b/file.txt, (String) 
null));
  +assertEquals(false, FilenameUtils.isExtension(a/b/file.txt, ));
  +assertEquals(true, FilenameUtils.isExtension(a/b/file.txt, txt));
  +assertEquals(false, FilenameUtils.isExtension(a/b/file.txt, rtf));
  +
  +assertEquals(false, FilenameUtils.isExtension(a.b/file.txt, (String) 
null));
  +assertEquals(false, FilenameUtils.isExtension(a.b/file.txt, ));
  +assertEquals(true, FilenameUtils.isExtension(a.b/file.txt, txt));
  +assertEquals(false, FilenameUtils.isExtension(a.b/file.txt, rtf));
  +
  +assertEquals(false, FilenameUtils.isExtension(a\\b\\file.txt, (String) 
null));
  +assertEquals(false, FilenameUtils.isExtension(a\\b\\file.txt, ));
  +assertEquals(true, 

cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-10-29 Thread bayard
bayard  2004/10/29 11:28:03

  Modified:io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  not a style we use
  
  Revision  ChangesPath
  1.15  +3 -3  
jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java
  
  Index: FilenameUtils.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- FilenameUtils.java25 Oct 2004 23:27:41 -  1.14
  +++ FilenameUtils.java29 Oct 2004 18:28:03 -  1.15
  @@ -123,7 +123,7 @@
* @param filename the filename
* @return the filename minus extension
*/
  -public static String removeExtension(final String filename) {
  +public static String removeExtension(String filename) {
   String ext = getExtension(filename);
   int index = ext.length();
   if (index  0) {
  @@ -149,7 +149,7 @@
* @param filename the filename to retrieve the extension of.
* @return the extension of filename or an empty string if none exists.
*/
  -public static String getExtension(final String filename) {
  +public static String getExtension(String filename) {
   String suffix = ;
   String shortFilename = filename;
   String ifilename = internalize(filename);
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-10-29 Thread bayard
bayard  2004/10/29 11:53:56

  Modified:io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  added an initial set of TODOs
  
  Revision  ChangesPath
  1.16  +15 -1 
jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java
  
  Index: FilenameUtils.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- FilenameUtils.java29 Oct 2004 18:28:03 -  1.15
  +++ FilenameUtils.java29 Oct 2004 18:53:56 -  1.16
  @@ -68,6 +68,7 @@
   /**
* Standard separator string used when internalizing paths.
*/
  +// KILL
   private static final String INTERNAL_SEPARATOR = /;
   
   /**
  @@ -81,6 +82,7 @@
* @param fileName The name of the file to check.
* @return true if file exists.
*/
  +// KILL: Not filename based
   public static boolean fileExists(String fileName) {
   File file = new File(fileName);
   return file.exists();
  @@ -93,6 +95,7 @@
*
* @param fileName The name of the file to delete.
*/
  +// KILL: Not filename based
   public static void fileDelete(String fileName) {
   File file = new File(fileName);
   file.delete();
  @@ -103,6 +106,7 @@
* if necessary.
* @param dir directory to create
*/
  +// KILL: Not filename based
   public static void mkdir(String dir) {
   File file = new File(dir);
   if (!file.exists()) {
  @@ -180,6 +184,7 @@
* @param filepath the filepath
* @return the filename minus path
*/
  +// KILL? Just use StringUtils?
   public static String removePath(String filepath) {
   return removePath(filepath, File.separatorChar);
   }
  @@ -196,6 +201,7 @@
* @param fileSeparatorChar the file separator character to use
* @return the filename minus path
*/
  +// KILL: Why allow the char to be specified?
   public static String removePath(
   String filepath,
   char fileSeparatorChar) {
  @@ -220,6 +226,7 @@
* @param filepath the filepath
* @return the filename minus path
*/
  +// KILL? Just use StringUtils?
   public static String getPath(String filepath) {
   return getPath(filepath, File.separatorChar);
   }
  @@ -236,6 +243,7 @@
* @param fileSeparatorChar the file separator character to use
* @return the filename minus path
*/
  +// KILL: Why allow the char to be specified?
   public static String getPath(
   String filepath,
   char fileSeparatorChar) {
  @@ -267,6 +275,7 @@
* @param path the path to normalize
* @return the normalized String, or codenull/code if too many ..'s.
*/
  +// TODO: Make this non-unix specific
   public static String normalize(String path) {
   String normalized = path;
   // Resolve occurrences of // in the normalized path
  @@ -332,6 +341,7 @@
* @param path path the second path to attach to the first
* @return The concatenated paths, or null if error occurs
*/
  +// TODO: UNIX/Windows only. Is this a problem?
   public static String catPath(String lookupPath, String path) {
   // Cut off the last slash and everything beyond
   int index = indexOfLastPathSeparator(lookupPath);
  @@ -364,6 +374,7 @@
* @return The index of the last 'path separator' character, or -1 if there
* is no such character.
*/
  +// KILL: Inline into above method
   public static int indexOfLastPathSeparator(String path) {
   int lastUnixPos = path.lastIndexOf('/');
   int lastWindowsPos = path.lastIndexOf('\\');
  @@ -381,6 +392,7 @@
* @param filename Absolute or relative file path to resolve.
* @return The canonical codeFile/code of codefilename/code.
*/
  +// TODO: Decide whether this is worth keeping?
   public static File resolveFile(File baseFile, String filename) {
   String filenm = filename;
   if ('/' != File.separatorChar) {
  @@ -448,6 +460,7 @@
* @param path The path to be internalized.
* @return The internalized path.
*/
  +// KILL: Inline into the one place this is used
   private static String internalize(String path) {
   return path.replace('\\', INTERNAL_SEPARATOR_CHAR);
   }
  @@ -458,6 +471,7 @@
* @param path The path to be externalized.
* @return The externalized path.
*/
  +// KILL: Nothing uses this
   private static String externalize(String path) {
   if (INTERNAL_SEPARATOR_CHAR != File.separatorChar) {
   path = path.replace(INTERNAL_SEPARATOR_CHAR, 

cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-10-29 Thread bayard
bayard  2004/10/29 14:38:49

  Modified:io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  updated the KILL notes
  
  Revision  ChangesPath
  1.18  +8 -12 
jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java
  
  Index: FilenameUtils.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- FilenameUtils.java29 Oct 2004 21:34:56 -  1.17
  +++ FilenameUtils.java29 Oct 2004 21:38:49 -  1.18
  @@ -68,7 +68,7 @@
   /**
* Standard separator string used when internalizing paths.
*/
  -// KILL
  +// KILL? It's here to match symmetry of File.separator and to promote its use
   private static final String INTERNAL_SEPARATOR = /;
   
   /**
  @@ -202,9 +202,7 @@
* @return the filename minus path
*/
   // KILL: Why allow the char to be specified?
  -public static String removePath(
  -String filepath,
  -char fileSeparatorChar) {
  +public static String removePath( String filepath, char fileSeparatorChar) {
   int index = filepath.lastIndexOf(fileSeparatorChar);
   
   if (-1 == index) {
  @@ -244,9 +242,7 @@
* @return the filename minus path
*/
   // KILL: Why allow the char to be specified?
  -public static String getPath(
  -String filepath,
  -char fileSeparatorChar) {
  +public static String getPath( String filepath, char fileSeparatorChar) {
   int index = filepath.lastIndexOf(fileSeparatorChar);
   if (-1 == index) {
   return ;
  @@ -340,8 +336,8 @@
* @param lookupPath the base path to attach to
* @param path path the second path to attach to the first
* @return The concatenated paths, or null if error occurs
  - * @todo UNIX/Windows only. Is this a problem?
*/
  + // TODO UNIX/Windows only. Is this a problem?
   public static String catPath(String lookupPath, String path) {
   // Cut off the last slash and everything beyond
   int index = indexOfLastPathSeparator(lookupPath);
  @@ -391,8 +387,8 @@
* codefilename/code is relative.
* @param filename Absolute or relative file path to resolve.
* @return The canonical codeFile/code of codefilename/code.
  - * @todo Decide whether this is worth keeping?
*/
  + // KILL? Decide whether this is worth keeping?
   public static File resolveFile(File baseFile, String filename) {
   String filenm = filename;
   if ('/' != File.separatorChar) {
  @@ -460,7 +456,7 @@
* @param path The path to be internalized.
* @return The internalized path.
*/
  -// KILL: Inline into the one place this is used
  +// KILL: Inline into the one place this is used?
   private static String internalize(String path) {
   return path.replace('\\', INTERNAL_SEPARATOR_CHAR);
   }
  @@ -471,7 +467,7 @@
* @param path The path to be externalized.
* @return The externalized path.
*/
  -// KILL: Nothing uses this
  +// KILL: Nothing uses this. It exists as symmetry of internalize and to promote 
its use
   private static String externalize(String path) {
   if (INTERNAL_SEPARATOR_CHAR != File.separatorChar) {
   path = path.replace(INTERNAL_SEPARATOR_CHAR, File.separatorChar);
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-10-25 Thread scolebourne
scolebourne2004/10/25 16:27:41

  Modified:io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  Remove deprecated method for first release
  
  Revision  ChangesPath
  1.14  +2 -28 
jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java
  
  Index: FilenameUtils.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- FilenameUtils.java24 Oct 2004 18:34:23 -  1.13
  +++ FilenameUtils.java25 Oct 2004 23:27:41 -  1.14
  @@ -56,6 +56,7 @@
* @author Martin Cooper
* @author a href=mailto:[EMAIL PROTECTED]Jeremias Maerki/a
* @version $Id$
  + * @since Commons IO 1.1
*/
   public class FilenameUtils {
   
  @@ -462,33 +463,6 @@
   path = path.replace(INTERNAL_SEPARATOR_CHAR, File.separatorChar);
   }
   return path;
  -}
  -
  -// DEPRECATED. Though no replacement exists.
  -
  -/**
  - * Returns the filename portion of a file specification string.
  - * Matches the equally named unix command.
  - * @param filename filename to inspect
  - * @param suffix additional remaining portion of name that if matches will
  - * be removed
  - * @return The filename string without the suffix.
  - * @deprecated This method will be deleted.
  - */
  -public static String basename(String filename, String suffix) {
  -int i = filename.lastIndexOf(File.separator) + 1;
  -int lastDot =
  -((suffix != null)  (suffix.length()  0))
  -? filename.lastIndexOf(suffix)
  -: -1;
  -
  -if (lastDot = 0) {
  -return filename.substring(i, lastDot);
  -} else if (i  0) {
  -return filename.substring(i);
  -} else {
  -return filename; // else returns all (no path and no extension)
  -}
   }
   
   }
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-10-25 Thread Martin Cooper
I was looking at that method yesterday and wondering why it was
deprecated. Anyone know?

--
Martin Cooper


On 25 Oct 2004 23:27:42 -, [EMAIL PROTECTED]
[EMAIL PROTECTED] wrote:
 scolebourne2004/10/25 16:27:41
 
  Modified:io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  Remove deprecated method for first release
 
  Revision  ChangesPath
  1.14  +2 -28 
 jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java
 
  Index: FilenameUtils.java
  ===
  RCS file: 
 /home/cvs/jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- FilenameUtils.java24 Oct 2004 18:34:23 -  1.13
  +++ FilenameUtils.java25 Oct 2004 23:27:41 -  1.14
  @@ -56,6 +56,7 @@
* @author Martin Cooper
* @author a href=mailto:[EMAIL PROTECTED]Jeremias Maerki/a
* @version $Id$
  + * @since Commons IO 1.1
*/
   public class FilenameUtils {
 
  @@ -462,33 +463,6 @@
   path = path.replace(INTERNAL_SEPARATOR_CHAR, File.separatorChar);
   }
   return path;
  -}
  -
  -// DEPRECATED. Though no replacement exists.
  -
  -/**
  - * Returns the filename portion of a file specification string.
  - * Matches the equally named unix command.
  - * @param filename filename to inspect
  - * @param suffix additional remaining portion of name that if matches will
  - * be removed
  - * @return The filename string without the suffix.
  - * @deprecated This method will be deleted.
  - */
  -public static String basename(String filename, String suffix) {
  -int i = filename.lastIndexOf(File.separator) + 1;
  -int lastDot =
  -((suffix != null)  (suffix.length()  0))
  -? filename.lastIndexOf(suffix)
  -: -1;
  -
  -if (lastDot = 0) {
  -return filename.substring(i, lastDot);
  -} else if (i  0) {
  -return filename.substring(i);
  -} else {
  -return filename; // else returns all (no path and no extension)
  -}
   }
 
   }
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-10-25 Thread Stephen Colebourne
I reckoned removePath() was the same, as the comment referred to basepath.
Stephen

- Original Message -
From: Martin Cooper [EMAIL PROTECTED]
 I was looking at that method yesterday and wondering why it was
 deprecated. Anyone know?

 --
 Martin Cooper


 On 25 Oct 2004 23:27:42 -, [EMAIL PROTECTED]
 [EMAIL PROTECTED] wrote:
  scolebourne2004/10/25 16:27:41
 
   Modified:io/src/java/org/apache/commons/io FilenameUtils.java
   Log:
   Remove deprecated method for first release
 
   Revision  ChangesPath
   1.14  +2 -28
jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java
 
   Index: FilenameUtils.java
   ===
   RCS file:
/home/cvs/jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.ja
va,v
   retrieving revision 1.13
   retrieving revision 1.14
   diff -u -r1.13 -r1.14
   --- FilenameUtils.java24 Oct 2004 18:34:23 -  1.13
   +++ FilenameUtils.java25 Oct 2004 23:27:41 -  1.14
   @@ -56,6 +56,7 @@
 * @author Martin Cooper
 * @author a href=mailto:[EMAIL PROTECTED]Jeremias Maerki/a
 * @version $Id$
   + * @since Commons IO 1.1
 */
public class FilenameUtils {
 
   @@ -462,33 +463,6 @@
path = path.replace(INTERNAL_SEPARATOR_CHAR,
File.separatorChar);
}
return path;
   -}
   -
   -// DEPRECATED. Though no replacement exists.
   -
   -/**
   - * Returns the filename portion of a file specification string.
   - * Matches the equally named unix command.
   - * @param filename filename to inspect
   - * @param suffix additional remaining portion of name that if
matches will
   - * be removed
   - * @return The filename string without the suffix.
   - * @deprecated This method will be deleted.
   - */
   -public static String basename(String filename, String suffix) {
   -int i = filename.lastIndexOf(File.separator) + 1;
   -int lastDot =
   -((suffix != null)  (suffix.length()  0))
   -? filename.lastIndexOf(suffix)
   -: -1;
   -
   -if (lastDot = 0) {
   -return filename.substring(i, lastDot);
   -} else if (i  0) {
   -return filename.substring(i);
   -} else {
   -return filename; // else returns all (no path and no
extension)
   -}
}
 
}
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 

 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-06-12 Thread bayard
bayard  2004/06/12 22:17:11

  Modified:io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  removed deprecated methods that are not intended to ever be released
  
  Revision  ChangesPath
  1.11  +2 -141
jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java
  
  Index: FilenameUtils.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- FilenameUtils.java13 Jun 2004 05:13:57 -  1.10
  +++ FilenameUtils.java13 Jun 2004 05:17:11 -  1.11
  @@ -414,22 +414,7 @@
   }
   
   
  -
  -// 
  -// Deprecated methods
  -// 
  -
  -/**
  - * Returns the filename portion of a file specification string.
  - * Matches the equally named unix command.
  - * @param filename filename to inspect
  - * @return The filename string without extension.
  - * @deprecated This method will be deleted before a 1.0 release
  - * TODO DELETE before 1.0
  - */
  -public static String basename(String filename) {
  -return basename(filename, extension(filename));
  -}
  +// DEPRECATED. Though no replacement exists.
   
   /**
* Returns the filename portion of a file specification string.
  @@ -454,130 +439,6 @@
   } else {
   return filename; // else returns all (no path and no extension)
   }
  -}
  -
  -/**
  - * Delete a file. If file is directory delete it and all sub-directories.
  - * @param file file or directory to delete.
  - * @throws IOException in case deletion is unsuccessful
  - * @deprecated Use [EMAIL PROTECTED] FileUtils#forceDelete(File)}
  - */
  -public static void forceDelete( String file) throws IOException {
  -FileUtils.forceDelete(new File(file));
  -}
  -
  -
  -
  -/**
  - * Clean a directory without deleting it.
  - * @param directory directory to clean
  - * @throws IOException in case cleaning is unsuccessful
  - * @deprecated Use [EMAIL PROTECTED] FileUtils#cleanDirectory(File)}
  - */
  -public static void cleanDirectory( String directory)
  -throws IOException {
  -FileUtils.cleanDirectory(new File(directory));
  -}
  -
  -/**
  - * Recursively count size of a directory (sum of the length of all files).
  - *
  - * @param directory directory to inspect
  - * @return size of directory in bytes.
  - * @deprecated Use [EMAIL PROTECTED] FileUtils#sizeOfDirectory(File)}
  - */
  -public static long sizeOfDirectory( String directory) {
  -return FileUtils.sizeOfDirectory(new File(directory));
  -}
  -
  -/**
  - * Copy file from source to destination. If codedestinationDirectory/code 
does not exist, it
  - * (and any parent directories) will be created. If a file codesource/code 
in
  - * codedestinationDirectory/code exists, it will be overwritten.
  - *
  - * @param source An existing codeFile/code to copy.
  - * @param destinationDirectory A directory to copy codesource/code into.
  - *
  - * @throws FileNotFoundException if codesource/code isn't a normal file.
  - * @throws IllegalArgumentException if codedestinationDirectory/code isn't 
a directory.
  - * @throws IOException if codesource/code does not exist, the file in
  - * codedestinationDirectory/code cannot be written to, or an IO error 
occurs during copying.
  - *
  - * @deprecated Use [EMAIL PROTECTED] FileUtils#copyFileToDirectory(File, File)}
  - */
  -public static void copyFileToDirectory(
  -String source,
  -String destinationDirectory)
  -throws IOException, FileNotFoundException {
  -FileUtils.copyFileToDirectory(new File(source), new 
File(destinationDirectory));
  -}
  -
  -/**
  - * Recursively delete a directory.
  - * @param directory directory to delete
  - * @throws IOException in case deletion is unsuccessful
  - * @deprecated Use [EMAIL PROTECTED] FileUtils#deleteDirectory(File)}
  - */
  -public static void deleteDirectory( String directory)
  -throws IOException {
  -FileUtils.deleteDirectory(new File(directory));
  -}
  -
  -/**
  - * Returns the directory path portion of a file specification string.
  - * Matches the equally named unix command.
  - * @param filename filename to inspect
  - * @return The directory portion excluding the ending file separator.
  - * @deprecated Use [EMAIL PROTECTED] FileUtils#getPath(File)}
  - * TODO DELETE before 1.0
  - */
  -public static String dirname(String filename) {
  -

cvs commit: jakarta-commons/io/src/java/org/apache/commons/io FilenameUtils.java

2004-03-12 Thread jeremias
jeremias2004/03/12 13:58:59

  Modified:io/src/java/org/apache/commons/io FilenameUtils.java
  Log:
  Bugzilla #27612

  Fix for catPath not handling Windows-style path separators.

  Submitted by: Maarten Coene Maarten.Coene.at.qmedit.com
  
  Revision  ChangesPath
  1.8   +33 -10
jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java
  
  Index: FilenameUtils.java
  ===
  RCS file: 
/home/cvs/jakarta-commons/io/src/java/org/apache/commons/io/FilenameUtils.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- FilenameUtils.java23 Feb 2004 04:35:59 -  1.7
  +++ FilenameUtils.java12 Mar 2004 21:58:59 -  1.8
  @@ -263,38 +263,61 @@
   }
   
   /**
  - * Will concatenate 2 paths.  Paths with code../code will be
  - * properly handled.
  - * pEg.,br /
  + * Will concatenate 2 paths. Paths with code../code will be
  + * properly handled. The path separator between the 2 paths is the 
  + * system default path separator.
  + *
  + * pEg. on UNIX,br /
* code/a/b/c/code + coded/code = code/a/b/d/codebr /
* code/a/b/c/code + code../d/code = code/a/d/codebr /
* /p
*
  + * pEg. on Microsoft Windows,br /
  + * codeC:\a\b\c/code + coded/code = codeC:\a\b\d/codebr /
  + * codeC:\a\b\c/code + code..\d/code = codeC:\a\d/codebr /
  + * code/a/b/c/code + coded/code = code/a/b\d/codebr /
  + * /p
  + *
* Thieved from Tomcat sources...
*
  + * @param lookupPath the base path to attach to
  + * @param path path the second path to attach to the first
* @return The concatenated paths, or null if error occurs
*/
   public static String catPath( String lookupPath, String path) {
   // Cut off the last slash and everything beyond
  -int index = lookupPath.lastIndexOf(/);
  +int index = indexOfLastPathSeparator(lookupPath);
   String lookup = lookupPath.substring(0, index);
   String pth = path;
   
   // Deal with .. by chopping dirs off the lookup path
  -while (pth.startsWith(../)) {
  +while (pth.startsWith(../) || pth.startsWith(..\\)) {
   if (lookup.length()  0) {
  -index = lookup.lastIndexOf(/);
  +index = indexOfLastPathSeparator(lookup);
   lookup = lookup.substring(0, index);
   } else {
   // More ..'s than dirs, return null
   return null;
   }
   
  -index = pth.indexOf(../) + 3;
  -pth = pth.substring(index);
  +pth = pth.substring(3);
   }
   
  -return new StringBuffer(lookup).append(/).append(pth).toString();
  +return new 
StringBuffer(lookup).append(File.separator).append(pth).toString();
  +}
  +
  +/**
  + * Return the index of the last 'path separator' character. The 'path separator'
  + * character is '/' for UNIX systems and '\' for Microsoft Windows systems.
  + * 
  + * @param path The path to find the last path separator in
  + * @return The index of the last 'path separator' character, or -1 if there
  + * is no such character.
  + */
  +public static int indexOfLastPathSeparator(String path) {
  +int lastUnixPos = path.lastIndexOf('/');
  +int lastWindowsPos = path.lastIndexOf('\\');
  +return Math.max(lastUnixPos, lastWindowsPos);
   }
   
   /**
  
  
  

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]