VALIDATOR-391 UrlValidator.isValid throws exception for FILEURLs
    Fixed code so it handles URLs with no authority field

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/validator/trunk@1742006 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 1e4e80b..b545fba 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -64,6 +64,13 @@
      -->
 
   <body>
+  <release version="1.5.2" date="TBA" description="
+  ">
+    <action issue="VALIDATOR-391" type="fix" dev="sebb" due-to="Mark E. Scott, Jr. &amp; Jason Loomis">
+    UrlValidator.isValid throws exception for FILEURLs
+    Fixed code so it handles URLs with no authority field
+    </action>
+  </release>
   <release version="1.5.1" date="2016-04-30" description="
 This is a maintenance release.
 
diff --git a/src/main/java/org/apache/commons/validator/routines/UrlValidator.java b/src/main/java/org/apache/commons/validator/routines/UrlValidator.java
index 36e9f55..28a9f3b 100644
--- a/src/main/java/org/apache/commons/validator/routines/UrlValidator.java
+++ b/src/main/java/org/apache/commons/validator/routines/UrlValidator.java
@@ -312,7 +312,7 @@
 
         String authority = urlMatcher.group(PARSE_URL_AUTHORITY);
         if ("file".equals(scheme)) {// Special case - file: allows an empty authority
-            if (!"".equals(authority)) {
+            if (authority != null) {
                 if (authority.contains(":")) { // but cannot allow trailing :
                     return false;
                 }
diff --git a/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java b/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java
index 83859bd..a227dc1 100644
--- a/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java
+++ b/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java
@@ -275,6 +275,17 @@
               validator.isValid("file://C:\\some.file"));
     }
 
+    public void testValidator391OK() {
+        String[] schemes = {"file"};
+        UrlValidator urlValidator = new UrlValidator(schemes);
+        urlValidator.isValid("file:///C:/path/to/dir/");
+    }
+    
+    public void testValidator391FAILS() {
+        String[] schemes = {"file"};
+        UrlValidator urlValidator = new UrlValidator(schemes);
+        urlValidator.isValid("file:/C:/path/to/dir/");
+    }
     
     public void testValidator309() {
         UrlValidator urlValidator = new UrlValidator();