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. & 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();