Author: oheger Date: Sun Sep 22 17:48:22 2013 New Revision: 1525397 URL: http://svn.apache.org/r1525397 Log: Added methods for file to URL conversions to FileLocatorUtils.
When locating files it is often necessary to convert a File object to a URL. The new methods simplify this task by already handling exceptions and returning null in this case. This is the result returned by location strategies if a file could not be resolved. Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/io/FileLocatorUtils.java commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/io/TestFileLocatorUtils.java Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/io/FileLocatorUtils.java URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/io/FileLocatorUtils.java?rev=1525397&r1=1525396&r2=1525397&view=diff ============================================================================== --- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/io/FileLocatorUtils.java (original) +++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/io/FileLocatorUtils.java Sun Sep 22 17:48:22 2013 @@ -18,6 +18,7 @@ package org.apache.commons.configuration import java.io.File; import java.net.MalformedURLException; +import java.net.URI; import java.net.URL; import org.apache.commons.configuration.ConfigurationUtils; @@ -450,6 +451,37 @@ public final class FileLocatorUtils } /** + * Tries to convert the specified URI to a URL. If this causes an exception, + * result is <b>null</b>. + * + * @param uri the URI to be converted + * @return the resulting URL or <b>null</b> + */ + static URL convertURIToURL(URI uri) + { + try + { + return uri.toURL(); + } + catch (MalformedURLException e) + { + return null; + } + } + + /** + * Tries to convert the specified file to a URL. If this causes an + * exception, result is <b>null</b>. + * + * @param file the file to be converted + * @return the resulting URL or <b>null</b> + */ + static URL convertFileToURL(File file) + { + return convertURIToURL(file.toURI()); + } + + /** * Tries to find a resource with the given name in the classpath. * * @param resourceName the name of the resource Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/io/TestFileLocatorUtils.java URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/io/TestFileLocatorUtils.java?rev=1525397&r1=1525396&r2=1525397&view=diff ============================================================================== --- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/io/TestFileLocatorUtils.java (original) +++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/io/TestFileLocatorUtils.java Sun Sep 22 17:48:22 2013 @@ -25,6 +25,8 @@ import static org.junit.Assert.assertTru import java.io.File; import java.net.MalformedURLException; +import java.net.URI; +import java.net.URISyntaxException; import java.net.URL; import org.apache.commons.configuration.ConfigurationAssert; @@ -378,4 +380,26 @@ public class TestFileLocatorUtils assertFalse("Wrong result", FileLocatorUtils.isFullyInitialized(locator)); } + + /** + * Tests whether exceptions are handled when converting a URI to a URL. + */ + @Test + public void testConvertToURIException() throws URISyntaxException + { + URI uri = new URI("test://test/path/file.tst"); + assertNull("Got a URL", FileLocatorUtils.convertURIToURL(uri)); + } + + /** + * Tests a successful conversion from a file to a URL. + */ + @Test + public void testConvertFileToURL() throws ConfigurationException + { + File file = ConfigurationAssert.getTestFile(FILE_NAME); + FileHandler handler = new FileHandler(); + handler.setURL(FileLocatorUtils.convertFileToURL(file)); + checkTestConfiguration(handler); + } }