From 4d94ad5a495f9ef03ed9ebf2d3e13ce313dc2208 Mon Sep 17 00:00:00 2001
From: Hardy Ferentschik
Date: Thu, 2 Feb 2012 14:40:11 +0100
Subject: [PATCH 1/3] HV-472 plugin version updates
---
pom.xml | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/pom.xml b/pom.xml
index 6b71582d2b..a62a0ad7a7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -185,7 +185,7 @@
org.apache.maven.plugins
maven-enforcer-plugin
- 1.0-beta-1
+ 1.0.1
enforce-java
@@ -206,7 +206,7 @@
org.apache.maven.plugins
maven-release-plugin
- 2.0
+ 2.2.2
deploy
@@ -217,7 +217,7 @@
org.apache.maven.plugins
maven-jar-plugin
- 2.3.2
+ 2.4
@@ -242,7 +242,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 2.11
+ 2.12
once
true
@@ -254,7 +254,7 @@
org.apache.maven.plugins
maven-surefire-report-plugin
- 2.11
+ 2.12
generate-test-report
@@ -272,12 +272,12 @@
org.apache.maven.plugins
maven-failsafe-plugin
- 2.11
+ 2.12
org.apache.maven.plugins
maven-source-plugin
- 2.1.1
+ 2.1.2
attach-sources
@@ -290,17 +290,17 @@
org.apache.maven.plugins
maven-dependency-plugin
- 2.2
+ 2.4
org.apache.maven.plugins
maven-assembly-plugin
- 2.2
+ 2.3
org.apache.maven.plugins
maven-release-plugin
- 2.0
+ 2.2.2
clean install
true
@@ -310,12 +310,12 @@
org.apache.maven.plugins
maven-deploy-plugin
- 2.5
+ 2.7
org.codehaus.mojo
exec-maven-plugin
- 1.1.1
+ 1.2.1
org.codehaus.mojo
@@ -344,12 +344,12 @@
org.apache.felix
maven-bundle-plugin
- 2.0.1
+ 2.3.6
org.apache.maven.plugins
maven-archetype-plugin
- 2.0-alpha-5
+ 2.2
generate-archetype-install
@@ -378,7 +378,7 @@
org.apache.maven.plugins
maven-javadoc-plugin
- 2.7
+ 2.8.1
true
${project.basedir}/../src/main/javadoc
From 345e81bb43c7917f5d3641df511fd57fa237c920 Mon Sep 17 00:00:00 2001
From: Hardy Ferentschik
Date: Thu, 2 Feb 2012 14:40:50 +0100
Subject: [PATCH 2/3] HV-472 using java.net.IDN to support internationalized
domain names in emails
---
.../constraints/impl/EmailValidator.java | 4 +-
.../constraints/impl/EmailValidatorTest.java | 84 +++++++++++--------
2 files changed, 53 insertions(+), 35 deletions(-)
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/constraints/impl/EmailValidator.java b/hibernate-validator/src/main/java/org/hibernate/validator/constraints/impl/EmailValidator.java
index 5c4a4db28f..f4e138e2ad 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/constraints/impl/EmailValidator.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/constraints/impl/EmailValidator.java
@@ -1,5 +1,6 @@
package org.hibernate.validator.constraints.impl;
+import java.net.IDN;
import java.util.regex.Matcher;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
@@ -42,7 +43,8 @@ public boolean isValid(CharSequence value, ConstraintValidatorContext context) {
if ( value == null || value.length() == 0 ) {
return true;
}
- Matcher m = pattern.matcher( value );
+ String asciiString = IDN.toASCII( value.toString() );
+ Matcher m = pattern.matcher( asciiString );
return m.matches();
}
}
diff --git a/hibernate-validator/src/test/java/org/hibernate/validator/test/constraints/impl/EmailValidatorTest.java b/hibernate-validator/src/test/java/org/hibernate/validator/test/constraints/impl/EmailValidatorTest.java
index 5f9a6f717a..1438c9c4b4 100644
--- a/hibernate-validator/src/test/java/org/hibernate/validator/test/constraints/impl/EmailValidatorTest.java
+++ b/hibernate-validator/src/test/java/org/hibernate/validator/test/constraints/impl/EmailValidatorTest.java
@@ -39,61 +39,77 @@ public static void init() {
@Test
public void testNullAndEmptyString() throws Exception {
- isRightEmail( "" );
- isRightEmail( null );
+ isValidEmail( "" );
+ isValidEmail( null );
}
@Test
public void testValidEmail() throws Exception {
- isRightEmail( "emmanuel@hibernate.org" );
- isRightEmail( "emmanuel@hibernate" );
- isRightEmail( "emma-n_uel@hibernate" );
- isRightEmail( "emma+nuel@hibernate.org" );
- isRightEmail( "emma=nuel@hibernate.org" );
- isRightEmail( "emmanuel@[123.12.2.11]" );
- isRightEmail( "*@example.net" );
- isRightEmail( "fred&barny@example.com" );
- isRightEmail( "---@example.com" );
- isRightEmail( "foo-bar@example.net" );
- isRightEmail( "mailbox.sub1.sub2@this-domain" );
+ isValidEmail( "emmanuel@hibernate.org" );
+ isValidEmail( "emmanuel@hibernate" );
+ isValidEmail( "emma-n_uel@hibernate" );
+ isValidEmail( "emma+nuel@hibernate.org" );
+ isValidEmail( "emma=nuel@hibernate.org" );
+ isValidEmail( "emmanuel@[123.12.2.11]" );
+ isValidEmail( "*@example.net" );
+ isValidEmail( "fred&barny@example.com" );
+ isValidEmail( "---@example.com" );
+ isValidEmail( "foo-bar@example.net" );
+ isValidEmail( "mailbox.sub1.sub2@this-domain" );
}
@Test
public void testInValidEmail() throws Exception {
- isWrongEmail( "emmanuel.hibernate.org" );
- isWrongEmail( "emma nuel@hibernate.org" );
- isWrongEmail( "emma(nuel@hibernate.org" );
- isWrongEmail( "emmanuel@" );
- isWrongEmail( "emma\nnuel@hibernate.org" );
- isWrongEmail( "emma@nuel@hibernate.org" );
- isWrongEmail( "Just a string" );
- isWrongEmail( "string" );
- isWrongEmail( "me@" );
- isWrongEmail( "@example.com" );
- isWrongEmail( "me.@example.com" );
- isWrongEmail( ".me@example.com" );
- isWrongEmail( "me@example..com" );
- isWrongEmail( "me\\@example.com" );
+ isInvalidEmail( "emmanuel.hibernate.org" );
+ isInvalidEmail( "emma nuel@hibernate.org" );
+ isInvalidEmail( "emma(nuel@hibernate.org" );
+ isInvalidEmail( "emmanuel@" );
+ isInvalidEmail( "emma\nnuel@hibernate.org" );
+ isInvalidEmail( "emma@nuel@hibernate.org" );
+ isInvalidEmail( "Just a string" );
+ isInvalidEmail( "string" );
+ isInvalidEmail( "me@" );
+ isInvalidEmail( "@example.com" );
+ isInvalidEmail( "me.@example.com" );
+ isInvalidEmail( ".me@example.com" );
+ isInvalidEmail( "me@example..com" );
+ isInvalidEmail( "me\\@example.com" );
}
@Test
@TestForIssue(jiraKey = "HV-339")
public void testAccent() {
- isRightEmail( "Test^Email@example.com" );
+ isValidEmail( "Test^Email@example.com" );
}
@Test
@TestForIssue(jiraKey = "HV-502")
public void testValidEmailCharSequence() throws Exception {
- isRightEmail( new MyCustomStringImpl( "emmanuel@hibernate.org" ) );
- isWrongEmail( new MyCustomStringImpl( "@example.com" ) );
+ isValidEmail( new MyCustomStringImpl( "emmanuel@hibernate.org" ) );
+ isInvalidEmail( new MyCustomStringImpl( "@example.com" ) );
}
- private void isRightEmail(CharSequence email) {
- assertTrue( validator.isValid( email, null ), "Expected a valid email." );
+ @Test
+ @TestForIssue(jiraKey = "HV-472")
+ public void testMailWithInternationalDomainName() throws Exception {
+ isValidEmail( "myname@östereich.at", "A valid email address with umlaut" );
+ isValidEmail( "θσερ@εχαμπλε.ψομ", "A valid greek email address" );
+ isInvalidEmail( "θσερ.εχαμπλε.ψομ", "Email does not contain an @ character and should be invalid" );
+ }
+
+ private void isValidEmail(CharSequence email, String message) {
+ assertTrue( validator.isValid( email, null ), message );
+ }
+
+ private void isValidEmail(CharSequence email) {
+ isValidEmail( email, "Expected a valid email." );
+ }
+
+ private void isInvalidEmail(CharSequence email, String message) {
+ assertFalse( validator.isValid( email, null ), message );
}
- private void isWrongEmail(CharSequence email) {
- assertFalse( validator.isValid( email, null ), "Expected a invalid email." );
+ private void isInvalidEmail(CharSequence email) {
+ isInvalidEmail( email, "Expected a invalid email." );
}
}
From 5159a9e1e3a87d922e6c9b3c7be90c0c8c1626d1 Mon Sep 17 00:00:00 2001
From: Hardy Ferentschik
Date: Thu, 2 Feb 2012 16:09:03 +0100
Subject: [PATCH 3/3] HV-472 Adding note about Java 6 requirement
---
.../hibernate/validator/constraints/impl/EmailValidator.java | 3 +++
1 file changed, 3 insertions(+)
diff --git a/hibernate-validator/src/main/java/org/hibernate/validator/constraints/impl/EmailValidator.java b/hibernate-validator/src/main/java/org/hibernate/validator/constraints/impl/EmailValidator.java
index f4e138e2ad..b7b7fa527e 100644
--- a/hibernate-validator/src/main/java/org/hibernate/validator/constraints/impl/EmailValidator.java
+++ b/hibernate-validator/src/main/java/org/hibernate/validator/constraints/impl/EmailValidator.java
@@ -18,6 +18,9 @@
* implement a 100% compliant email validator. This implementation is a trade-off trying to match most email while ignoring
* for example emails with double quotes or comments.
*
+ *
+ * Note: This validator required Java 6, because it uses {@code java.lang.IDN} to support internationalized domain names (IDNs).
+ *
*
* @author Emmanuel Bernard
* @author Hardy Ferentschik