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

svn commit: r1608599 - in /commons/proper/validator/trunk/src: changes/changes.xml main/java/org/apache/commons/validator/routines/DomainValidator.java

Author: britter
Date: Mon Jul  7 20:21:21 2014
New Revision: 1608599

URL: http://svn.apache.org/r1608599
Log:
VALIDATOR-266: DomainValidator uses an O(n) method where an O(1) would be more appropriate. Thanks to Bruce Collie

Modified:
    commons/proper/validator/trunk/src/changes/changes.xml
    commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/DomainValidator.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=1608599&r1=1608598&r2=1608599&view=diff
==============================================================================
--- commons/proper/validator/trunk/src/changes/changes.xml (original)
+++ commons/proper/validator/trunk/src/changes/changes.xml Mon Jul  7 20:21:21 2014
@@ -43,6 +43,9 @@ The <action> type attribute can be add,u
   <body>
 
   <release version="1.4.1" date="TBA" description="TBA">
+    <action dev="britter" type="fix" issue="VALIDATOR-266" due-to="Bruce Collie" >
+      DomainValidator uses an O(n) method where an O(1) would be more appropriate
+    </action>
     <action dev="britter" type="fix" issue="VALIDATOR-273" due-to="Chris Lee" >
       EmailValidator does not support mailboxes at TLDs
     </action>

Modified: commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/DomainValidator.java
URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/DomainValidator.java?rev=1608599&r1=1608598&r2=1608599&view=diff
==============================================================================
--- commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/DomainValidator.java (original)
+++ commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/DomainValidator.java Mon Jul  7 20:21:21 2014
@@ -165,7 +165,7 @@ public class DomainValidator implements 
      * @return true if the parameter is an infrastructure TLD
      */
     public boolean isValidInfrastructureTld(String iTld) {
-        return INFRASTRUCTURE_TLD_LIST.contains(chompLeadingDot(iTld.toLowerCase()));
+        return Arrays.binarySearch(INFRASTRUCTURE_TLDS, (chompLeadingDot(iTld.toLowerCase()))) >= 0;
     }
 
     /**
@@ -176,7 +176,7 @@ public class DomainValidator implements 
      * @return true if the parameter is a generic TLD
      */
     public boolean isValidGenericTld(String gTld) {
-        return GENERIC_TLD_LIST.contains(chompLeadingDot(gTld.toLowerCase()));
+        return Arrays.binarySearch(GENERIC_TLDS, chompLeadingDot(gTld.toLowerCase())) >= 0;
     }
 
     /**
@@ -187,7 +187,7 @@ public class DomainValidator implements 
      * @return true if the parameter is a country code TLD
      */
     public boolean isValidCountryCodeTld(String ccTld) {
-        return COUNTRY_CODE_TLD_LIST.contains(chompLeadingDot(ccTld.toLowerCase()));
+        return Arrays.binarySearch(COUNTRY_CODE_TLDS, chompLeadingDot(ccTld.toLowerCase())) >= 0;
     }
 
     /**
@@ -198,7 +198,7 @@ public class DomainValidator implements 
      * @return true if the parameter is an local TLD
      */
     public boolean isValidLocalTld(String iTld) {
-        return LOCAL_TLD_LIST.contains(chompLeadingDot(iTld.toLowerCase()));
+        return Arrays.binarySearch(LOCAL_TLDS, chompLeadingDot(iTld.toLowerCase())) >= 0;
     }
 
     private String chompLeadingDot(String str) {
@@ -680,8 +680,10 @@ public class DomainValidator implements 
        "localdomain"          // Also widely used as localhost.localdomain
    };
 
-    private static final List INFRASTRUCTURE_TLD_LIST = Arrays.asList(INFRASTRUCTURE_TLDS);
-    private static final List GENERIC_TLD_LIST = Arrays.asList(GENERIC_TLDS);
-    private static final List COUNTRY_CODE_TLD_LIST = Arrays.asList(COUNTRY_CODE_TLDS);
-    private static final List LOCAL_TLD_LIST = Arrays.asList(LOCAL_TLDS);
+    static {
+        Arrays.sort(INFRASTRUCTURE_TLDS);
+        Arrays.sort(COUNTRY_CODE_TLDS);
+        Arrays.sort(GENERIC_TLDS);
+        Arrays.sort(LOCAL_TLDS);
+    }
 }