You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2015/11/10 00:39:18 UTC
svn commit: r1713569 - in /commons/proper/validator/trunk/src:
changes/changes.xml
main/java/org/apache/commons/validator/routines/UrlValidator.java
test/java/org/apache/commons/validator/routines/UrlValidatorTest.java
Author: sebb
Date: Mon Nov 9 23:39:18 2015
New Revision: 1713569
URL: http://svn.apache.org/viewvc?rev=1713569&view=rev
Log:
VALIDATOR-380 UrlValidator does not allow for optional port digits
Modified:
commons/proper/validator/trunk/src/changes/changes.xml
commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/UrlValidator.java
commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java
Modified: commons/proper/validator/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/changes/changes.xml?rev=1713569&r1=1713568&r2=1713569&view=diff
==============================================================================
--- commons/proper/validator/trunk/src/changes/changes.xml (original)
+++ commons/proper/validator/trunk/src/changes/changes.xml Mon Nov 9 23:39:18 2015
@@ -90,6 +90,9 @@ The dependencies for Validator have not
For the current list of dependencies, please see
http://commons.apache.org/validator/dependencies.html
">
+ <action issue="VALIDATOR-380" type="fix" dev="sebb">
+ UrlValidator does not allow for optional port digits
+ </action>
<action issue="VALIDATOR-332" type="update" dev="sebb">
IIBANCheckDigit.calculate does not enforce initial checksum value
Checkdigit field is now unconditionally set to "00" to ensure correct generation
Modified: commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/UrlValidator.java
URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/UrlValidator.java?rev=1713569&r1=1713568&r2=1713569&view=diff
==============================================================================
--- commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/UrlValidator.java (original)
+++ commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/UrlValidator.java Mon Nov 9 23:39:18 2015
@@ -146,15 +146,16 @@ public class UrlValidator implements Ser
USERINFO_CHARS_REGEX + "+:" + // At least one character for the name
USERINFO_CHARS_REGEX + "*@"; // password may be absent
private static final String AUTHORITY_REGEX =
- "^(?:\\[("+IPV6_REGEX+")\\]|(?:(?:"+USERINFO_FIELD_REGEX+")?([" + AUTHORITY_CHARS_REGEX + "]*)))(:\\d*)?(.*)?";
- // 1 e.g. user:pass@ 2 3 4
+ "(?:\\[("+IPV6_REGEX+")\\]|(?:(?:"+USERINFO_FIELD_REGEX+")?([" + AUTHORITY_CHARS_REGEX + "]*)))(:\\d*)?(.*)?";
+ // 1 e.g. user:pass@ 2 3 4
private static final Pattern AUTHORITY_PATTERN = Pattern.compile(AUTHORITY_REGEX);
private static final int PARSE_AUTHORITY_IPV6 = 1;
- private static final int PARSE_AUTHORITY_HOST_IP = 2;
+ private static final int PARSE_AUTHORITY_HOST_IP = 2; // excludes userinfo, if present
- private static final int PARSE_AUTHORITY_PORT = 3;
+ // Not needed, because it is validated by AUTHORITY_REGEX
+// private static final int PARSE_AUTHORITY_PORT = 3;
/**
* Should always be empty. The code currently allows spaces.
@@ -167,9 +168,6 @@ public class UrlValidator implements Ser
private static final String QUERY_REGEX = "^(.*)$";
private static final Pattern QUERY_PATTERN = Pattern.compile(QUERY_REGEX);
- private static final String PORT_REGEX = "^:(\\d{1,5})$";
- private static final Pattern PORT_PATTERN = Pattern.compile(PORT_REGEX);
-
/**
* Holds the set of current validation options.
*/
@@ -311,9 +309,14 @@ public class UrlValidator implements Ser
}
String authority = urlMatcher.group(PARSE_URL_AUTHORITY);
- if ("file".equals(scheme) && "".equals(authority)) {
- // Special case - file: allows an empty authority
- } else {
+ if ("file".equals(scheme)) {// Special case - file: allows an empty authority
+ if (!"".equals(authority)) {
+ if (authority.contains(":")) { // but cannot allow trailing :
+ return false;
+ }
+ }
+ // drop through to continue validation
+ } else { // not file:
// Validate the authority
if (!isValidAuthority(authority)) {
return false;
@@ -410,11 +413,6 @@ public class UrlValidator implements Ser
}
}
- String port = authorityMatcher.group(PARSE_AUTHORITY_PORT);
- if (port != null && !PORT_PATTERN.matcher(port).matches()) {
- return false;
- }
-
String extra = authorityMatcher.group(PARSE_AUTHORITY_EXTRA);
if (extra != null && extra.trim().length() > 0){
return false;
Modified: commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java?rev=1713569&r1=1713568&r2=1713569&view=diff
==============================================================================
--- commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java (original)
+++ commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/routines/UrlValidatorTest.java Mon Nov 9 23:39:18 2015
@@ -441,8 +441,7 @@ public class UrlValidatorTest extends Te
UrlValidator validator = new UrlValidator();
assertTrue(validator.isValid("http://www.apache.org:80/path"));
assertTrue(validator.isValid("http://www.apache.org:8/path"));
- // To be enabled when code has been fixed
-// assertTrue(validator.isValid("http://www.apache.org:/path"));
+ assertTrue(validator.isValid("http://www.apache.org:/path"));
}
/**