[hibernate-commits] Hibernate SVN: r15509 - in validator/trunk: hibernate-validator/src/main/java/org/hibernate/validation/engine and 5 other directories.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Tue Nov 4 20:20:01 EST 2008
Author: epbernard
Date: 2008-11-04 20:20:01 -0500 (Tue, 04 Nov 2008)
New Revision: 15509
Removed:
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/HibernateValidatorBuilder.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorBuilderImpl.java
Modified:
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ValidatorImpl.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ResourceBundleMessageResolver.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorFactoryBuilderImpl.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorFactoryImpl.java
validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/bootstrap/ValidationTest.java
validator/trunk/validation-api/src/main/java/javax/validation/MessageResolver.java
validator/trunk/validation-api/src/main/java/javax/validation/ValidatorFactory.java
validator/trunk/validation-api/src/main/java/javax/validation/ValidatorFactoryBuilder.java
validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/GenericBuilderFactory.java
validator/trunk/validation-api/src/main/java/javax/validation/spi/BootstrapState.java
validator/trunk/validation-api/src/main/java/javax/validation/spi/ValidationProvider.java
validator/trunk/validation-api/src/main/java/javax/validation/spi/ValidatorFactoryConfiguration.java
Log:
BVAL-48 provide access to the default message resolver in ValidatorFactoryBuilder
BVAL-67 MessageResolver can accept a Locale, ValidatorFactory can provide the MessageResolver
Deleted: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/HibernateValidatorBuilder.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/HibernateValidatorBuilder.java 2008-11-04 23:09:33 UTC (rev 15508)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/HibernateValidatorBuilder.java 2008-11-05 01:20:01 UTC (rev 15509)
@@ -1,12 +0,0 @@
-package org.hibernate.validation;
-
-import javax.validation.ValidatorBuilder;
-
-/**
- * Uniquely identify Hibernate Validator in the Bean Validation bootstrap strategy
- * Also contains Hibernate Validator specific configurations
- *
- * @author Emmanuel Bernard
- */
-public interface HibernateValidatorBuilder extends ValidatorBuilder<HibernateValidatorBuilder> {
-}
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ValidatorImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ValidatorImpl.java 2008-11-04 23:09:33 UTC (rev 15508)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ValidatorImpl.java 2008-11-05 01:20:01 UTC (rev 15509)
@@ -506,7 +506,7 @@
return metaDataProvider.getConstraintMetaDataList().size() > 0;
}
- public BeanDescriptor getConstraintsForBean() {
+ public BeanDescriptor getConstraintsForClass() {
return metaDataProvider.getBeanDescriptor();
}
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ResourceBundleMessageResolver.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ResourceBundleMessageResolver.java 2008-11-04 23:09:33 UTC (rev 15508)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ResourceBundleMessageResolver.java 2008-11-05 01:20:01 UTC (rev 15509)
@@ -107,7 +107,11 @@
return replace( message, constraintDescriptor.getParameters() );
}
+ public String interpolate(String message, ConstraintDescriptor constraintDescriptor, Object value, Locale locale) {
+ throw new UnsupportedOperationException( "Interpolation for Locale. Has to be done." );
+ }
+
private String replace(String message, Map<String, Object> parameters) {
Matcher matcher = messagePattern.matcher( message );
StringBuffer sb = new StringBuffer();
Deleted: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorBuilderImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorBuilderImpl.java 2008-11-04 23:09:33 UTC (rev 15508)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorBuilderImpl.java 2008-11-05 01:20:01 UTC (rev 15509)
@@ -1,116 +0,0 @@
-// $Id$
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2008, Red Hat Middleware LLC, and individual contributors
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-* http://www.apache.org/licenses/LICENSE-2.0
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-package org.hibernate.validation.impl;
-
-import java.io.InputStream;
-import java.util.List;
-import javax.validation.ConstraintFactory;
-import javax.validation.MessageResolver;
-import javax.validation.ValidationException;
-import javax.validation.ValidationProviderResolver;
-import javax.validation.ValidatorBuilder;
-import javax.validation.ValidatorFactory;
-import javax.validation.bootstrap.DefaultValidationProviderResolver;
-import javax.validation.spi.ValidationProvider;
-import javax.validation.spi.ValidatorBuilderImplementor;
-import javax.validation.spi.BootstrapState;
-
-import org.hibernate.validation.HibernateValidatorBuilder;
-
-/**
- * @author Emmanuel Bernard
- */
-public class ValidatorBuilderImpl implements HibernateValidatorBuilder, ValidatorBuilderImplementor {
- private MessageResolver messageResolver = new ResourceBundleMessageResolver();
- private ConstraintFactory constraintFactory = new ConstraintFactoryImpl();
- private String configurationFile = "META-INF/validation.xml";
- private final ValidationProvider provider;
- private final ValidationProviderResolver providerResolver;
-
- public ValidatorBuilderImpl(BootstrapState state) {
- if (state.getValidationProviderResolver() == null) {
- this.providerResolver = new DefaultValidationProviderResolver();
- }
- else {
- this.providerResolver = state.getValidationProviderResolver();
- }
- this.provider = null;
- }
-
- public ValidatorBuilderImpl(ValidationProvider provider) {
- if ( provider == null ) {
- throw new ValidationException( "Assertion error: inconsistent ValidatorBuilderImpl construction");
- }
- this.provider = provider;
- this.providerResolver = null;
- }
-
- public ValidatorBuilderImpl messageResolver(MessageResolver resolver) {
- this.messageResolver = resolver;
- return this;
- }
-
- public ValidatorBuilderImpl constraintFactory(ConstraintFactory constraintFactory) {
- this.constraintFactory = constraintFactory;
- return this;
- }
-
- public ValidatorFactory build() {
- if ( isSpecificProvider() ) {
- return provider.buildValidatorFactory( this );
- }
- else {
- //read provider name from configuration
- Class<? extends ValidatorBuilder<?>> providerClass = null;
-
- if ( providerClass != null ) {
- for ( ValidationProvider provider : providerResolver.getValidationProviders() ) {
- if ( provider.isSuitable( providerClass ) ) {
- return provider.buildValidatorFactory( this );
- }
- }
- throw new ValidationException( "Unable to find provider: " + providerClass );
- }
- else {
- List<ValidationProvider> providers = providerResolver.getValidationProviders();
- assert providers.size() != 0; //I run therefore I am
- return providers.get( 0 ).buildValidatorFactory( this );
- }
- }
- }
-
- private boolean isSpecificProvider() {
- return provider != null;
- }
-
- public MessageResolver getMessageResolver() {
- return messageResolver;
- }
-
- public ConstraintFactory getConstraintFactory() {
- return constraintFactory;
- }
-
- public ValidatorBuilderImpl configure(InputStream stream) {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public InputStream getConfigurationStream() {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-}
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorFactoryBuilderImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorFactoryBuilderImpl.java 2008-11-04 23:09:33 UTC (rev 15508)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorFactoryBuilderImpl.java 2008-11-05 01:20:01 UTC (rev 15509)
@@ -36,7 +36,8 @@
* @author Emmanuel Bernard
*/
public class ValidatorFactoryBuilderImpl implements HibernateValidatorFactoryBuilder, ValidatorFactoryConfiguration {
- private MessageResolver messageResolver = new ResourceBundleMessageResolver();
+ private final MessageResolver defaultMessageResolver = new ResourceBundleMessageResolver();
+ private MessageResolver messageResolver;
private ConstraintFactory constraintFactory = new ConstraintFactoryImpl();
private String configurationFile = "META-INF/validation.xml";
private final ValidationProvider provider;
@@ -50,6 +51,7 @@
this.providerResolver = state.getValidationProviderResolver();
}
this.provider = null;
+ this.messageResolver = defaultMessageResolver;
}
public ValidatorFactoryBuilderImpl(ValidationProvider provider) {
@@ -58,6 +60,7 @@
}
this.provider = provider;
this.providerResolver = null;
+ this.messageResolver = defaultMessageResolver;
}
public ValidatorFactoryBuilderImpl messageResolver(MessageResolver resolver) {
@@ -110,6 +113,10 @@
return null; //To change body of implemented methods use File | Settings | File Templates.
}
+ public MessageResolver getDefaultMessageResolver() {
+ return defaultMessageResolver;
+ }
+
public InputStream getConfigurationStream() {
return null; //To change body of implemented methods use File | Settings | File Templates.
}
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorFactoryImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorFactoryImpl.java 2008-11-04 23:09:33 UTC (rev 15508)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorFactoryImpl.java 2008-11-05 01:20:01 UTC (rev 15509)
@@ -47,4 +47,12 @@
public <T> Validator<T> getValidator(Class<T> clazz) {
return new ValidatorImpl<T>( clazz, constraintFactory, messageResolver );
}
+
+ public <T> Validator<T> getValidator(Class<T> clazz, MessageResolver messageResolver) {
+ return new ValidatorImpl<T>( clazz, constraintFactory, messageResolver );
+ }
+
+ public MessageResolver getMessageResolver() {
+ return messageResolver;
+ }
}
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/bootstrap/ValidationTest.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/bootstrap/ValidationTest.java 2008-11-04 23:09:33 UTC (rev 15508)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/bootstrap/ValidationTest.java 2008-11-05 01:20:01 UTC (rev 15509)
@@ -20,6 +20,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import java.util.Locale;
import javax.validation.Constraint;
import javax.validation.ConstraintDescriptor;
import javax.validation.ConstraintFactory;
@@ -116,6 +117,10 @@
public String interpolate(String message, ConstraintDescriptor constraintDescriptor, Object value) {
return "my custom message";
}
+
+ public String interpolate(String message, ConstraintDescriptor constraintDescriptor, Object value, Locale locale) {
+ throw new UnsupportedOperationException( "No specific locale is possible" );
+ }
}
);
factory = builder.build();
Modified: validator/trunk/validation-api/src/main/java/javax/validation/MessageResolver.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/MessageResolver.java 2008-11-04 23:09:33 UTC (rev 15508)
+++ validator/trunk/validation-api/src/main/java/javax/validation/MessageResolver.java 2008-11-05 01:20:01 UTC (rev 15509)
@@ -17,8 +17,10 @@
*/
package javax.validation;
+import java.util.Locale;
+
/**
- * Interpolate a given validation message.
+ * Interpolate a given constraint violation message.
*
* @author Emmanuel Bernard
* @author Hardy Ferentschik
@@ -26,12 +28,27 @@
public interface MessageResolver {
/**
* Interpolate the message from the constraint parameters and the actual validated object.
+ * The locale is defaulted according to the <code>MessageResolver</code> implementation
+ * See the implementation documentation for more detail.
*
* @param message The message to interpolate.
* @param constraintDescriptor The constraint descriptor.
- * @param value The actual validted object.
+ * @param value The object being validated
*
* @return Interpolated error message.
*/
String interpolate(String message, ConstraintDescriptor constraintDescriptor, Object value);
+
+ /**
+ * Interpolate the message from the constraint parameters and the actual validated object.
+ * The Locale used is provided as a parameter
+ *
+ * @param message The message to interpolate.
+ * @param constraintDescriptor The constraint descriptor.
+ * @param value The object being validated
+ * @param locale the locale targeted for the message
+ *
+ * @return Interpolated error message.
+ */
+ String interpolate(String message, ConstraintDescriptor constraintDescriptor, Object value, Locale locale);
}
Modified: validator/trunk/validation-api/src/main/java/javax/validation/ValidatorFactory.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/ValidatorFactory.java 2008-11-04 23:09:33 UTC (rev 15508)
+++ validator/trunk/validation-api/src/main/java/javax/validation/ValidatorFactory.java 2008-11-05 01:20:01 UTC (rev 15509)
@@ -28,7 +28,28 @@
/**
* return an initialized Validator instance for the specific class.
* Validator instances can be pooled and shared by the implementation
- * In this scenario, the implementation must return thread-safe Validator implementations
+ *
+ * @param clazz the object class the validator validates
*/
<T> Validator<T> getValidator(Class<T> clazz);
+
+ /**
+ * return an initialized Validator instance for the specific class.
+ * Validator instances can be pooled and shared by the implementation
+ *
+ * The returned Validator instance must use the MessageResolver instance
+ * passed as a parameter to resolve error messages.
+ *
+ * @param clazz the object class the validator validates
+ */
+ <T> Validator<T> getValidator(Class<T> clazz, MessageResolver messageResolver);
+
+ /**
+ * Returns the MessageResolver instance configured at initialization time
+ * for the ValidatorFactory
+ * This is the instance used by #getValidator(Class)
+ *
+ * @return MessageResolver instance
+ */
+ MessageResolver getMessageResolver();
}
Modified: validator/trunk/validation-api/src/main/java/javax/validation/ValidatorFactoryBuilder.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/ValidatorFactoryBuilder.java 2008-11-04 23:09:33 UTC (rev 15508)
+++ validator/trunk/validation-api/src/main/java/javax/validation/ValidatorFactoryBuilder.java 2008-11-05 01:20:01 UTC (rev 15509)
@@ -78,6 +78,16 @@
T configure(InputStream stream);
/**
+ * Return an implementation of the MessageResolver interface following the
+ * default MessageREsolver defined in the specification:
+ * - use the ValidationMessages resource bundle to load keys
+ * - use Locale.getDefault()
+ *
+ * @return default MessageResolver implementation compliant with the specification
+ */
+ MessageResolver getDefaultMessageResolver();
+
+ /**
* Build a ValidatorFactory implementation.
*
* @return ValidatorFactory
Modified: validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/GenericBuilderFactory.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/GenericBuilderFactory.java 2008-11-04 23:09:33 UTC (rev 15508)
+++ validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/GenericBuilderFactory.java 2008-11-05 01:20:01 UTC (rev 15509)
@@ -13,7 +13,7 @@
/**
* Defines the provider resolution strategy.
* This resolver returns the list of providers evaluated
- * to build the ValidationBuilder
+ * to build the ValidatorFactoryBuilder
* <p/>
* If no resolver is defined, the default ValidationProviderResolver
* implementation is used.
@@ -24,7 +24,7 @@
/**
* Returns a generic ValidatorFactoryBuilder implementation.
- * At this stage the provider used to build the ValidationFactory is not defined.
+ * At this stage the provider used to build the ValidatorFactory is not defined.
* <p/>
* The ValidatorFactoryBuilder implementation is provided by the first provider returned
* by the ValidationProviderResolver strategy.
Modified: validator/trunk/validation-api/src/main/java/javax/validation/spi/BootstrapState.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/spi/BootstrapState.java 2008-11-04 23:09:33 UTC (rev 15508)
+++ validator/trunk/validation-api/src/main/java/javax/validation/spi/BootstrapState.java 2008-11-05 01:20:01 UTC (rev 15509)
@@ -3,7 +3,7 @@
import javax.validation.ValidationProviderResolver;
/**
- * Defines the state used to bootstrap the ValidationBuilder
+ * Defines the state used to bootstrap the ValidatorFactoryBuilder
*
* @author Emmanuel Bernard
*/
Modified: validator/trunk/validation-api/src/main/java/javax/validation/spi/ValidationProvider.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/spi/ValidationProvider.java 2008-11-04 23:09:33 UTC (rev 15508)
+++ validator/trunk/validation-api/src/main/java/javax/validation/spi/ValidationProvider.java 2008-11-05 01:20:01 UTC (rev 15509)
@@ -67,7 +67,7 @@
ValidatorFactoryBuilder<?> createGenericValidatorFactoryBuilder(BootstrapState state);
/**
- * Build a ValidatorFactory using the current provider implementation. The ValidationFactory
+ * Build a ValidatorFactory using the current provider implementation. The ValidatorFactory
* is assembled and follow the configuration passed using ValidatorFactoryConfiguration.
* <p>
* The returned ValidatorFactory is properly initialized and ready for use.
Modified: validator/trunk/validation-api/src/main/java/javax/validation/spi/ValidatorFactoryConfiguration.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/spi/ValidatorFactoryConfiguration.java 2008-11-04 23:09:33 UTC (rev 15508)
+++ validator/trunk/validation-api/src/main/java/javax/validation/spi/ValidatorFactoryConfiguration.java 2008-11-05 01:20:01 UTC (rev 15509)
@@ -24,7 +24,7 @@
/**
* Contract between a <code>ValidatorFactoryBuilder</code> and a </code>ValidatorProvider</code> to create
* a <code>ValidatorFactory</code>.
- * The configuration artifacts provided to the <code>ValidationBuilder</code> are passed along.
+ * The configuration artifacts provided to the <code>ValidatorFactoryBuilder</code> are passed along.
*
* @author Emmanuel Bernard
* @author Hardy Ferentschik
More information about the hibernate-commits
mailing list