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