From: <hib...@li...> - 2006-08-10 03:34:06
|
Author: epbernard Date: 2006-08-09 23:34:03 -0400 (Wed, 09 Aug 2006) New Revision: 10240 Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/validator/ClassValidator.java trunk/HibernateExt/metadata/src/test/ValidatorMessages.properties trunk/HibernateExt/metadata/src/test/ValidatorMessages_da.properties trunk/HibernateExt/metadata/src/test/ValidatorMessages_fr.properties Log: ANN-265 when a key is not found default to DEFAULT_VALIDATOR_MESSAGES Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/validator/ClassValidator.java =================================================================== --- trunk/HibernateExt/metadata/src/java/org/hibernate/validator/ClassValidator.java 2006-08-10 03:31:40 UTC (rev 10239) +++ trunk/HibernateExt/metadata/src/java/org/hibernate/validator/ClassValidator.java 2006-08-10 03:34:03 UTC (rev 10240) @@ -68,7 +68,8 @@ private final Class<T> beanClass; private transient ResourceBundle messageBundle; - private transient boolean defaultResourceBundle; + private transient ResourceBundle defaultMessageBundle; + private transient boolean isUserProvidedResourceBundle; private final transient Map<XClass, ClassValidator> childClassValidators; private transient List<Validator> beanValidators; @@ -106,6 +107,7 @@ this.messageBundle = resourceBundle == null ? getDefaultResourceBundle() : resourceBundle; + this.defaultMessageBundle = ResourceBundle.getBundle( DEFAULT_VALIDATOR_MESSAGE ); this.childClassValidators = childClassValidators; initValidator( beanClass, childClassValidators, this.messageBundle ); } @@ -139,10 +141,10 @@ "ResourceBundle ValidatorMessages not found in Validator classloader. Delegate to " + DEFAULT_VALIDATOR_MESSAGE ); //the user did not override the default ValidatorMessages - rb = ResourceBundle.getBundle( DEFAULT_VALIDATOR_MESSAGE ); + rb = null; } } - defaultResourceBundle = true; + isUserProvidedResourceBundle = true; return rb; } @@ -514,8 +516,26 @@ throw new IllegalArgumentException( "could not render message", e ); } } - else if ( messageBundle != null ) { - String string = messageBundle.getString( token ); + else { + String string = null; + try { + string = messageBundle != null ? messageBundle.getString( token ) : null; + } + catch( MissingResourceException e ) { + //give a second chance with the default resource bundle + } + if (string == null) { + try { + string = defaultMessageBundle.getString( token ); + } + catch( MissingResourceException e) { + throw new MissingResourceException( + "Can't find resource in validator bundles, key " + token, + defaultMessageBundle.getClass().getName(), + token + ); + } + } if ( string != null ) buf.append( replace( string, parameters ) ); } } @@ -568,9 +588,9 @@ ResourceBundle rb = messageBundle; if ( rb != null && ! ( rb instanceof Serializable ) ) { messageBundle = null; - if ( ! defaultResourceBundle ) { + if ( ! isUserProvidedResourceBundle ) { log.warn( - "Serializing a ClassValidator with a not serializable ResourceBundle: ResourceBundle ignored" + "Serializing a ClassValidator with a non serializable ResourceBundle: ResourceBundle ignored" ); } } @@ -583,6 +603,8 @@ ois.defaultReadObject(); ResourceBundle rb = (ResourceBundle) ois.readObject(); if ( rb == null ) rb = getDefaultResourceBundle(); - initValidator( reflectionManager.toXClass( beanClass ), new HashMap<XClass, ClassValidator>(), rb ); + this.messageBundle = rb; + this.defaultMessageBundle = ResourceBundle.getBundle( DEFAULT_VALIDATOR_MESSAGE ); + initValidator( reflectionManager.toXClass( beanClass ), new HashMap<XClass, ClassValidator>(), this.messageBundle ); } } Modified: trunk/HibernateExt/metadata/src/test/ValidatorMessages.properties =================================================================== --- trunk/HibernateExt/metadata/src/test/ValidatorMessages.properties 2006-08-10 03:31:40 UTC (rev 10239) +++ trunk/HibernateExt/metadata/src/test/ValidatorMessages.properties 2006-08-10 03:34:03 UTC (rev 10240) @@ -1,16 +1,4 @@ -#generic of Hibernate Validator -validator.assertFalse=assertion failed -validator.assertTrue=assertion failed -validator.future=must be a future date -validator.length=length must be between {min} and {max} -validator.max=must less than or equal to {value} -validator.min=must greater than or equal to {value} -validator.notNull=may not be null -validator.past=must be a past date -validator.pattern=must match "{regex}" -validator.range=must be between {min} and {max} -validator.size=size must be between {min} and {max} -validator.email=not a well-formed email address +#overriding of default keys #specific to my project long=is too damn long Modified: trunk/HibernateExt/metadata/src/test/ValidatorMessages_da.properties =================================================================== --- trunk/HibernateExt/metadata/src/test/ValidatorMessages_da.properties 2006-08-10 03:31:40 UTC (rev 10239) +++ trunk/HibernateExt/metadata/src/test/ValidatorMessages_da.properties 2006-08-10 03:34:03 UTC (rev 10240) @@ -1,12 +1,7 @@ -validator.assertFalse=assertion fejlet -validator.assertTrue=assertion fejlet -validator.future=skal v en fremtidig dato -validator.length=lden skal v mellem {min} og {max} -validator.max=skal v mindre end eller lig med {value} -validator.min=skal v stend eller lig med {value} -validator.notNull=mkke v null -validator.past=skal v en passeret dato -validator.pattern=skal matche "{regex}" -validator.range=skal v mellem {min} og {max} -validator.size=antallet skal v mellem {min} og {max} -validator.email=not a well-formed email address \ No newline at end of file +#overriding of default keys + +#specific to my project +long=is too damn long +floor.name=Floor +out.of.range=lower that {min} and greater than {max} +floor.out.of.range={floor.name} cannot be {out.of.range} \ No newline at end of file Modified: trunk/HibernateExt/metadata/src/test/ValidatorMessages_fr.properties =================================================================== --- trunk/HibernateExt/metadata/src/test/ValidatorMessages_fr.properties 2006-08-10 03:31:40 UTC (rev 10239) +++ trunk/HibernateExt/metadata/src/test/ValidatorMessages_fr.properties 2006-08-10 03:34:03 UTC (rev 10240) @@ -1,15 +1,4 @@ -validator.assertFalse=l'assertion a ouvalidator.assertTrue=l'assertion a ouvalidator.future=doit e dans le futur -validator.length=la longueur doit e entre {min} et {max} -validator.max=doit e infeur ou l value} -validator.min=doit e supeur ou l value} -validator.notNull=ne peut pas e nul -validator.past=doit e dans le passvalidator.pattern=doit suivre "{regex}" -validator.range=doit e entre {min} et {max} -validator.size=le nombre d'ments doit e entre {min} et {max} -validator.email=adresse email non valide +#overriding of default keys #specific to my project long=est grave trop long |