[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