You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2010/12/21 21:46:54 UTC

svn commit: r1051642 - /wicket/branches/wicket-1.4.x/wicket-extensions/src/main/java/org/apache/wicket/extensions/validation/validator/RfcCompliantEmailAddressValidator.java

Author: mgrigorov
Date: Tue Dec 21 20:46:53 2010
New Revision: 1051642

URL: http://svn.apache.org/viewvc?rev=1051642&view=rev
Log:
Merge from trunk:

Author: ivaynberg
Date: Tue Dec 21 20:27:57 2010
New Revision: 1051637

URL: http://svn.apache.org/viewvc?rev=1051637&view=rev
Log:
improve rfc email validator to not keep the pattern as state


Modified:
    wicket/branches/wicket-1.4.x/wicket-extensions/src/main/java/org/apache/wicket/extensions/validation/validator/RfcCompliantEmailAddressValidator.java

Modified: wicket/branches/wicket-1.4.x/wicket-extensions/src/main/java/org/apache/wicket/extensions/validation/validator/RfcCompliantEmailAddressValidator.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket-extensions/src/main/java/org/apache/wicket/extensions/validation/validator/RfcCompliantEmailAddressValidator.java?rev=1051642&r1=1051641&r2=1051642&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket-extensions/src/main/java/org/apache/wicket/extensions/validation/validator/RfcCompliantEmailAddressValidator.java (original)
+++ wicket/branches/wicket-1.4.x/wicket-extensions/src/main/java/org/apache/wicket/extensions/validation/validator/RfcCompliantEmailAddressValidator.java Tue Dec 21 20:46:53 2010
@@ -16,9 +16,12 @@
  */
 package org.apache.wicket.extensions.validation.validator;
 
+import java.util.Map;
+import java.util.regex.Pattern;
+
 import org.apache.wicket.validation.IValidatable;
 import org.apache.wicket.validation.validator.EmailAddressValidator;
-import org.apache.wicket.validation.validator.PatternValidator;
+import org.apache.wicket.validation.validator.StringValidator;
 
 
 /**
@@ -37,11 +40,11 @@ import org.apache.wicket.validation.vali
  * @see <a href="http://www.ietf.org/rfc/rfc0822.txt?number=822">RFC 822< /a>
  * @author Frank Bille
  */
-public class RfcCompliantEmailAddressValidator extends PatternValidator
+public class RfcCompliantEmailAddressValidator extends StringValidator
 {
 	private static final long serialVersionUID = 1L;
 
-	private static final String emailPattern = "(?:(?:\\r\\n)?[ \\t])*(?:(?:(?:[^()<>@,;:\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t]"
+	private static final String EMAIL_PATTERN = "(?:(?:\\r\\n)?[ \\t])*(?:(?:(?:[^()<>@,;:\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t]"
 		+ ")+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:"
 		+ "\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\".\\[\\] \\000-\\031]+(?:(?:("
 		+ "?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[ "
@@ -124,6 +127,8 @@ public class RfcCompliantEmailAddressVal
 		+ "|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*\\>(?:("
 		+ "?:\\r\\n)?[ \\t])*))*)?;\\s*)";
 
+	private static final Pattern PATTERN = Pattern.compile(EMAIL_PATTERN);
+
 	/** Singleton instance */
 	private static final RfcCompliantEmailAddressValidator INSTANCE = new RfcCompliantEmailAddressValidator();
 
@@ -137,20 +142,33 @@ public class RfcCompliantEmailAddressVal
 
 	protected RfcCompliantEmailAddressValidator()
 	{
-		super(emailPattern);
 	}
 
+	/**
+	 * Checks a value against this <code>PatternValidator</code>'s {@link Pattern}.
+	 * 
+	 * @param validatable
+	 *            the <code>IValidatable</code> to check
+	 */
 	@Override
-	protected void onValidate(IValidatable validatable)
+	protected Map<String, Object> variablesMap(IValidatable<String> validatable)
+	{
+		final Map<String, Object> map = super.variablesMap(validatable);
+		map.put("pattern", EMAIL_PATTERN);
+		return map;
+	}
+
+	@Override
+	protected void onValidate(IValidatable<String> validatable)
 	{
 		String email = validatable.getValue().toString();
 		if (email.length() != email.trim().length())
 		{
 			error(validatable);
 		}
-		else
+		else if (!PATTERN.matcher(validatable.getValue()).matches())
 		{
-			super.onValidate(validatable);
+			error(validatable);
 		}
 	}
 }