[hibernate-commits] Hibernate SVN: r15823 - in validator/trunk: hibernate-validator/src/main/java/org/hibernate/validation/impl and 5 other directories.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Mon Jan 26 20:13:37 EST 2009
Author: epbernard
Date: 2009-01-26 20:13:37 -0500 (Mon, 26 Jan 2009)
New Revision: 15823
Added:
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/HibernateValidatorConfiguration.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ConfigurationImpl.java
validator/trunk/validation-api/src/main/java/javax/validation/Configuration.java
validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/GenericBootstrap.java
validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/ProviderSpecificBootstrap.java
validator/trunk/validation-api/src/main/java/javax/validation/spi/ConfigurationState.java
Removed:
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/HibernateValidatorFactoryBuilder.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorFactoryBuilderImpl.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/bootstrap/SpecializedBuilderFactory.java
validator/trunk/validation-api/src/main/java/javax/validation/spi/ValidatorFactoryConfiguration.java
Modified:
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/HibernateValidationProvider.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/hibernate-validator/src/test/java/org/hibernate/validation/util/TestUtil.java
validator/trunk/validation-api/src/main/java/javax/validation/Validation.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
Log:
BVAL-92 improvement in building ValidatorFactory
Copied: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/HibernateValidatorConfiguration.java (from rev 15817, validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/HibernateValidatorFactoryBuilder.java)
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/HibernateValidatorConfiguration.java (rev 0)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/HibernateValidatorConfiguration.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -0,0 +1,12 @@
+package org.hibernate.validation;
+
+import javax.validation.Configuration;
+
+/**
+ * Uniquely identify Hibernate Validator in the Bean Validation bootstrap strategy
+ * Also contains Hibernate Validator specific configurations
+ *
+ * @author Emmanuel Bernard
+ */
+public interface HibernateValidatorConfiguration extends Configuration<HibernateValidatorConfiguration> {
+}
Property changes on: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/HibernateValidatorConfiguration.java
___________________________________________________________________
Name: svn:keywords
+ Id
Deleted: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/HibernateValidatorFactoryBuilder.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/HibernateValidatorFactoryBuilder.java 2009-01-26 20:32:36 UTC (rev 15822)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/HibernateValidatorFactoryBuilder.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -1,12 +0,0 @@
-package org.hibernate.validation;
-
-import javax.validation.ValidatorFactoryBuilder;
-
-/**
- * Uniquely identify Hibernate Validator in the Bean Validation bootstrap strategy
- * Also contains Hibernate Validator specific configurations
- *
- * @author Emmanuel Bernard
- */
-public interface HibernateValidatorFactoryBuilder extends ValidatorFactoryBuilder<HibernateValidatorFactoryBuilder> {
-}
Copied: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ConfigurationImpl.java (from rev 15818, validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorFactoryBuilderImpl.java)
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ConfigurationImpl.java (rev 0)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ConfigurationImpl.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -0,0 +1,145 @@
+// $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.ConstraintValidatorFactory;
+import javax.validation.MessageInterpolator;
+import javax.validation.TraversableResolver;
+import javax.validation.ValidationException;
+import javax.validation.ValidationProviderResolver;
+import javax.validation.ValidatorFactory;
+import javax.validation.Configuration;
+import javax.validation.bootstrap.DefaultValidationProviderResolver;
+import javax.validation.spi.BootstrapState;
+import javax.validation.spi.ValidationProvider;
+import javax.validation.spi.ConfigurationState;
+
+import org.hibernate.validation.HibernateValidatorConfiguration;
+import org.hibernate.validation.Version;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class ConfigurationImpl implements HibernateValidatorConfiguration, ConfigurationState {
+
+ static {
+ Version.touch();
+ }
+
+ //FIXME not sure why it is like that. We should cache these instances somehow. Static?
+ private final MessageInterpolator defaultMessageInterpolator = new ResourceBundleMessageInterpolator();
+ private final TraversableResolver defaultTraversableResolver = new DefaultTraversableResolver();
+
+ private MessageInterpolator messageInterpolator;
+ private ConstraintValidatorFactory constraintValidatorFactory = new ConstraintValidatorFactoryImpl();
+ private String configurationFile = "META-INF/validation.xml";
+ private final ValidationProvider provider;
+ private final ValidationProviderResolver providerResolver;
+ private TraversableResolver traversableResolver;
+
+ public ConfigurationImpl(BootstrapState state) {
+ if ( state.getValidationProviderResolver() == null ) {
+ this.providerResolver = new DefaultValidationProviderResolver();
+ }
+ else {
+ this.providerResolver = state.getValidationProviderResolver();
+ }
+ this.provider = null;
+ this.messageInterpolator = defaultMessageInterpolator;
+ this.traversableResolver = defaultTraversableResolver;
+ }
+
+ public ConfigurationImpl(ValidationProvider provider) {
+ if ( provider == null ) {
+ throw new ValidationException( "Assertion error: inconsistent ConfigurationImpl construction" );
+ }
+ this.provider = provider;
+ this.providerResolver = null;
+ this.messageInterpolator = defaultMessageInterpolator;
+ this.traversableResolver = defaultTraversableResolver;
+ }
+
+ public ConfigurationImpl messageInterpolator(MessageInterpolator interpolator) {
+ this.messageInterpolator = interpolator;
+ return this;
+ }
+
+ public ConfigurationImpl traversableResolver(TraversableResolver resolver) {
+ this.traversableResolver = resolver;
+ return this;
+ }
+
+ public ConfigurationImpl constraintValidatorFactory(ConstraintValidatorFactory constraintValidatorFactory) {
+ this.constraintValidatorFactory = constraintValidatorFactory;
+ return this;
+ }
+
+ public ValidatorFactory buildValidatorFactory() {
+ if ( isSpecificProvider() ) {
+ return provider.buildValidatorFactory( this );
+ }
+ else {
+ //read provider name from configuration
+ Class<? extends Configuration<?>> 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 MessageInterpolator getMessageInterpolator() {
+ return messageInterpolator;
+ }
+
+ public ConstraintValidatorFactory getConstraintValidatorFactory() {
+ return constraintValidatorFactory;
+ }
+
+ public TraversableResolver getTraversableResolver() {
+ return traversableResolver;
+ }
+
+ public ConfigurationImpl customConfiguration(InputStream stream) {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public MessageInterpolator getDefaultMessageInterpolator() {
+ return defaultMessageInterpolator;
+ }
+
+ public InputStream getConfigurationStream() {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+}
Property changes on: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ConfigurationImpl.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:keywords
+ Id
Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/HibernateValidationProvider.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/HibernateValidationProvider.java 2009-01-26 20:32:36 UTC (rev 15822)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/HibernateValidationProvider.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -18,14 +18,13 @@
package org.hibernate.validation.impl;
import javax.validation.ValidationException;
-import javax.validation.ValidatorFactoryBuilder;
+import javax.validation.Configuration;
import javax.validation.ValidatorFactory;
import javax.validation.spi.ValidationProvider;
-import javax.validation.spi.ValidatorFactoryConfiguration;
+import javax.validation.spi.ConfigurationState;
import javax.validation.spi.BootstrapState;
-import org.hibernate.validation.HibernateValidatorFactoryBuilder;
-import org.hibernate.validation.Version;
+import org.hibernate.validation.HibernateValidatorConfiguration;
/**
* Default implementation of <code>ValidationProvider</code> within Hibernate validator.
@@ -38,31 +37,31 @@
/**
* {@inheritDoc}
*/
- public boolean isSuitable(Class<? extends ValidatorFactoryBuilder<?>> builderClass) {
- return builderClass == HibernateValidatorFactoryBuilder.class;
+ public boolean isSuitable(Class<? extends Configuration<?>> builderClass) {
+ return builderClass == HibernateValidatorConfiguration.class;
}
- public <T extends ValidatorFactoryBuilder<T>> T createSpecializedValidatorFactoryBuilder(BootstrapState state, Class<T> builderClass) {
- if ( !isSuitable( builderClass ) ) {
+ public <T extends Configuration<T>> T createSpecializedConfiguration(BootstrapState state, Class<T> configurationClass) {
+ if ( !isSuitable( configurationClass ) ) {
throw new ValidationException(
- "Illegal call to createSpecializedValidatorFactoryBuilder() for a non suitable provider"
+ "Illegal call to createSpecializedConfiguration() for a non suitable provider"
);
}
//cast protected by isSuitable call
- return builderClass.cast( new ValidatorFactoryBuilderImpl( this ) );
+ return configurationClass.cast( new ConfigurationImpl( this ) );
}
/**
* {@inheritDoc}
*/
- public ValidatorFactoryBuilder<?> createGenericValidatorFactoryBuilder(BootstrapState state) {
- return new ValidatorFactoryBuilderImpl( state );
+ public Configuration<?> createGenericConfiguration(BootstrapState state) {
+ return new ConfigurationImpl( state );
}
/**
* {@inheritDoc}
*/
- public ValidatorFactory buildValidatorFactory(ValidatorFactoryConfiguration configuration) {
- return new ValidatorFactoryImpl( configuration );
+ public ValidatorFactory buildValidatorFactory(ConfigurationState configurationState) {
+ return new ValidatorFactoryImpl( configurationState );
}
}
Deleted: 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 2009-01-26 20:32:36 UTC (rev 15822)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorFactoryBuilderImpl.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -1,145 +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.ConstraintValidatorFactory;
-import javax.validation.MessageInterpolator;
-import javax.validation.TraversableResolver;
-import javax.validation.ValidationException;
-import javax.validation.ValidationProviderResolver;
-import javax.validation.ValidatorFactory;
-import javax.validation.ValidatorFactoryBuilder;
-import javax.validation.bootstrap.DefaultValidationProviderResolver;
-import javax.validation.spi.BootstrapState;
-import javax.validation.spi.ValidationProvider;
-import javax.validation.spi.ValidatorFactoryConfiguration;
-
-import org.hibernate.validation.HibernateValidatorFactoryBuilder;
-import org.hibernate.validation.Version;
-
-/**
- * @author Emmanuel Bernard
- */
-public class ValidatorFactoryBuilderImpl implements HibernateValidatorFactoryBuilder, ValidatorFactoryConfiguration {
-
- static {
- Version.touch();
- }
-
- //FIXME not sure why it is like that. We should cache these instances somehow. Static?
- private final MessageInterpolator defaultMessageInterpolator = new ResourceBundleMessageInterpolator();
- private final TraversableResolver defaultTraversableResolver = new DefaultTraversableResolver();
-
- private MessageInterpolator messageInterpolator;
- private ConstraintValidatorFactory constraintValidatorFactory = new ConstraintValidatorFactoryImpl();
- private String configurationFile = "META-INF/validation.xml";
- private final ValidationProvider provider;
- private final ValidationProviderResolver providerResolver;
- private TraversableResolver traversableResolver;
-
- public ValidatorFactoryBuilderImpl(BootstrapState state) {
- if ( state.getValidationProviderResolver() == null ) {
- this.providerResolver = new DefaultValidationProviderResolver();
- }
- else {
- this.providerResolver = state.getValidationProviderResolver();
- }
- this.provider = null;
- this.messageInterpolator = defaultMessageInterpolator;
- this.traversableResolver = defaultTraversableResolver;
- }
-
- public ValidatorFactoryBuilderImpl(ValidationProvider provider) {
- if ( provider == null ) {
- throw new ValidationException( "Assertion error: inconsistent ValidatorFactoryBuilderImpl construction" );
- }
- this.provider = provider;
- this.providerResolver = null;
- this.messageInterpolator = defaultMessageInterpolator;
- this.traversableResolver = defaultTraversableResolver;
- }
-
- public ValidatorFactoryBuilderImpl messageInterpolator(MessageInterpolator interpolator) {
- this.messageInterpolator = interpolator;
- return this;
- }
-
- public ValidatorFactoryBuilderImpl traversableResolver(TraversableResolver resolver) {
- this.traversableResolver = resolver;
- return this;
- }
-
- public ValidatorFactoryBuilderImpl constraintValidatorFactory(ConstraintValidatorFactory constraintValidatorFactory) {
- this.constraintValidatorFactory = constraintValidatorFactory;
- return this;
- }
-
- public ValidatorFactory build() {
- if ( isSpecificProvider() ) {
- return provider.buildValidatorFactory( this );
- }
- else {
- //read provider name from configuration
- Class<? extends ValidatorFactoryBuilder<?>> 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 MessageInterpolator getMessageInterpolator() {
- return messageInterpolator;
- }
-
- public ConstraintValidatorFactory getConstraintValidatorFactory() {
- return constraintValidatorFactory;
- }
-
- public TraversableResolver getTraversableResolver() {
- return traversableResolver;
- }
-
- public ValidatorFactoryBuilderImpl configure(InputStream stream) {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public MessageInterpolator getDefaultMessageInterpolator() {
- return defaultMessageInterpolator;
- }
-
- 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 2009-01-26 20:32:36 UTC (rev 15822)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorFactoryImpl.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -24,7 +24,7 @@
import javax.validation.TraversableResolver;
import javax.validation.Validator;
import javax.validation.ValidatorBuilder;
-import javax.validation.spi.ValidatorFactoryConfiguration;
+import javax.validation.spi.ConfigurationState;
import org.hibernate.validation.engine.BeanMetaDataImpl;
import org.hibernate.validation.engine.ValidatorFactoryImplementor;
@@ -44,10 +44,10 @@
= new ConcurrentHashMap<Class<?>, BeanMetaDataImpl<?>>(10);
- public ValidatorFactoryImpl(ValidatorFactoryConfiguration configuration) {
- this.messageInterpolator = configuration.getMessageInterpolator();
- this.constraintValidatorFactory = configuration.getConstraintValidatorFactory();
- this.traversableResolver = configuration.getTraversableResolver();
+ public ValidatorFactoryImpl(ConfigurationState configurationState) {
+ this.messageInterpolator = configurationState.getMessageInterpolator();
+ this.constraintValidatorFactory = configurationState.getConstraintValidatorFactory();
+ this.traversableResolver = configurationState.getTraversableResolver();
//do init metadata from XML form
}
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 2009-01-26 20:32:36 UTC (rev 15822)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/bootstrap/ValidationTest.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -30,10 +30,10 @@
import javax.validation.ValidationException;
import javax.validation.ValidationProviderResolver;
import javax.validation.Validator;
-import javax.validation.ValidatorFactoryBuilder;
+import javax.validation.Configuration;
import javax.validation.ValidatorFactory;
import javax.validation.ConstraintValidatorContext;
-import javax.validation.bootstrap.SpecializedBuilderFactory;
+import javax.validation.bootstrap.ProviderSpecificBootstrap;
import javax.validation.spi.ValidationProvider;
import static org.junit.Assert.assertEquals;
@@ -42,11 +42,11 @@
import static org.junit.Assert.fail;
import org.junit.Test;
-import org.hibernate.validation.HibernateValidatorFactoryBuilder;
+import org.hibernate.validation.HibernateValidatorConfiguration;
import org.hibernate.validation.constraints.NotNullConstraintValidator;
import org.hibernate.validation.eg.Customer;
import org.hibernate.validation.impl.ConstraintValidatorFactoryImpl;
-import org.hibernate.validation.impl.ValidatorFactoryBuilderImpl;
+import org.hibernate.validation.impl.ConfigurationImpl;
import org.hibernate.validation.impl.ValidatorFactoryImpl;
import org.hibernate.validation.impl.HibernateValidationProvider;
@@ -59,24 +59,24 @@
@Test
public void testBootstrapAsServiceWithBuilder() {
- HibernateValidatorFactoryBuilder builder = Validation
- .builderType( HibernateValidatorFactoryBuilder.class )
- .getBuilder();
- assertDefaultBuilderAndFactory( builder );
+ HibernateValidatorConfiguration configuration = Validation
+ .byProvider( HibernateValidatorConfiguration.class )
+ .configure();
+ assertDefaultBuilderAndFactory( configuration );
}
@Test
public void testBootstrapAsServiceDefault() {
- ValidatorFactoryBuilder<?> builder = Validation.getBuilder();
- assertDefaultBuilderAndFactory( builder );
+ ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
+ assertDefaultFactory( factory );
}
@Test
- public void testGetCustomerValiator() {
- ValidatorFactoryBuilder<?> builder = Validation.getBuilder();
- assertDefaultBuilderAndFactory( builder );
+ public void testGetCustomerValidator() {
+ Configuration<?> configuration = Validation.byDefaultProvider().configure();
+ assertDefaultBuilderAndFactory( configuration );
- ValidatorFactory factory = builder.build();
+ ValidatorFactory factory = configuration.buildValidatorFactory();
Validator validator = factory.getValidator();
Customer customer = new Customer();
@@ -96,10 +96,10 @@
public void testCustomMessageInterpolator() {
// first try with the default message resolver
- ValidatorFactoryBuilder<?> builder = Validation.getBuilder();
- assertDefaultBuilderAndFactory( builder );
+ Configuration<?> configuration = Validation.byDefaultProvider().configure();
+ assertDefaultBuilderAndFactory( configuration );
- ValidatorFactory factory = builder.build();
+ ValidatorFactory factory = configuration.buildValidatorFactory();
Validator validator = factory.getValidator( );
Customer customer = new Customer();
@@ -110,9 +110,9 @@
ConstraintViolation<Customer> constraintViolation = constraintViolations.iterator().next();
assertEquals( "Wrong message", "may not be null", constraintViolation.getInterpolatedMessage() );
- //FIXME nothing guarantee that a builder can be reused
- // now we modify the builder, get a new factory and valiator and try again
- builder.messageInterpolator(
+ //FIXME nothing guarantee that a configuration can be reused
+ // now we modify the configuration, get a new factory and valiator and try again
+ configuration.messageInterpolator(
new MessageInterpolator() {
public String interpolate(String message, ConstraintDescriptor constraintDescriptor, Object value) {
return "my custom message";
@@ -123,7 +123,7 @@
}
}
);
- factory = builder.build();
+ factory = configuration.buildValidatorFactory();
validator = factory.getValidator( );
constraintViolations = validator.validate( customer );
assertEquals( "Wrong number of constraints", 1, constraintViolations.size() );
@@ -134,10 +134,10 @@
@Test
public void testCustomConstraintValidatorFactory() {
- ValidatorFactoryBuilder<?> builder = Validation.getBuilder();
- assertDefaultBuilderAndFactory( builder );
+ Configuration<?> configuration = Validation.byDefaultProvider().configure();
+ assertDefaultBuilderAndFactory( configuration );
- ValidatorFactory factory = builder.build();
+ ValidatorFactory factory = configuration.buildValidatorFactory();
Validator validator = factory.getValidator( );
Customer customer = new Customer();
@@ -148,9 +148,9 @@
ConstraintViolation<Customer> constraintViolation = constraintViolations.iterator().next();
assertEquals( "Wrong message", "may not be null", constraintViolation.getInterpolatedMessage() );
- //FIXME nothing guarantee that a builder can be reused
- // now we modify the builder, get a new factory and valiator and try again
- builder.constraintValidatorFactory(
+ //FIXME nothing guarantee that a configuration can be reused
+ // now we modify the configuration, get a new factory and valiator and try again
+ configuration.constraintValidatorFactory(
new ConstraintValidatorFactory() {
public <T extends ConstraintValidator> T getInstance(Class<T> key) {
if ( key == NotNullConstraintValidator.class ) {
@@ -160,7 +160,7 @@
}
}
);
- factory = builder.build();
+ factory = configuration.buildValidatorFactory();
validator = factory.getValidator( );
constraintViolations = validator.validate( customer );
assertEquals( "Wrong number of constraints", 0, constraintViolations.size() );
@@ -178,11 +178,11 @@
};
- HibernateValidatorFactoryBuilder builder = Validation
- .builderType( HibernateValidatorFactoryBuilder.class )
+ HibernateValidatorConfiguration configuration = Validation
+ .byProvider( HibernateValidatorConfiguration.class )
.providerResolver( resolver )
- .getBuilder();
- assertDefaultBuilderAndFactory( builder );
+ .configure();
+ assertDefaultBuilderAndFactory( configuration );
}
@Test
@@ -197,11 +197,11 @@
};
- ValidatorFactoryBuilder<?> builder = Validation
- .defineBootstrapState()
+ Configuration<?> configuration = Validation
+ .byDefaultProvider()
.providerResolver( resolver )
- .getBuilder();
- assertDefaultBuilderAndFactory( builder );
+ .configure();
+ assertDefaultBuilderAndFactory( configuration );
}
@Test
@@ -213,29 +213,33 @@
}
};
- final SpecializedBuilderFactory<HibernateValidatorFactoryBuilder> specializedBuilderFactory =
+ final ProviderSpecificBootstrap<HibernateValidatorConfiguration> providerSpecificBootstrap =
Validation
- .builderType( HibernateValidatorFactoryBuilder.class)
+ .byProvider( HibernateValidatorConfiguration.class)
.providerResolver( resolver );
try {
- specializedBuilderFactory.getBuilder();
+ providerSpecificBootstrap.configure();
fail();
}
catch ( ValidationException e ) {
assertEquals(
"Wrong error message",
- "Unable to find provider: interface org.hibernate.validation.HibernateValidatorFactoryBuilder",
+ "Unable to find provider: interface org.hibernate.validation.HibernateValidatorConfiguration",
e.getMessage()
);
}
}
- private void assertDefaultBuilderAndFactory(ValidatorFactoryBuilder builder) {
- assertNotNull( builder );
- assertTrue( builder instanceof ValidatorFactoryBuilderImpl );
+ private void assertDefaultBuilderAndFactory(Configuration configuration) {
+ assertNotNull( configuration );
+ assertTrue( configuration instanceof ConfigurationImpl );
- ValidatorFactory factory = builder.build();
+ ValidatorFactory factory = configuration.buildValidatorFactory();
+ assertDefaultFactory(factory);
+ }
+
+ private void assertDefaultFactory(ValidatorFactory factory) {
assertNotNull( factory );
assertTrue( factory instanceof ValidatorFactoryImpl );
}
Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/util/TestUtil.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/util/TestUtil.java 2009-01-26 20:32:36 UTC (rev 15822)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/util/TestUtil.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -24,7 +24,7 @@
import static org.junit.Assert.assertEquals;
-import org.hibernate.validation.HibernateValidatorFactoryBuilder;
+import org.hibernate.validation.HibernateValidatorConfiguration;
/**
* Tests for the <code>ReflectionHelper</code>.
@@ -40,10 +40,10 @@
public static Validator getValidator() {
if ( hibernateValidator == null ) {
- HibernateValidatorFactoryBuilder builder = Validation
- .builderType( HibernateValidatorFactoryBuilder.class )
- .getBuilder();
- hibernateValidator = builder.build().getValidator();
+ HibernateValidatorConfiguration configuration = Validation
+ .byProvider( HibernateValidatorConfiguration.class )
+ .configure();
+ hibernateValidator = configuration.buildValidatorFactory().getValidator();
}
return hibernateValidator;
}
Copied: validator/trunk/validation-api/src/main/java/javax/validation/Configuration.java (from rev 15818, validator/trunk/validation-api/src/main/java/javax/validation/ValidatorFactoryBuilder.java)
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/Configuration.java (rev 0)
+++ validator/trunk/validation-api/src/main/java/javax/validation/Configuration.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -0,0 +1,110 @@
+// $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 javax.validation;
+
+import java.io.InputStream;
+
+/**
+ * Receives configuration information, selects the appropriate
+ * Bean Validation provider and build the appropriate
+ * ValidatorFactory.
+ * <p/>
+ * Usage:
+ * <pre>
+ * Configuration<?> configuration = //provided by one of the Validation bootstrap methods
+ * ValidatorFactory = configuration
+ * .messageInterpolator( new CustomMessageInterpolator() )
+ * .buildValidatorFactory();
+ * </pre>
+ * <p/>
+ * The ValidationProviderResolver is specified at Configuration time
+ * (see {@link javax.validation.spi.ValidationProvider}).
+ * If none is explicitely requested, the default ValidationProviderResolver is used.
+ * <p/>
+ * The provider is selected in the following way:
+ * - if a specific Configuration subclass is requested programmatically using
+ * Validation.byProvider(Class), find the first provider matching it
+ * - if a specific Configuration subclass is defined in META-INF/validation.xml,
+ * find the first provider matching it
+ * - otherwise, use the first provider returned by the ValidationProviderResolver
+ * <p/>
+ * Implementations are not meant to be thread-safe
+ *
+ * @author Emmanuel Bernard
+ */
+public interface Configuration<T extends Configuration<T>> {
+ /**
+ * Defines the message interpolator used. Has priority over the configuration
+ * based message interpolator.
+ *
+ * @param interpolator message interpolator implementation.
+ *
+ * @return <code>this</code> following the chaining method pattern.
+ */
+ T messageInterpolator(MessageInterpolator interpolator);
+
+ /**
+ * Defines the traversable resolver used. Has priority over the configuration
+ * based traversable resolver.
+ *
+ * @param resolver traversable resolver implementation.
+ *
+ * @return <code>this</code> following the chaining method pattern.
+ */
+ T traversableResolver(TraversableResolver resolver);
+
+ /**
+ * Defines the constraint validator factory. Has priority over the configuration
+ * based constraint factory.
+ *
+ * @param constraintValidatorFactory constraint factory inmplementation.
+ *
+ * @return <code>this</code> following the chaining method pattern.
+ */
+ T constraintValidatorFactory(ConstraintValidatorFactory constraintValidatorFactory);
+
+ /**
+ * Configure the ValidatorFactory based on <code>stream</code>
+ * If not specified, META-INF/validation.xml is used
+ * <p/>
+ * The stream should be closed by the client API after the
+ * ValidatorFactory has been returned
+ *
+ * @param stream configuration stream.
+ *
+ * @return <code>this</code> following the chaining method pattern.
+ */
+ T customConfiguration(InputStream stream);
+
+ /**
+ * Return an implementation of the MessageInterpolator interface following the
+ * default MessageInterpolator defined in the specification:
+ * - use the ValidationMessages resource bundle to load keys
+ * - use Locale.getDefault()
+ *
+ * @return default MessageInterpolator implementation compliant with the specification
+ */
+ MessageInterpolator getDefaultMessageInterpolator();
+
+ /**
+ * Build a ValidatorFactory implementation.
+ *
+ * @return ValidatorFactory
+ */
+ ValidatorFactory buildValidatorFactory();
+}
Property changes on: validator/trunk/validation-api/src/main/java/javax/validation/Configuration.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:keywords
+ Id
Modified: validator/trunk/validation-api/src/main/java/javax/validation/Validation.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/Validation.java 2009-01-26 20:32:36 UTC (rev 15822)
+++ validator/trunk/validation-api/src/main/java/javax/validation/Validation.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -18,8 +18,8 @@
package javax.validation;
import javax.validation.bootstrap.DefaultValidationProviderResolver;
-import javax.validation.bootstrap.GenericBuilderFactory;
-import javax.validation.bootstrap.SpecializedBuilderFactory;
+import javax.validation.bootstrap.GenericBootstrap;
+import javax.validation.bootstrap.ProviderSpecificBootstrap;
import javax.validation.spi.BootstrapState;
import javax.validation.spi.ValidationProvider;
@@ -30,7 +30,7 @@
* <li>
* The easiest approach is to use the default Bean Validation provider.
* <pre>
- * ValidatorFactory factory = Validation.getBuilder().build();
+ * ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
* </pre>
* In this case {@link javax.validation.bootstrap.DefaultValidationProviderResolver}
* will be used to locate available providers.
@@ -49,11 +49,11 @@
* <code>ValidationProvider</code> is then determined in the same way
* as in the default bootstrapping case (see above).
* <pre>
- * ValidatorFactoryBuilder<?> builder = Validation
- * .defineBootstrapState()
+ * Configuration<?> configuration = Validation
+ * .byDefaultProvider()
* .providerResolver( new MyResolverStrategy() )
- * .getBuilder();
- * ValidatorFactory factory = builder.build();
+ * .configure();
+ * ValidatorFactory factory = configuration.buildValidatorFactory();
* </pre>
* </li>
*
@@ -61,15 +61,15 @@
* <li>
* The third approach allows you to specify explicitly and in
* a type safe fashion the expected provider by
- * using its specific <code>ValidatorFactoryBuilder</code> sub-interface.
+ * using its specific <code>Configuration</code> sub-interface.
*
* Optionally you can choose a custom <code>ValidationProviderResolver</code>.
* <pre>
- * ACMEValidatorFactoryBuilder builder = Validation
- * .builderType(ACMEValidatorFactoryBuilder.class)
+ * ACMEConfiguration configuration = Validation
+ * .byProvider(ACMEConfiguration.class)
* .providerResolver( new MyResolverStrategy() ) // optionally set the provider resolver
- * .getBuilder();
- * ValidatorFactory factory = builder.build();
+ * .configure();
+ * ValidatorFactory factory = configuration.buildValidatorFactory();
* </pre>
* </li>
* </ul>
@@ -91,77 +91,78 @@
public class Validation {
/**
- * Build a <code>ValidatorFactoryBuilder</code>. The actual provider
- * choice is given by the XML configuration. If the
- * XML configuration does not exsist the default is taken.
+ * Build and return a ValidatorFactory instanced based on the
+ * default Bean Validation provider and following the
+ * XML configuration.
* <p/>
* The provider list is resolved using the
* {@link javax.validation.bootstrap.DefaultValidationProviderResolver}.
+ * <p/> The code is semantically equivalent to
+ * <code>Validation.byDefaultProvider().configure().buildValidatorFactory()</code>
*
- * @return <code>ValidatorFactoryBuilder</code> instance.
+ * @return <code>ValidatorFactory</code> instance.
*/
- public static ValidatorFactoryBuilder<?> getBuilder() {
- return defineBootstrapState().getBuilder();
+ public static ValidatorFactory buildDefaultValidatorFactory() {
+ return byDefaultProvider().configure().buildValidatorFactory();
}
/**
- * Build a <code>ValidatorFactoryBuilder</code>. The provider list is resolved
+ * Build a <code>Configuration</code>. The provider list is resolved
* using the strategy provided to the bootstrap state.
* <pre>
- * ValidatorFactoryBuilder<?> builder = Validation
- * .defineBootstrapState()
+ * Configuration<?> configuration = Validation
+ * .byDefaultProvider()
* .providerResolver( new MyResolverStrategy() )
- * .getBuilder();
- * ValidatorFactory factory = builder.build();
+ * .configure();
+ * ValidatorFactory factory = configuration.buildValidatorFactory();
* </pre>
* The actual provider choice is given by the XML configuration. If the XML
* configuration does not exsist the first available provider will be returned.
*
- * @return instance building a generic <code>ValidatorFactoryBuilder</code>
+ * @return instance building a generic <code>Configuration</code>
* compliant with the bootstrap state provided.
*/
- public static GenericBuilderFactory defineBootstrapState() {
- return new GenericBuilderFactoryImpl();
+ public static GenericBootstrap byDefaultProvider() {
+ return new GenericBootstrapImpl();
}
/**
- * Build a <code>ValidatorFactoryBuilder</code> for a particular provider implementation.
+ * Build a <code>Configuration</code> for a particular provider implementation.
* Optionally override the provider resolution strategy used to determine the provider.
* <p/>
* Used by applications targeting a specific provider programmatically.
* <p/>
* <pre>
- * ACMEValidatorFactoryBuilder builder =
- * Validation.builderType(ACMEValidatorFactoryBuilder.class)
+ * ACMEConfiguration configuration =
+ * Validation.byProvider(ACMEConfiguration.class)
* .providerResolver( new MyResolverStrategy() )
- * .build();
+ * .configure();
* </pre>,
- * where <code>ACMEValidatorFactoryBuilder</code> is the
- * <code>ValidatorFactoryBuilder</code> sub interface uniquely identifying the
+ * where <code>ACMEConfiguration</code> is the
+ * <code>Configuration</code> sub interface uniquely identifying the
* ACME Bean Validation provider.
*
- * @param builderType the <code>ValidatorFactoryBuilder</code> sub interface
+ * @param configurationType the <code>Configuration</code> sub interface
* uniquely defining the targeted provider.
*
- * @return instance building a provider specific <code>ValidatorFactoryBuilder</code>
+ * @return instance building a provider specific <code>Configuration</code>
* sub interface implementation.
*
- * @see #getBuilder()
*/
- public static <T extends ValidatorFactoryBuilder<T>>
- SpecializedBuilderFactory<T> builderType(Class<T> builderType) {
- return new SpecializedBuilderFactoryImpl<T>( builderType );
+ public static <T extends Configuration<T>>
+ ProviderSpecificBootstrap<T> byProvider(Class<T> configurationType) {
+ return new ProviderSpecificBootstrapImpl<T>( configurationType );
}
//private class, not exposed
- private static class SpecializedBuilderFactoryImpl<T extends ValidatorFactoryBuilder<T>>
- implements SpecializedBuilderFactory<T> {
+ private static class ProviderSpecificBootstrapImpl<T extends Configuration<T>>
+ implements ProviderSpecificBootstrap<T> {
- private Class<T> builderType;
+ private Class<T> configurationType;
private ValidationProviderResolver resolver;
- public SpecializedBuilderFactoryImpl(Class<T> builderType) {
- this.builderType = builderType;
+ public ProviderSpecificBootstrapImpl(Class<T> configurationType) {
+ this.configurationType = configurationType;
}
/**
@@ -172,43 +173,43 @@
*
* @return self
*/
- public SpecializedBuilderFactory<T> providerResolver(ValidationProviderResolver resolver) {
+ public ProviderSpecificBootstrap<T> providerResolver(ValidationProviderResolver resolver) {
this.resolver = resolver;
return this;
}
/**
- * Determine the provider implementation suitable for builderType and delegate the creation
- * of this specific ValidatorFactoryBuilder subclass to the provider.
+ * Determine the provider implementation suitable for byProvider(Class)
+ * and delegate the creation of this specific Configuration subclass to the provider.
*
- * @return a ValidatorFactoryBuilder sub interface implementation
+ * @return a Configuration sub interface implementation
*/
- public T getBuilder() {
- if ( builderType == null ) {
+ public T configure() {
+ if ( configurationType == null ) {
throw new ValidationException(
- "builder is mandatory. Use getBuilder() to use the generic provider discovery mechanism"
+ "builder is mandatory. Use Validation.byDefaultProvider() to use the generic provider discovery mechanism"
);
}
if ( resolver == null ) {
resolver = new DefaultValidationProviderResolver();
}
for ( ValidationProvider provider : resolver.getValidationProviders() ) {
- if ( provider.isSuitable( builderType ) ) {
- GenericBuilderFactoryImpl state = new GenericBuilderFactoryImpl();
+ if ( provider.isSuitable( configurationType ) ) {
+ GenericBootstrapImpl state = new GenericBootstrapImpl();
state.providerResolver( resolver );
- return provider.createSpecializedValidatorFactoryBuilder( state, builderType );
+ return provider.createSpecializedConfiguration( state, configurationType );
}
}
- throw new ValidationException( "Unable to find provider: " + builderType );
+ throw new ValidationException( "Unable to find provider: " + configurationType );
}
}
//private class, not exposed
- private static class GenericBuilderFactoryImpl implements GenericBuilderFactory, BootstrapState {
+ private static class GenericBootstrapImpl implements GenericBootstrap, BootstrapState {
private ValidationProviderResolver resolver;
- public GenericBuilderFactory providerResolver(ValidationProviderResolver resolver) {
+ public GenericBootstrap providerResolver(ValidationProviderResolver resolver) {
this.resolver = resolver;
return this;
}
@@ -217,7 +218,7 @@
return resolver;
}
- public ValidatorFactoryBuilder<?> getBuilder() {
+ public Configuration<?> configure() {
ValidationProviderResolver resolver = this.resolver == null ?
new DefaultValidationProviderResolver() :
this.resolver;
@@ -226,7 +227,7 @@
//FIXME looks like an assertion error almost
throw new ValidationException( "Unable to find a default provider" );
}
- return resolver.getValidationProviders().get( 0 ).createGenericValidatorFactoryBuilder( this );
+ return resolver.getValidationProviders().get( 0 ).createGenericConfiguration( this );
}
}
}
Deleted: validator/trunk/validation-api/src/main/java/javax/validation/ValidatorFactoryBuilder.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/ValidatorFactoryBuilder.java 2009-01-26 20:32:36 UTC (rev 15822)
+++ validator/trunk/validation-api/src/main/java/javax/validation/ValidatorFactoryBuilder.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -1,110 +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 javax.validation;
-
-import java.io.InputStream;
-
-/**
- * Receives configuration information, selects the appropriate
- * Bean Validation provider and build the appropriate
- * ValidatorFactory.
- * <p/>
- * Usage:
- * <pre>
- * ValidatorFactoryBuilder<?> builder = //provided by one of the Validation bootstrap methods
- * ValidatorFactory = builder
- * .messageInterpolator( new CustomMessageInterpolator() )
- * .build();
- * </pre>
- * <p/>
- * The ValidationProviderResolver is specified at ValidatorFactoryBuilder time
- * (see {@link javax.validation.spi.ValidationProvider}).
- * If none is explicitely requested, the default ValidationProviderResolver is used.
- * <p/>
- * The provider is selected in the following way:
- * - if a specific ValidatorFactoryBuilder subclass is requested programmatically using
- * Validation.builderType(), find the first provider matching it
- * - if a specific ValidatorFactoryBuilder subclass is defined in META-INF/validation.xml,
- * find the first provider matching it
- * - otherwise, use the first provider returned by the ValidationProviderResolver
- * <p/>
- * Implementations are not meant to be thread-safe
- *
- * @author Emmanuel Bernard
- */
-public interface ValidatorFactoryBuilder<T extends ValidatorFactoryBuilder> {
- /**
- * Defines the message interpolator used. Has priority over the configuration
- * based message interpolator.
- *
- * @param interpolator message interpolator implementation.
- *
- * @return <code>this</code> following the chaining method pattern.
- */
- T messageInterpolator(MessageInterpolator interpolator);
-
- /**
- * Defines the traversable resolver used. Has priority over the configuration
- * based traversable resolver.
- *
- * @param resolver traversable resolver implementation.
- *
- * @return <code>this</code> following the chaining method pattern.
- */
- T traversableResolver(TraversableResolver resolver);
-
- /**
- * Defines the constraint validator factory. Has priority over the configuration
- * based constraint factory.
- *
- * @param constraintValidatorFactory constraint factory inmplementation.
- *
- * @return <code>this</code> following the chaining method pattern.
- */
- T constraintValidatorFactory(ConstraintValidatorFactory constraintValidatorFactory);
-
- /**
- * Configure the ValidatorFactory based on <code>stream</code>
- * If not specified, META-INF/validation.xml is used
- * <p/>
- * The stream should be closed by the client API after the
- * ValidatorFactory has been returned
- *
- * @param stream configuration stream.
- *
- * @return <code>this</code> following the chaining method pattern.
- */
- T configure(InputStream stream);
-
- /**
- * Return an implementation of the MessageInterpolator interface following the
- * default MessageInterpolator defined in the specification:
- * - use the ValidationMessages resource bundle to load keys
- * - use Locale.getDefault()
- *
- * @return default MessageInterpolator implementation compliant with the specification
- */
- MessageInterpolator getDefaultMessageInterpolator();
-
- /**
- * Build a ValidatorFactory implementation.
- *
- * @return ValidatorFactory
- */
- ValidatorFactory build();
-}
Copied: validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/GenericBootstrap.java (from rev 15817, validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/GenericBuilderFactory.java)
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/GenericBootstrap.java (rev 0)
+++ validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/GenericBootstrap.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -0,0 +1,35 @@
+package javax.validation.bootstrap;
+
+import javax.validation.ValidationProviderResolver;
+import javax.validation.Configuration;
+
+/**
+ * Defines the state used to bootstrap Bean Validation and
+ * creates a provider agnostic Configuration.
+ *
+ * @author Emmanuel Bernard
+ */
+public interface GenericBootstrap {
+ /**
+ * Defines the provider resolution strategy.
+ * This resolver returns the list of providers evaluated
+ * to build the Configuration
+ * <p/>
+ * If no resolver is defined, the default ValidationProviderResolver
+ * implementation is used.
+ *
+ * @return <code>this</code> following the chaining method pattern
+ */
+ GenericBootstrap providerResolver(ValidationProviderResolver resolver);
+
+ /**
+ * Returns a generic Configuration implementation.
+ * At this stage the provider used to build the ValidatorFactory is not defined.
+ * <p/>
+ * The Configuration implementation is provided by the first provider returned
+ * by the ValidationProviderResolver strategy.
+ *
+ * @return a Configuration implementation compliant with the bootstrap state
+ */
+ Configuration<?> configure();
+}
Property changes on: validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/GenericBootstrap.java
___________________________________________________________________
Name: svn:keywords
+ Id
Deleted: validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/GenericBuilderFactory.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/GenericBuilderFactory.java 2009-01-26 20:32:36 UTC (rev 15822)
+++ validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/GenericBuilderFactory.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -1,35 +0,0 @@
-package javax.validation.bootstrap;
-
-import javax.validation.ValidationProviderResolver;
-import javax.validation.ValidatorFactoryBuilder;
-
-/**
- * Defines the state used to bootstrap Bean Validation and create an appropriate
- * ValidatorFactoryBuilder
- *
- * @author Emmanuel Bernard
- */
-public interface GenericBuilderFactory {
- /**
- * Defines the provider resolution strategy.
- * This resolver returns the list of providers evaluated
- * to build the ValidatorFactoryBuilder
- * <p/>
- * If no resolver is defined, the default ValidationProviderResolver
- * implementation is used.
- *
- * @return <code>this</code> following the chaining method pattern
- */
- GenericBuilderFactory providerResolver(ValidationProviderResolver resolver);
-
- /**
- * Returns a generic ValidatorFactoryBuilder implementation.
- * 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.
- *
- * @return a ValidatorFactoryBuilder implementation compliant with the bootstrap state
- */
- ValidatorFactoryBuilder<?> getBuilder();
-}
Copied: validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/ProviderSpecificBootstrap.java (from rev 15817, validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/SpecializedBuilderFactory.java)
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/ProviderSpecificBootstrap.java (rev 0)
+++ validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/ProviderSpecificBootstrap.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -0,0 +1,38 @@
+package javax.validation.bootstrap;
+
+import javax.validation.ValidationProviderResolver;
+import javax.validation.Configuration;
+
+/**
+ * Defines the state used to bootstrap Bean Validation and
+ * creates a provider specific Configuration. The specific Configuration
+ * sub interface uniquely identifying a provider.
+ * <p/>
+ * The requested provider is the first provider suitable for T (as defined in
+ * {@link javax.validation.spi.ValidationProvider#isSuitable(Class)}). The
+ * list of providers evaluated is returned by {@link ValidationProviderResolver}.
+ * If no ValidationProviderResolver is defined, the
+ * default ValidationProviderResolver strategy is used.
+ *
+ * @author Emmanuel Bernard
+ */
+public interface ProviderSpecificBootstrap<T extends Configuration<T>> {
+
+ /**
+ * Optionally define the provider resolver implementation used.
+ * If not defined, use the default ValidationProviderResolver
+ *
+ * @param resolver ValidationProviderResolver implementation used
+ *
+ * @return self
+ */
+ public ProviderSpecificBootstrap<T> providerResolver(ValidationProviderResolver resolver);
+
+ /**
+ * Determine the provider implementation suitable for configurationType and delegate
+ * the creation of this specific Configuration subclass to the provider.
+ *
+ * @return a Configuration sub interface implementation
+ */
+ public T configure();
+}
Property changes on: validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/ProviderSpecificBootstrap.java
___________________________________________________________________
Name: svn:keywords
+ Id
Deleted: validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/SpecializedBuilderFactory.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/SpecializedBuilderFactory.java 2009-01-26 20:32:36 UTC (rev 15822)
+++ validator/trunk/validation-api/src/main/java/javax/validation/bootstrap/SpecializedBuilderFactory.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -1,37 +0,0 @@
-package javax.validation.bootstrap;
-
-import javax.validation.ValidationProviderResolver;
-import javax.validation.ValidatorFactoryBuilder;
-
-/**
- * Build implementations of builderType, the specific ValidatorFactoryBuilder
- * sub interface uniquely identifying a provider.
- * <p/>
- * The requested provider is the first provider suitable for T (as defined in
- * {@link javax.validation.spi.ValidationProvider#isSuitable(Class)}). The
- * list of providers evaluated is returned by {@link ValidationProviderResolver}.
- * If no ValidationProviderResolver is defined, the
- * default ValidationProviderResolver strategy is used.
- *
- * @author Emmanuel Bernard
- */
-public interface SpecializedBuilderFactory<T extends ValidatorFactoryBuilder<T>> {
-
- /**
- * Optionally define the provider resolver implementation used.
- * If not defined, use the default ValidationProviderResolver
- *
- * @param resolver ValidationProviderResolver implementation used
- *
- * @return self
- */
- public SpecializedBuilderFactory<T> providerResolver(ValidationProviderResolver resolver);
-
- /**
- * Determine the provider implementation suitable for builderType and delegate
- * the creation of this specific ValidatorFactoryBuilder subclass to the provider.
- *
- * @return a ValidatorFactoryBuilder sub interface implementation
- */
- public T getBuilder();
-}
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 2009-01-26 20:32:36 UTC (rev 15822)
+++ validator/trunk/validation-api/src/main/java/javax/validation/spi/BootstrapState.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -3,7 +3,7 @@
import javax.validation.ValidationProviderResolver;
/**
- * Defines the state used to bootstrap the ValidatorFactoryBuilder
+ * Defines the state used to bootstrap the Configuration
*
* @author Emmanuel Bernard
*/
Copied: validator/trunk/validation-api/src/main/java/javax/validation/spi/ConfigurationState.java (from rev 15818, validator/trunk/validation-api/src/main/java/javax/validation/spi/ValidatorFactoryConfiguration.java)
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/spi/ConfigurationState.java (rev 0)
+++ validator/trunk/validation-api/src/main/java/javax/validation/spi/ConfigurationState.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -0,0 +1,66 @@
+// $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 javax.validation.spi;
+
+import java.io.InputStream;
+import javax.validation.ConstraintValidatorFactory;
+import javax.validation.MessageInterpolator;
+import javax.validation.TraversableResolver;
+
+/**
+ * Contract between a <code>Configuration</code> and a
+ * </code>ValidatorProvider</code> to create a <code>ValidatorFactory</code>.
+ * The configuration artifacts provided to the
+ * <code>Configuration</code> are passed along.
+ *
+ * @author Emmanuel Bernard
+ * @author Hardy Ferentschik
+ */
+public interface ConfigurationState {
+ /**
+ * Message interpolator as defined by the client programmatically
+ * or null if undefined.
+ *
+ * @return message provider instance or null if not defined
+ */
+ MessageInterpolator getMessageInterpolator();
+
+ /**
+ * Returns the configuration stream defined by the client programmatically
+ * or null if undefined.
+ *
+ * @return the configuration input stream or null
+ */
+ InputStream getConfigurationStream();
+
+ /**
+ * Defines the constraint validator implementation factory as defined by
+ * the client programmatically or null if undefined
+ *
+ * @return factory instance or null if not defined
+ */
+ ConstraintValidatorFactory getConstraintValidatorFactory();
+
+ /**
+ * Traversable resolver as defined by the client programmatically
+ * or null if undefined.
+ *
+ * @return traversable provider instance or null if not defined
+ */
+ TraversableResolver getTraversableResolver();
+}
Property changes on: validator/trunk/validation-api/src/main/java/javax/validation/spi/ConfigurationState.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:keywords
+ Id
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 2009-01-26 20:32:36 UTC (rev 15822)
+++ validator/trunk/validation-api/src/main/java/javax/validation/spi/ValidationProvider.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -17,7 +17,7 @@
*/
package javax.validation.spi;
-import javax.validation.ValidatorFactoryBuilder;
+import javax.validation.Configuration;
import javax.validation.ValidatorFactory;
/**
@@ -33,56 +33,56 @@
/**
* This sub interface uniquely identify a provider.
*
- * @param builderClass targeted builder class.
+ * @param configurationClass targeted configuration class.
*
- * @return <code>true</code> if <code>builderClass</code> is the Bean Validation Provider
- * sub-interface for ValidatorFactoryBuilder
+ * @return <code>true</code> if <code>configurationClass</code> is the Bean Validation Provider
+ * sub-interface for Configuration
*/
- boolean isSuitable(Class<? extends ValidatorFactoryBuilder<?>> builderClass);
+ boolean isSuitable(Class<? extends Configuration<?>> configurationClass);
/**
- * Returns a ValidatorFactoryBuilder instance implementing the
- * <code>builderType</code> interface.
- * The ValidatorFactoryBuilder instance uses the current provider (<code>this</code>)
+ * Returns a Configuration instance implementing the
+ * <code>configurationClass</code> interface.
+ * The Configuration instance uses the current provider (<code>this</code>)
* to build the ValidatorFactory instance.
* <p/>
- * This method can only be called on providers returning true on <
- * code>#isSuitable(builderType)</code>
+ * This method can only be called on providers returning true on
+ * <code>#isSuitable(configurationClass)</code>
*
- * @param builderClass the Builder class type
+ * @param configurationClass the Configuration class type
* @param state bootstrap state
*
- * @return specific validator builder implementation
+ * @return specific Configuration implementation
*/
- <T extends ValidatorFactoryBuilder<T>> T createSpecializedValidatorFactoryBuilder(
+ <T extends Configuration<T>> T createSpecializedConfiguration(
BootstrapState state,
- Class<T> builderClass);
+ Class<T> configurationClass);
/**
- * Returns a ValidatorFactoryBuilder instance. This instance is not bound to
+ * Returns a Configuration instance. This instance is not bound to
* use the current provider. The choice of provider follows the algorithm described
- * in {@link javax.validation.ValidatorFactoryBuilder}
+ * in {@link javax.validation.Configuration}
* <p/>
* The ValidationProviderResolver used is provided by <code>state</code>.
* If null, the default ValidationProviderResolver is used.
*
* @param state bootstrap state
*
- * @return validator builder implementation
+ * @return Configuration implementation
*/
- ValidatorFactoryBuilder<?> createGenericValidatorFactoryBuilder(BootstrapState state);
+ Configuration<?> createGenericConfiguration(BootstrapState state);
/**
* Build a ValidatorFactory using the current provider implementation. The
* ValidatorFactory is assembled and follow the configuration passed
- * using ValidatorFactoryConfiguration.
+ * using ConfigurationState.
* <p>
* The returned ValidatorFactory is properly initialized and ready for use.
* </p>
*
- * @param configuration the configuration descriptor
+ * @param configurationState the configuration descriptor
*
* @return the instanciated ValidatorFactory
*/
- ValidatorFactory buildValidatorFactory(ValidatorFactoryConfiguration configuration);
+ ValidatorFactory buildValidatorFactory(ConfigurationState configurationState);
}
\ No newline at end of file
Deleted: validator/trunk/validation-api/src/main/java/javax/validation/spi/ValidatorFactoryConfiguration.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/spi/ValidatorFactoryConfiguration.java 2009-01-26 20:32:36 UTC (rev 15822)
+++ validator/trunk/validation-api/src/main/java/javax/validation/spi/ValidatorFactoryConfiguration.java 2009-01-27 01:13:37 UTC (rev 15823)
@@ -1,66 +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 javax.validation.spi;
-
-import java.io.InputStream;
-import javax.validation.ConstraintValidatorFactory;
-import javax.validation.MessageInterpolator;
-import javax.validation.TraversableResolver;
-
-/**
- * Contract between a <code>ValidatorFactoryBuilder</code> and a
- * </code>ValidatorProvider</code> to create a <code>ValidatorFactory</code>.
- * The configuration artifacts provided to the
- * <code>ValidatorFactoryBuilder</code> are passed along.
- *
- * @author Emmanuel Bernard
- * @author Hardy Ferentschik
- */
-public interface ValidatorFactoryConfiguration {
- /**
- * Message interpolator as defined by the client programmatically
- * or null if undefined.
- *
- * @return message provider instance or null if not defined
- */
- MessageInterpolator getMessageInterpolator();
-
- /**
- * Returns the configuration stream defined by the client programmatically
- * or null if undefined.
- *
- * @return the configuration input stream or null
- */
- InputStream getConfigurationStream();
-
- /**
- * Defines the constraint validator implementation factory as defined by
- * the client programmatically or null if undefined
- *
- * @return factory instance or null if not defined
- */
- ConstraintValidatorFactory getConstraintValidatorFactory();
-
- /**
- * Traversable resolver as defined by the client programmatically
- * or null if undefined.
- *
- * @return traversable provider instance or null if not defined
- */
- TraversableResolver getTraversableResolver();
-}
More information about the hibernate-commits
mailing list