Author: ivaynberg
Date: Mon Jul 28 17:04:10 2008
New Revision: 680576

URL: http://svn.apache.org/viewvc?rev=680576&view=rev
Log:
WICKET-1730

Modified:
    
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/validation/validator/RfcCompliantEmailAddressValidator.java
    
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/validation/validator/RfcCompliantEmailValidatorTest.java

Modified: 
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/validation/validator/RfcCompliantEmailAddressValidator.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/validation/validator/RfcCompliantEmailAddressValidator.java?rev=680576&r1=680575&r2=680576&view=diff
==============================================================================
--- 
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/validation/validator/RfcCompliantEmailAddressValidator.java
 (original)
+++ 
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/validation/validator/RfcCompliantEmailAddressValidator.java
 Mon Jul 28 17:04:10 2008
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.extensions.validation.validator;
 
+import org.apache.wicket.validation.IValidatable;
 import org.apache.wicket.validation.validator.EmailAddressValidator;
 import org.apache.wicket.validation.validator.PatternValidator;
 
@@ -25,15 +26,15 @@
  * regular expression taken from the Perl implementation of RFC 822.
  * 
  * <p>
- * <b>PLEATE NOTE!</b> Only use this validator if you really need it. The 
regex used is very big
- * and generates a allocates 1-2Kb of memory per session.
+ * <b>PLEATE NOTE!</b> Only use this validator if you really need it. The 
regex used is very big and
+ * generates a allocates 1-2Kb of memory per session.
  * 
  * <p>
  * Most users will be satisfied with the [EMAIL PROTECTED] 
EmailAddressValidator}
  * 
- * @see <a href="http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html";>Perl 
Regex implementation
- *      of RFC 822</a>
- * @see <a href="http://www.ietf.org/rfc/rfc0822.txt?number=822";>RFC 822</a>
+ * @see <a href="http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html";>Perl 
Regex implementation *
+ *      of RFC 822< /a>
+ * @see <a href="http://www.ietf.org/rfc/rfc0822.txt?number=822";>RFC 822< /a>
  * @author Frank Bille
  */
 public class RfcCompliantEmailAddressValidator extends PatternValidator
@@ -41,87 +42,87 @@
        private static final long serialVersionUID = 1L;
 
        private static final String emailPattern = "(?:(?:\\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)?[
 "
-                       + "\\t]))*\"(?:(?:\\r\\n)?[ \\t])*))*@(?:(?:\\r\\n)?[ 
\\t])*(?:[^()<>@,;:\\\".\\[\\] \\000-\\0"
-                       + "31]+(?:(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\"
-                       + "](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ 
\\t])*(?:[^()<>@,;:\\\".\\[\\] \\000-\\031]+"
-                       + "(?:(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:"
-                       + "(?:\\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)?["
-                       + " \\t])*)(?:\\.(?:(?:\\r\\n)?[ 
\\t])*(?:[^()<>@,;:\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)"
-                       + "?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[
 \\t]"
-                       + ")*))*(?:,@(?:(?:\\r\\n)?[ 
\\t])*(?:[^()<>@,;:\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?["
-                       + " 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[
 \\t])*"
-                       + ")(?:\\.(?:(?:\\r\\n)?[ 
\\t])*(?:[^()<>@,;:\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t]"
-                       + 
")+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[
 \\t])*))*)"
-                       + "*:(?:(?:\\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)?[
 \\t"
-                       + "]))*\"(?:(?:\\r\\n)?[ \\t])*))*@(?:(?:\\r\\n)?[ 
\\t])*(?:[^()<>@,;:\\\".\\[\\] \\000-\\031"
-                       + "]+(?:(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\]("
-                       + "?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ 
\\t])*(?:[^()<>@,;:\\\".\\[\\] \\000-\\031]+(?"
-                       + ":(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?"
-                       + ":\\r\\n)?[ \\t])*))*\\>(?:(?:\\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)?[ \\t]))*\"(?:(?:\\r\\n)?[ 
\\t])*)(?:\\.(?:(?:\\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)?[ 
\\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?"
-                       + ":[^()<>@,;:\\\".\\[\\] 
\\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\["
-                       + 
"\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\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)?[ 
\\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\""
-                       + ".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\"
-                       + "]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ 
\\t])*))*(?:,@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\".\\"
-                       + "[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\"
-                       + "r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ 
\\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\".\\[\\] "
-                       + "\\000-\\031]+(?:(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]"
-                       + "|\\\\.)*\\](?:(?:\\r\\n)?[ 
\\t])*))*)*:(?:(?:\\r\\n)?[ \\t])*)?(?:[^()<>@,;:\\\".\\[\\] \\0"
-                       + "00-\\031]+(?:(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\"
-                       + ".|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ 
\\t])*)(?:\\.(?:(?:\\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)?[ 
\\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:["
-                       + "^()<>@,;:\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]"
-                       + "]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ 
\\t])*))*\\>(?:(?:\\r\\n)?[ \\t])*)(?:,\\s*("
-                       + "?:(?:[^()<>@,;:\\\".\\[\\] 
\\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)?[ 
\\t]))*\"(?:(?:\\r\\n)?[ \\t"
-                       + "])*))*@(?:(?:\\r\\n)?[ 
\\t])*(?:[^()<>@,;:\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t"
-                       + 
"])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[
 \\t])*)(?"
-                       + ":\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\".\\[\\] 
\\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|"
-                       + 
"\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\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)?[ 
\\t])*)(?:\\.(?:(?:\\r\\n)"
-                       + "?[ \\t])*(?:[^()<>@,;:\\\".\\[\\] 
\\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>"
-                       + 
"@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ 
\\t])*))*(?:,@(?:(?:\\r\\n)?["
-                       + " \\t])*(?:[^()<>@,;:\\\".\\[\\] 
\\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,"
-                       + 
";:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ 
\\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t]"
-                       + ")*(?:[^()<>@,;:\\\".\\[\\] 
\\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\"
-                       + 
"\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ 
\\t])*))*)*:(?:(?:\\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)?[ 
\\t]))*\"(?:(?:\\r\\n)?[ \\t])"
-                       + "*))*@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\".\\[\\] 
\\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])"
-                       + 
"+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[
 \\t])*)(?:\\"
-                       + ".(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\".\\[\\] 
\\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z"
-                       + 
"|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[
 \\t])*))*\\>(?:("
-                       + "?:\\r\\n)?[ \\t])*))*)?;\\s*)";
+               + 
")+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[
 \\t]))*\"(?:(?:"
+               + "\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ 
\\t])*(?:[^()<>@,;:\\\".\\[\\] \\000-\\031]+(?:(?:("
+               + "?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\.|(?:(?:\\r\\n)?[
 "
+               + "\\t]))*\"(?:(?:\\r\\n)?[ \\t])*))*@(?:(?:\\r\\n)?[ 
\\t])*(?:[^()<>@,;:\\\".\\[\\] \\000-\\0"
+               + "31]+(?:(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\"
+               + "](?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ 
\\t])*(?:[^()<>@,;:\\\".\\[\\] \\000-\\031]+"
+               + "(?:(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:"
+               + "(?:\\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)?["
+               + " \\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\".\\[\\] 
\\000-\\031]+(?:(?:(?:\\r\\n)"
+               + "?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[
 \\t]"
+               + ")*))*(?:,@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\".\\[\\] 
\\000-\\031]+(?:(?:(?:\\r\\n)?["
+               + " 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[
 \\t])*"
+               + ")(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\".\\[\\] 
\\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t]"
+               + 
")+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[
 \\t])*))*)"
+               + "*:(?:(?:\\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)?[
 \\t"
+               + "]))*\"(?:(?:\\r\\n)?[ \\t])*))*@(?:(?:\\r\\n)?[ 
\\t])*(?:[^()<>@,;:\\\".\\[\\] \\000-\\031"
+               + "]+(?:(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\]("
+               + "?:(?:\\r\\n)?[ \\t])*)(?:\\.(?:(?:\\r\\n)?[ 
\\t])*(?:[^()<>@,;:\\\".\\[\\] \\000-\\031]+(?"
+               + ":(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?"
+               + ":\\r\\n)?[ \\t])*))*\\>(?:(?:\\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)?[ \\t]))*\"(?:(?:\\r\\n)?[ 
\\t])*)(?:\\.(?:(?:\\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)?[ 
\\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?"
+               + ":[^()<>@,;:\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\["
+               + "\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\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)?[ 
\\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\""
+               + ".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\"
+               + "]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ 
\\t])*))*(?:,@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\".\\"
+               + "[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\"
+               + "r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ 
\\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\".\\[\\] "
+               + "\\000-\\031]+(?:(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]"
+               + "|\\\\.)*\\](?:(?:\\r\\n)?[ \\t])*))*)*:(?:(?:\\r\\n)?[ 
\\t])*)?(?:[^()<>@,;:\\\".\\[\\] \\0"
+               + "00-\\031]+(?:(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\"(?:[^\\\"\\r\\\\]|\\\\"
+               + ".|(?:(?:\\r\\n)?[ \\t]))*\"(?:(?:\\r\\n)?[ 
\\t])*)(?:\\.(?:(?:\\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)?[ 
\\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t])*(?:["
+               + "^()<>@,;:\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]"
+               + "]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ 
\\t])*))*\\>(?:(?:\\r\\n)?[ \\t])*)(?:,\\s*("
+               + "?:(?:[^()<>@,;:\\\".\\[\\] \\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)?[ 
\\t]))*\"(?:(?:\\r\\n)?[ \\t"
+               + "])*))*@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\".\\[\\] 
\\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t"
+               + 
"])+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[
 \\t])*)(?"
+               + ":\\.(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\".\\[\\] 
\\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|"
+               + 
"\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\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)?[ 
\\t])*)(?:\\.(?:(?:\\r\\n)"
+               + "?[ \\t])*(?:[^()<>@,;:\\\".\\[\\] 
\\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>"
+               + 
"@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ 
\\t])*))*(?:,@(?:(?:\\r\\n)?["
+               + " \\t])*(?:[^()<>@,;:\\\".\\[\\] 
\\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z|(?=[\\[\"()<>@,"
+               + 
";:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ 
\\t])*)(?:\\.(?:(?:\\r\\n)?[ \\t]"
+               + ")*(?:[^()<>@,;:\\\".\\[\\] \\000-\\031]+(?:(?:(?:\\r\\n)?[ 
\\t])+|\\Z|(?=[\\[\"()<>@,;:\\\\"
+               + "\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[ 
\\t])*))*)*:(?:(?:\\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)?[ 
\\t]))*\"(?:(?:\\r\\n)?[ \\t])"
+               + "*))*@(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\".\\[\\] 
\\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])"
+               + 
"+|\\Z|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[
 \\t])*)(?:\\"
+               + ".(?:(?:\\r\\n)?[ \\t])*(?:[^()<>@,;:\\\".\\[\\] 
\\000-\\031]+(?:(?:(?:\\r\\n)?[ \\t])+|\\Z"
+               + 
"|(?=[\\[\"()<>@,;:\\\".\\[\\]]))|\\[([^\\[\\]\\r\\\\]|\\\\.)*\\](?:(?:\\r\\n)?[
 \\t])*))*\\>(?:("
+               + "?:\\r\\n)?[ \\t])*))*)?;\\s*)";
 
        /** Singleton instance */
        private static final RfcCompliantEmailAddressValidator INSTANCE = new 
RfcCompliantEmailAddressValidator();
@@ -138,4 +139,17 @@
        {
                super(emailPattern);
        }
+
+       protected void onValidate(IValidatable validatable)
+       {
+               String email = validatable.getValue().toString();
+               if (email.length() != email.trim().length())
+               {
+                       error(validatable);
+               }
+               else
+               {
+                       super.onValidate(validatable);
+               }
+       }
 }

Modified: 
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/validation/validator/RfcCompliantEmailValidatorTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/validation/validator/RfcCompliantEmailValidatorTest.java?rev=680576&r1=680575&r2=680576&view=diff
==============================================================================
--- 
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/validation/validator/RfcCompliantEmailValidatorTest.java
 (original)
+++ 
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/validation/validator/RfcCompliantEmailValidatorTest.java
 Mon Jul 28 17:04:10 2008
@@ -16,10 +16,11 @@
  */
 package org.apache.wicket.extensions.validation.validator;
 
-import java.util.regex.Matcher;
-
 import junit.framework.TestCase;
 
+import org.apache.wicket.validation.IValidator;
+import org.apache.wicket.validation.Validatable;
+
 /**
  * Test that it really validates RFC valid email addresses.
  * 
@@ -32,8 +33,7 @@
         */
        public void testValidEmailAddresses()
        {
-               RfcCompliantEmailAddressValidator validator = 
RfcCompliantEmailAddressValidator
-                               .getInstance();
+               IValidator validator = 
RfcCompliantEmailAddressValidator.getInstance();
 
                String[] validEmails = new String[] { "[EMAIL PROTECTED]",
                                "[EMAIL PROTECTED]", "[EMAIL PROTECTED]", 
"[EMAIL PROTECTED]",
@@ -42,10 +42,9 @@
                for (int i = 0; i < validEmails.length; i++)
                {
                        String emailAddress = validEmails[i];
-
-                       Matcher matcher = 
validator.getPattern().matcher(emailAddress);
-
-                       assertTrue(emailAddress + " wasn't valid but should 
be", matcher.matches());
+                       Validatable validatable = new Validatable(emailAddress);
+                       validator.validate(validatable);
+                       assertTrue(emailAddress + " wasn't valid but should 
be", validatable.isValid());
                }
        }
 
@@ -55,19 +54,18 @@
         */
        public void testInValidEmailAddresses()
        {
-               RfcCompliantEmailAddressValidator validator = 
RfcCompliantEmailAddressValidator
-                               .getInstance();
+               IValidator validator = 
RfcCompliantEmailAddressValidator.getInstance();
 
                String[] inValidEmails = new String[] { "whatever", "[EMAIL 
PROTECTED]",
-                               "[EMAIL PROTECTED]" };
+                               "[EMAIL PROTECTED]", " [EMAIL PROTECTED]",
+                               "[EMAIL PROTECTED] ", "[EMAIL PROTECTED]", 
"[EMAIL PROTECTED]" };
 
                for (int i = 0; i < inValidEmails.length; i++)
                {
                        String emailAddress = inValidEmails[i];
-
-                       Matcher matcher = 
validator.getPattern().matcher(emailAddress);
-
-                       assertFalse(emailAddress + " was valid but shouldn't 
be", matcher.matches());
+                       Validatable validatable = new Validatable(emailAddress);
+                       validator.validate(validatable);
+                       assertFalse(emailAddress + " was valid but shouldn't 
be", validatable.isValid());
                }
        }
 }


Reply via email to