[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