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);
+ }
}