[hibernate-commits] Hibernate SVN: r19252 - in validator/trunk/hibernate-validator/src: test/java/org/hibernate/validator/engine/messageinterpolation and 1 other directory.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Apr 20 11:29:44 EDT 2010


Author: hardy.ferentschik
Date: 2010-04-20 11:29:43 -0400 (Tue, 20 Apr 2010)
New Revision: 19252

Added:
   validator/trunk/hibernate-validator/src/main/resources/org/hibernate/validator/ValidationMessages_en.properties
Modified:
   validator/trunk/hibernate-validator/src/main/resources/org/hibernate/validator/ValidationMessages_fr.properties
   validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/messageinterpolation/MessageInterpolationWithDefaultBundleTest.java
Log:
HV-306 - Falling back to system?\194?\180s default locale if chosen locale was EN


Added: validator/trunk/hibernate-validator/src/main/resources/org/hibernate/validator/ValidationMessages_en.properties
===================================================================
--- validator/trunk/hibernate-validator/src/main/resources/org/hibernate/validator/ValidationMessages_en.properties	                        (rev 0)
+++ validator/trunk/hibernate-validator/src/main/resources/org/hibernate/validator/ValidationMessages_en.properties	2010-04-20 15:29:43 UTC (rev 19252)
@@ -0,0 +1,9 @@
+# $Id: ValidationMessages_en.properties 19090 2010-03-23 15:22:59Z hardy.ferentschik $
+# This file is intentionally left empty. All calls to this bundle will
+# be delegated to the parent bundle ValidationMessages (which contains 
+# English messages).
+#
+# Not providing this bundle would cause the bundle for the default 
+# locale to take precedence over the base bundle. If the default locale 
+# is not English but one, for which a resource bundle exists (e.g. German),
+# the English texts would never be returned.

Modified: validator/trunk/hibernate-validator/src/main/resources/org/hibernate/validator/ValidationMessages_fr.properties
===================================================================
--- validator/trunk/hibernate-validator/src/main/resources/org/hibernate/validator/ValidationMessages_fr.properties	2010-04-20 15:28:18 UTC (rev 19251)
+++ validator/trunk/hibernate-validator/src/main/resources/org/hibernate/validator/ValidationMessages_fr.properties	2010-04-20 15:29:43 UTC (rev 19252)
@@ -16,4 +16,6 @@
 org.hibernate.validator.constraints.Length.message=la taille doit \u00EAtre entre {min} et {max}
 org.hibernate.validator.constraints.NotBlank.message=ne peut pas \u00EAtre vide
 org.hibernate.validator.constraints.NotEmpty.message=ne peut pas \u00EAtre vide
-org.hibernate.validator.constraints.Range.message=doit \u00EAtre entre {min} et {max}
\ No newline at end of file
+org.hibernate.validator.constraints.Range.message=doit \u00EAtre entre {min} et {max}
+org.hibernate.validator.constraints.URL.message=URL mal form\u00E9e
+org.hibernate.validator.constraints.CreditCardNumber.message=Num\u00E9ro de carte de cr\u00E9dit invalide
\ No newline at end of file

Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/messageinterpolation/MessageInterpolationWithDefaultBundleTest.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/messageinterpolation/MessageInterpolationWithDefaultBundleTest.java	2010-04-20 15:28:18 UTC (rev 19251)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/engine/messageinterpolation/MessageInterpolationWithDefaultBundleTest.java	2010-04-20 15:29:43 UTC (rev 19252)
@@ -1,4 +1,4 @@
-// $Id:$
+// $Id$
 /*
 * JBoss, Home of Professional Open Source
 * Copyright 2009, Red Hat, Inc. and/or its affiliates, and individual contributors
@@ -29,11 +29,15 @@
 
 import org.hibernate.validator.engine.ResourceBundleMessageInterpolator;
 import org.hibernate.validator.util.TestUtil;
+
 import static org.hibernate.validator.util.TestUtil.assertCorrectConstraintViolationMessages;
 import static org.hibernate.validator.util.TestUtil.assertNumberOfViolations;
 
 /**
+ * Tests for correct message interpolation for messages from the default bundle.
+ *
  * @author Hardy Ferentschik
+ * @author Gunnar Morling
  */
 public class MessageInterpolationWithDefaultBundleTest {
 	private Locale defaultLocale;
@@ -54,7 +58,7 @@
 	@Test
 	public void testEmailAndRangeMessageEnglishLocale() {
 		Locale.setDefault( Locale.ENGLISH );
-		Configuration config = TestUtil.getConfiguration();
+		Configuration<?> config = TestUtil.getConfiguration();
 		config.messageInterpolator( new ResourceBundleMessageInterpolator() );
 		Validator validator = config.buildValidatorFactory().getValidator();
 		User user = new User();
@@ -73,7 +77,7 @@
 	@Test
 	public void testEmailAndRangeMessageGermanLocale() {
 		Locale.setDefault( Locale.GERMAN );
-		Configuration config = TestUtil.getConfiguration();
+		Configuration<?> config = TestUtil.getConfiguration();
 		config.messageInterpolator( new ResourceBundleMessageInterpolator() );
 		Validator validator = config.buildValidatorFactory().getValidator();
 		User user = new User();
@@ -92,7 +96,7 @@
 	@Test
 	public void testEmailAndRangeMessageFrenchLocale() {
 		Locale.setDefault( Locale.FRENCH );
-		Configuration config = TestUtil.getConfiguration();
+		Configuration<?> config = TestUtil.getConfiguration();
 		config.messageInterpolator( new ResourceBundleMessageInterpolator() );
 		Validator validator = config.buildValidatorFactory().getValidator();
 		User user = new User();
@@ -104,6 +108,45 @@
 				constraintViolations, "Addresse email mal form\u00E9e", "doit \u00EAtre entre 18 et 21"
 		);
 	}
-}
 
+	/**
+	 * HV-306. If English is explicitly set as locale for message interpolation, it
+	 * must take precedence over the system's default locale.
+	 */
+	@Test
+	public void testThatExplicitlySetEnglishLocaleHasPrecedenceOverDefaultLocale() {
 
+		Locale.setDefault( Locale.FRENCH );
+		Configuration<?> config = TestUtil.getConfiguration();
+		config.messageInterpolator( new LocalizedMessageInterpolator( Locale.ENGLISH ) );
+		Validator validator = config.buildValidatorFactory().getValidator();
+		User user = new User();
+		user.setEmail( "foo" );
+		user.setAge( 16 );
+		Set<ConstraintViolation<User>> constraintViolations = validator.validate( user );
+		assertNumberOfViolations( constraintViolations, 2 );
+		assertCorrectConstraintViolationMessages(
+				constraintViolations, "not a well-formed email address", "must be between 18 and 21"
+		);
+	}
+
+	/**
+	 * A message interpolator that enforces one given locale to be used for message
+	 * interpolation.
+	 *
+	 * @author Gunnar Morling
+	 */
+	private static class LocalizedMessageInterpolator extends ResourceBundleMessageInterpolator {
+
+		private Locale locale;
+
+		public LocalizedMessageInterpolator(Locale locale) {
+			this.locale = locale;
+		}
+
+		@Override
+		public String interpolate(String messageTemplate, Context context) {
+			return interpolate( messageTemplate, context, this.locale );
+		}
+	}
+}



More information about the hibernate-commits mailing list