Author: rgoers Date: Sun Oct 25 06:03:42 2015 New Revision: 1710414 URL: http://svn.apache.org/viewvc?rev=1710414&view=rev Log: VALIDATOR-376 Revert the default behavior to the state prior to VALIDATOR-273.
Modified: commons/proper/validator/trunk/src/changes/changes.xml commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/EmailValidator.java commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/EmailTest.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=1710414&r1=1710413&r2=1710414&view=diff ============================================================================== --- commons/proper/validator/trunk/src/changes/changes.xml (original) +++ commons/proper/validator/trunk/src/changes/changes.xml Sun Oct 25 06:03:42 2015 @@ -43,6 +43,11 @@ The <action> type attribute can be add,u <body> <release version="1.5.0" date="tba" description="tba"> + <action issue="VALIDATOR-376" type="fix" dev="rgoers"> + Revert EmailValidator to handle top level domains to the behavior prior to VALIDATOR-273. Allow an optional + behavior to allow the behavior VALIDATOR-273 implemented. Note that this is a behavioral change for users + of version 1.4.1, but not for anyone upgrading from a release prior to that. + </action> <action issue="VALIDATOR-371" type="remove">Drop the Javascript code entirely</action> <action issue="VALIDATOR-362" dev="britter" type="fix" due-to="Teo Bran"> Local part of the email address should not be longer than 64 bytes Modified: commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/EmailValidator.java URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/EmailValidator.java?rev=1710414&r1=1710413&r2=1710414&view=diff ============================================================================== --- commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/EmailValidator.java (original) +++ commons/proper/validator/trunk/src/main/java/org/apache/commons/validator/routines/EmailValidator.java Sun Oct 25 06:03:42 2015 @@ -51,18 +51,32 @@ public class EmailValidator implements S private static final Pattern USER_PATTERN = Pattern.compile(USER_REGEX); private final boolean allowLocal; + private final boolean allowTld; /** * Singleton instance of this class, which * doesn't consider local addresses as valid. */ - private static final EmailValidator EMAIL_VALIDATOR = new EmailValidator(false); + private static final EmailValidator EMAIL_VALIDATOR = new EmailValidator(false, false); + + /** + * Singleton instance of this class, which + * doesn't consider local addresses as valid. + */ + private static final EmailValidator EMAIL_VALIDATOR_WITH_TLD = new EmailValidator(false, true); /** * Singleton instance of this class, which does * consider local addresses valid. */ - private static final EmailValidator EMAIL_VALIDATOR_WITH_LOCAL = new EmailValidator(true); + private static final EmailValidator EMAIL_VALIDATOR_WITH_LOCAL = new EmailValidator(true, false); + + + /** + * Singleton instance of this class, which does + * consider local addresses valid. + */ + private static final EmailValidator EMAIL_VALIDATOR_WITH_LOCAL_WITH_TLD = new EmailValidator(true, true); /** * Returns the Singleton instance of this validator. @@ -80,11 +94,42 @@ public class EmailValidator implements S * @param allowLocal Should local addresses be considered valid? * @return singleton instance of this validator */ - public static EmailValidator getInstance(boolean allowLocal) { + public static EmailValidator getInstance(boolean allowLocal, boolean allowTld) { if(allowLocal) { - return EMAIL_VALIDATOR_WITH_LOCAL; + if (allowTld) { + return EMAIL_VALIDATOR_WITH_LOCAL_WITH_TLD; + } else { + return EMAIL_VALIDATOR_WITH_LOCAL; + } + } else { + if (allowTld) { + return EMAIL_VALIDATOR_WITH_TLD; + } else { + return EMAIL_VALIDATOR; + } } - return EMAIL_VALIDATOR; + } + + /** + * Returns the Singleton instance of this validator, + * with local validation as required. + * + * @param allowLocal Should local addresses be considered valid? + * @return singleton instance of this validator + */ + public static EmailValidator getInstance(boolean allowLocal) { + return getInstance(allowLocal, false); + } + + /** + * Protected constructor for subclasses to use. + * + * @param allowLocal Should local addresses be considered valid? + */ + protected EmailValidator(boolean allowLocal, boolean allowTld) { + super(); + this.allowLocal = allowLocal; + this.allowTld = allowTld; } /** @@ -95,6 +140,7 @@ public class EmailValidator implements S protected EmailValidator(boolean allowLocal) { super(); this.allowLocal = allowLocal; + this.allowTld = false; } /** @@ -148,8 +194,11 @@ public class EmailValidator implements S // Domain is symbolic name DomainValidator domainValidator = DomainValidator.getInstance(allowLocal); - return domainValidator.isValid(domain) || - domainValidator.isValidTld(domain); + if (allowTld) { + return domainValidator.isValid(domain) || domainValidator.isValidTld(domain); + } else { + return domainValidator.isValid(domain); + } } /** Modified: commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/EmailTest.java URL: http://svn.apache.org/viewvc/commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/EmailTest.java?rev=1710414&r1=1710413&r2=1710414&view=diff ============================================================================== --- commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/EmailTest.java (original) +++ commons/proper/validator/trunk/src/test/java/org/apache/commons/validator/EmailTest.java Sun Oct 25 06:03:42 2015 @@ -218,7 +218,12 @@ public class EmailTest extends AbstractC ValueBean info = new ValueBean(); info.setValue("m@de"); - valueTest(info, true); + valueTest(info, false); + + org.apache.commons.validator.routines.EmailValidator validator = + org.apache.commons.validator.routines.EmailValidator.getInstance(true, true); + boolean result = validator.isValid("m@de"); + assertTrue("Result should have been true", result); }