scolebourne    2004/07/24 02:58:41

  Modified:    io/src/test/org/apache/commons/io FileUtilsTestCase.java
               io/src/java/org/apache/commons/io FileUtils.java
  Log:
  Add FileUtils.toFiles(urls)
  
  Revision  Changes    Path
  1.24      +78 -11    
jakarta-commons/io/src/test/org/apache/commons/io/FileUtilsTestCase.java
  
  Index: FileUtilsTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/io/src/test/org/apache/commons/io/FileUtilsTestCase.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- FileUtilsTestCase.java    24 Jul 2004 08:41:00 -0000      1.23
  +++ FileUtilsTestCase.java    24 Jul 2004 09:58:40 -0000      1.24
  @@ -108,18 +108,85 @@
           FileUtils.waitFor(new File(""), 2);
       }
   
  -    // toURL
  +    // toFiles
   
  -    public void testToURLs() throws Exception {
  -        File[] files = new File[] { new File("file1"), new File("file2")};
  +    public void testToFiles1() throws Exception {
  +        URL[] urls = new URL[] {
  +            new URL("file", null, "file1.txt"),
  +            new URL("file", null, "file2.txt"),
  +        };
  +        File[] files = FileUtils.toFiles(urls);
  +        
  +        assertEquals(urls.length, files.length);
  +        assertEquals("File: " + files[0], true, 
files[0].toString().indexOf("file1.txt") >= 0);
  +        assertEquals("File: " + files[1], true, 
files[1].toString().indexOf("file2.txt") >= 0);
  +    }
   
  -        URL[] urls = FileUtils.toURLs(files);
  +    public void testToFiles2() throws Exception {
  +        URL[] urls = new URL[] {
  +            new URL("file", null, "file1.txt"),
  +            null,
  +        };
  +        File[] files = FileUtils.toFiles(urls);
  +        
  +        assertEquals(urls.length, files.length);
  +        assertEquals("File: " + files[0], true, 
files[0].toString().indexOf("file1.txt") >= 0);
  +        assertEquals("File: " + files[1], null, files[1]);
  +    }
   
  -        // Path separator causes equality tests to fail
  -        //assertEquals(urls[0].getFile(), File.separator + 
files[0].getAbsolutePath());
  -        //assertEquals(urls[1].getFile(), File.separator + 
files[1].getAbsolutePath());
  +    public void testToFiles3() throws Exception {
  +        URL[] urls = null;
  +        File[] files = FileUtils.toFiles(urls);
  +        
  +        assertEquals(0, files.length);
  +    }
   
  +    public void testToFiles4() throws Exception {
  +        URL[] urls = new URL[] {
  +            new URL("file", null, "file1.txt"),
  +            new URL("http", "jakarta.apache.org", "file1.txt"),
  +        };
  +        try {
  +            FileUtils.toFiles(urls);
  +            fail();
  +        } catch (IllegalArgumentException ex) {}
       }
  +
  +    // toURLs
  +
  +    public void testToURLs1() throws Exception {
  +        File[] files = new File[] {
  +            new File(getTestDirectory(), "file1.txt"),
  +            new File(getTestDirectory(), "file2.txt"),
  +        };
  +        URL[] urls = FileUtils.toURLs(files);
  +        
  +        assertEquals(files.length, urls.length);
  +        assertEquals(true, urls[0].toExternalForm().startsWith("file:"));
  +        assertEquals(true, urls[0].toExternalForm().indexOf("file1.txt") >= 0);
  +        assertEquals(true, urls[1].toExternalForm().startsWith("file:"));
  +        assertEquals(true, urls[1].toExternalForm().indexOf("file2.txt") >= 0);
  +    }
  +
  +//    public void testToURLs2() throws Exception {
  +//        File[] files = new File[] {
  +//            new File(getTestDirectory(), "file1.txt"),
  +//            null,
  +//        };
  +//        URL[] urls = FileUtils.toURLs(files);
  +//        
  +//        assertEquals(files.length, urls.length);
  +//        assertEquals(true, urls[0].toExternalForm().startsWith("file:"));
  +//        assertEquals(true, urls[0].toExternalForm().indexOf("file1.txt") > 0);
  +//        assertEquals(null, urls[1]);
  +//    }
  +//
  +//    public void testToURLs3() throws Exception {
  +//        File[] files = null;
  +//        URL[] urls = FileUtils.toURLs(files);
  +//        
  +//        assertEquals(0, urls.length);
  +//    }
   
       // contentEquals
   
  
  
  
  1.36      +47 -9     jakarta-commons/io/src/java/org/apache/commons/io/FileUtils.java
  
  Index: FileUtils.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/io/src/java/org/apache/commons/io/FileUtils.java,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- FileUtils.java    15 Jul 2004 09:16:17 -0000      1.35
  +++ FileUtils.java    24 Jul 2004 09:58:41 -0000      1.36
  @@ -87,6 +87,11 @@
        * The number of bytes in a gigabyte.
        */
       public static final long ONE_GB = ONE_KB * ONE_MB;
  +    
  +    /**
  +     * An empty array of type <code>File</code>.
  +     */
  +    public static final File[] EMPTY_FILE_ARRAY = new File[0];
   
       /**
        * Returns a human-readable version of the file size (original is in
  @@ -285,11 +290,13 @@
           }
       }
   
  +    //-----------------------------------------------------------------------
       /**
        * Convert from a <code>URL</code> to a <code>File</code>.
  -     * @param url File URL.
  -     * @return The equivalent <code>File</code> object, or <code>null</code> if the 
URL's protocol
  -     * is not <code>file</code>
  +     * 
  +     * @param url  the file URL to convert
  +     * @return the equivalent <code>File</code> object, or <code>null</code>
  +     *  if the URL's protocol is not <code>file</code>
        */
       public static File toFile(URL url) {
           if (url.getProtocol().equals("file") == false) {
  @@ -302,11 +309,42 @@
       }
   
       /**
  -     * Convert the array of Files into a list of URLs.
  +     * Converts each of an array of <code>URL</code> to a <code>File</code>.
  +     * <p>
  +     * Returns an array of the same size as the input.
  +     * If the input is null, an empty array is returned.
  +     * If the input contains null, the output array contains null at the same index.
  +     * 
  +     * @param urls  the file URLs to convert, null returns empty array
  +     * @return a non-null array of Files matching the input, with a null item
  +     *  if there was a null at that index in the input array
  +     * @throws IllegalArgumentException if the URL could not be converted to a File
  +     */
  +    public static File[] toFiles(URL[] urls) {
  +        if (urls == null || urls.length == 0) {
  +            return EMPTY_FILE_ARRAY;
  +        }
  +        File[] files = new File[urls.length];
  +        for (int i = 0; i < urls.length; i++) {
  +            URL url = urls[i];
  +            if (url != null) {
  +                if (url.getProtocol().equals("file") == false) {
  +                    throw new IllegalArgumentException("URL could not be converted 
to a File: " + url);
  +                }
  +                files[i] = toFile(url);
  +            }
  +        }
  +        return files;
  +    }
  +
  +    /**
  +     * Converts each of an array of <code>File</code> to a <code>URL</code>.
  +     * <p>
  +     * Returns an array of the same size as the input.
        *
  -     * @param files the array of files
  -     * @return the array of URLs
  -     * @throws IOException if an error occurs
  +     * @param files  the files to convert
  +     * @return an array of URLs matching the input
  +     * @throws IOException if a file cannot be converted
        */
       public static URL[] toURLs(File[] files) throws IOException {
           URL[] urls = new URL[files.length];
  @@ -318,7 +356,7 @@
           return urls;
       }
   
  -
  +    //-----------------------------------------------------------------------
       /**
        * Copy file from source to destination. If <code>destinationDirectory</code> 
does not exist, it
        * (and any parent directories) will be created. If a file <code>source</code> 
in
  
  
  

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

Reply via email to