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/20 02:01:10 UTC

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

Author: bspeakmon
Date: Fri Oct 19 17:01:09 2007
New Revision: 586645

URL: http://svn.apache.org/viewvc?rev=586645&view=rev
Log:
- VALIDATOR-241: refactor UrlValidator to use routines.InetAddressValidator for IP hosts

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

Modified: commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/UrlValidator.java
URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/UrlValidator.java?rev=586645&r1=586644&r2=586645&view=diff
==============================================================================
--- commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/UrlValidator.java (original)
+++ commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/UrlValidator.java Fri Oct 19 17:01:09 2007
@@ -21,6 +21,7 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import org.apache.commons.validator.routines.InetAddressValidator;
 import org.apache.commons.validator.util.Flags;
 import org.apache.oro.text.perl.Perl5Util;
 
@@ -150,9 +151,6 @@
 
     private static final String LEGAL_ASCII_PATTERN = "/^[\\000-\\177]+$/";
 
-    private static final String IP_V4_DOMAIN_PATTERN =
-            "/^(\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})$/";
-
     private static final String DOMAIN_PATTERN =
             "/^" + ATOM + "(\\." + ATOM + ")*$/";
 
@@ -314,42 +312,25 @@
         }
 
         Perl5Util authorityMatcher = new Perl5Util();
-        Perl5Util matchIPV4Pat = new Perl5Util();
+        InetAddressValidator inetAddressValidator =
+                InetAddressValidator.getInstance();
 
         if (!authorityMatcher.match(AUTHORITY_PATTERN, authority)) {
             return false;
         }
 
-        boolean ipV4Address = false;
         boolean hostname = false;
-// check if authority is IP address or hostname
+        // check if authority is IP address or hostname
         String hostIP = authorityMatcher.group(PARSE_AUTHORITY_HOST_IP);
-        ipV4Address = matchIPV4Pat.match(IP_V4_DOMAIN_PATTERN, hostIP);
-
-        if (ipV4Address) {
-            // this is an IP address so check components
-            for (int i = 1; i <= 4; i++) {
-                String ipSegment = matchIPV4Pat.group(i);
-                if (ipSegment == null || ipSegment.length() <= 0) {
-                    return false;
-                }
-
-                try {
-                    if (Integer.parseInt(ipSegment) > 255) {
-                        return false;
-                    }
-                } catch(NumberFormatException e) {
-                    return false;
-                }
+        boolean ipV4Address = inetAddressValidator.isValid(hostIP);
 
-            }
-        } else {
+        if (!ipV4Address) {
             // Domain is hostname name
             Perl5Util domainMatcher = new Perl5Util();
             hostname = domainMatcher.match(DOMAIN_PATTERN, hostIP);
         }
 
-//rightmost hostname will never start with a digit.
+        //rightmost hostname will never start with a digit.
         if (hostname) {
             // LOW-TECH FIX FOR VALIDATOR-202
             // TODO: Rewrite to use ArrayList and .add semantics: see VALIDATOR-203