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