You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bs...@apache.org on 2007/10/30 07:55:21 UTC

svn commit: r589976 - /commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/UrlValidator.java

Author: bspeakmon
Date: Mon Oct 29 23:55:21 2007
New Revision: 589976

URL: http://svn.apache.org/viewvc?rev=589976&view=rev
Log:
- VALIDATOR-203: simplify isValidAuthority() and removing now-unused regexps
  since this class is no longer in the domain-validating business

Modified:
    commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/UrlValidator.java

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=589976&r1=589975&r2=589976&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 Oct 29 23:55:21 2007
@@ -93,17 +93,11 @@
 
     private static final String ALPHA_NUMERIC_CHARS = ALPHA_CHARS + "\\d";
 
-    private static final String SPECIAL_CHARS = ";/@&=,.?:+$";
-
-    private static final String VALID_CHARS = "[^\\s" + SPECIAL_CHARS + "]";
-
     private static final String SCHEME_CHARS = ALPHA_CHARS;
 
     // Drop numeric, and  "+-." for now
     private static final String AUTHORITY_CHARS = ALPHA_NUMERIC_CHARS + "\\-\\.";
 
-    private static final String ATOM = VALID_CHARS + '+';
-
     /**
      * This expression derived/taken from the BNF for URI (RFC2396).
      */
@@ -151,15 +145,8 @@
 
     private static final String LEGAL_ASCII_PATTERN = "/^[\\000-\\177]+$/";
 
-    private static final String DOMAIN_PATTERN =
-            "/^" + ATOM + "(\\." + ATOM + ")*$/";
-
     private static final String PORT_PATTERN = "/^:(\\d{1,5})$/";
 
-    private static final String ATOM_PATTERN = "/(" + ATOM + ")/";
-
-    private static final String ALPHA_PATTERN = "/^[" + ALPHA_CHARS + "]/";
-
     /**
      * Holds the set of current validation options.
      */
@@ -325,26 +312,22 @@
         }
 
         Perl5Util authorityMatcher = new Perl5Util();
-        InetAddressValidator inetAddressValidator =
-                InetAddressValidator.getInstance();
-
         if (!authorityMatcher.match(AUTHORITY_PATTERN, authority)) {
             return false;
         }
 
-        boolean hostname = false;
-        // check if authority is IP address or hostname
-        String hostIP = authorityMatcher.group(PARSE_AUTHORITY_HOST_IP);
-        boolean ipV4Address = inetAddressValidator.isValid(hostIP);
-
-        if (!ipV4Address) {
-            // Domain is hostname name
-            DomainValidator validator = DomainValidator.getInstance();
-            hostname = validator.isValid(hostIP);
-        }
-
-        if (!hostname && !ipV4Address) {
-            return false;
+        String hostLocation = authorityMatcher.group(PARSE_AUTHORITY_HOST_IP);
+        // check if authority is hostname or IP address:
+        // try a hostname first since that's much more likely
+        DomainValidator domainValidator = DomainValidator.getInstance();
+        if (!domainValidator.isValid(hostLocation)) {
+            // try an IP address
+            InetAddressValidator inetAddressValidator =
+                InetAddressValidator.getInstance();
+            if (!inetAddressValidator.isValid(hostLocation)) {
+                // isn't either one, so the URL is invalid
+                return false;
+            }
         }
 
         String port = authorityMatcher.group(PARSE_AUTHORITY_PORT);