Hibernate SVN: r15670 - in validator/trunk: hibernate-validator/src/main/java/org/hibernate/validation/impl and 2 other directories.
by hibernate-commits@lists.jboss.org
Author: epbernard
Date: 2008-12-05 17:07:07 -0500 (Fri, 05 Dec 2008)
New Revision: 15670
Added:
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/DefaultTraversableResolver.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorBuilderImpl.java
validator/trunk/validation-api/src/main/java/javax/validation/TraversableResolver.java
validator/trunk/validation-api/src/main/java/javax/validation/ValidatorBuilder.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/ValidatorFactoryBuilderImpl.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorFactoryImpl.java
validator/trunk/validation-api/src/main/java/javax/validation/Validator.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/spi/ValidatorFactoryConfiguration.java
Log:
BVAL-82 ValidatorBuilder and BVAL-81 TraversableResolver contract
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-12-05 13:56:19 UTC (rev 15669)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ValidatorImpl.java 2008-12-05 22:07:07 UTC (rev 15670)
@@ -32,6 +32,7 @@
import javax.validation.ConstraintViolation;
import javax.validation.MessageResolver;
import javax.validation.Validator;
+import javax.validation.TraversableResolver;
import javax.validation.groups.Default;
import org.hibernate.validation.Version;
@@ -77,10 +78,13 @@
private final ValidatorFactoryImplementor factory;
private static final Class<?>[] DEFAULT_GROUP = new Class<?>[] { Default.class };
+ private final TraversableResolver traversableResolver;
- public ValidatorImpl(ValidatorFactoryImplementor factory, MessageResolver messageResolver) {
+ public ValidatorImpl(ValidatorFactoryImplementor factory, MessageResolver messageResolver,
+ TraversableResolver traversableResolver) {
this.factory = factory;
this.messageResolver = messageResolver;
+ this.traversableResolver = traversableResolver;
}
Added: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/DefaultTraversableResolver.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/DefaultTraversableResolver.java (rev 0)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/DefaultTraversableResolver.java 2008-12-05 22:07:07 UTC (rev 15670)
@@ -0,0 +1,13 @@
+package org.hibernate.validation.impl;
+
+import java.lang.annotation.ElementType;
+import javax.validation.TraversableResolver;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class DefaultTraversableResolver implements TraversableResolver {
+ public boolean isTraversable(Object traversableObject, String traversableProperty, Class<?> rootBeanType, String pathToTraversableObject, ElementType elementType) {
+ return true;
+ }
+}
Added: 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 (rev 0)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorBuilderImpl.java 2008-12-05 22:07:07 UTC (rev 15670)
@@ -0,0 +1,53 @@
+package org.hibernate.validation.impl;
+
+import javax.validation.ValidatorBuilder;
+import javax.validation.MessageResolver;
+import javax.validation.TraversableResolver;
+import javax.validation.Validator;
+
+import org.hibernate.validation.engine.ValidatorImpl;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class ValidatorBuilderImpl implements ValidatorBuilder {
+ private MessageResolver messageResolver;
+ private TraversableResolver traversableResolver;
+ private final MessageResolver factoryMessageResolver;
+ private final TraversableResolver factoryTraversableResolver;
+ private final ValidatorFactoryImpl validatorFactory;
+
+ public ValidatorBuilderImpl(ValidatorFactoryImpl validatorFactory,
+ MessageResolver factoryMessageResolver,
+ TraversableResolver factoryTraversableResolver) {
+ this.validatorFactory = validatorFactory;
+ this.factoryMessageResolver = factoryMessageResolver;
+ this.factoryTraversableResolver = factoryTraversableResolver;
+ messageResolver(factoryMessageResolver);
+ traversableResolver(factoryTraversableResolver);
+ }
+
+ public ValidatorBuilder messageResolver(MessageResolver messageResolver) {
+ if (messageResolver == null) {
+ this.messageResolver = factoryMessageResolver;
+ }
+ else {
+ this.messageResolver = messageResolver;
+ }
+ return this;
+ }
+
+ public ValidatorBuilder traversableResolver(TraversableResolver traversableResolver) {
+ if (traversableResolver == null) {
+ this.traversableResolver = factoryTraversableResolver;
+ }
+ else {
+ this.traversableResolver = traversableResolver;
+ }
+ return this;
+ }
+
+ public Validator getValidator() {
+ return new ValidatorImpl( validatorFactory, messageResolver, traversableResolver );
+ }
+}
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-12-05 13:56:19 UTC (rev 15669)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorFactoryBuilderImpl.java 2008-12-05 22:07:07 UTC (rev 15670)
@@ -21,14 +21,15 @@
import java.util.List;
import javax.validation.ConstraintFactory;
import javax.validation.MessageResolver;
+import javax.validation.TraversableResolver;
import javax.validation.ValidationException;
import javax.validation.ValidationProviderResolver;
+import javax.validation.ValidatorFactory;
import javax.validation.ValidatorFactoryBuilder;
-import javax.validation.ValidatorFactory;
import javax.validation.bootstrap.DefaultValidationProviderResolver;
+import javax.validation.spi.BootstrapState;
import javax.validation.spi.ValidationProvider;
import javax.validation.spi.ValidatorFactoryConfiguration;
-import javax.validation.spi.BootstrapState;
import org.hibernate.validation.HibernateValidatorFactoryBuilder;
@@ -36,12 +37,16 @@
* @author Emmanuel Bernard
*/
public class ValidatorFactoryBuilderImpl implements HibernateValidatorFactoryBuilder, ValidatorFactoryConfiguration {
+ //FIXME not sure why it is like that. We should cache these instances somehow. Static?
private final MessageResolver defaultMessageResolver = new ResourceBundleMessageResolver();
+ private final TraversableResolver defaultTraversableResolver = new DefaultTraversableResolver();
+
private MessageResolver messageResolver;
private ConstraintFactory constraintFactory = new ConstraintFactoryImpl();
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) {
@@ -52,6 +57,7 @@
}
this.provider = null;
this.messageResolver = defaultMessageResolver;
+ this.traversableResolver = defaultTraversableResolver;
}
public ValidatorFactoryBuilderImpl(ValidationProvider provider) {
@@ -61,6 +67,7 @@
this.provider = provider;
this.providerResolver = null;
this.messageResolver = defaultMessageResolver;
+ this.traversableResolver = defaultTraversableResolver;
}
public ValidatorFactoryBuilderImpl messageResolver(MessageResolver resolver) {
@@ -68,6 +75,11 @@
return this;
}
+ public ValidatorFactoryBuilderImpl traversableResolver(TraversableResolver resolver) {
+ this.traversableResolver = resolver;
+ return this;
+ }
+
public ValidatorFactoryBuilderImpl constraintFactory(ConstraintFactory constraintFactory) {
this.constraintFactory = constraintFactory;
return this;
@@ -109,6 +121,10 @@
return constraintFactory;
}
+ public TraversableResolver getTraversableResolver() {
+ return traversableResolver;
+ }
+
public ValidatorFactoryBuilderImpl configure(InputStream stream) {
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-12-05 13:56:19 UTC (rev 15669)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/impl/ValidatorFactoryImpl.java 2008-12-05 22:07:07 UTC (rev 15670)
@@ -21,13 +21,13 @@
import java.util.concurrent.ConcurrentHashMap;
import javax.validation.ConstraintFactory;
import javax.validation.MessageResolver;
+import javax.validation.TraversableResolver;
import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
+import javax.validation.ValidatorBuilder;
import javax.validation.spi.ValidatorFactoryConfiguration;
-import org.hibernate.validation.engine.ValidatorImpl;
+import org.hibernate.validation.engine.MetaDataProviderImpl;
import org.hibernate.validation.engine.ValidatorFactoryImplementor;
-import org.hibernate.validation.engine.MetaDataProviderImpl;
/**
* @author Emmanuel Bernard
@@ -36,6 +36,7 @@
public class ValidatorFactoryImpl implements ValidatorFactoryImplementor {
private final MessageResolver messageResolver;
+ private final TraversableResolver traversableResolver;
private final ConstraintFactory constraintFactory;
//TODO is there a way to replace ? by so kind of <T> to express the correlation?
@@ -46,6 +47,7 @@
public ValidatorFactoryImpl(ValidatorFactoryConfiguration configuration) {
this.messageResolver = configuration.getMessageResolver();
this.constraintFactory = configuration.getConstraintFactory();
+ this.traversableResolver = configuration.getTraversableResolver();
//do init metadata from XML form
}
@@ -53,17 +55,17 @@
* {@inheritDoc}
*/
public Validator getValidator() {
- return new ValidatorImpl( this, messageResolver );
+ return defineValidatorState().getValidator();
}
- public Validator getValidator(MessageResolver messageResolver) {
- return new ValidatorImpl( this, messageResolver );
- }
-
public MessageResolver getMessageResolver() {
return messageResolver;
}
+ public ValidatorBuilder defineValidatorState() {
+ return new ValidatorBuilderImpl(this, messageResolver, traversableResolver);
+ }
+
public <T> MetaDataProviderImpl<T> getMetadataProvider(Class<T> beanClass) {
//FIXME make sure a optimized mock is provided when no constraints are present.
if (beanClass == null) throw new IllegalArgumentException( "Class cannot be null" );
Added: validator/trunk/validation-api/src/main/java/javax/validation/TraversableResolver.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/TraversableResolver.java (rev 0)
+++ validator/trunk/validation-api/src/main/java/javax/validation/TraversableResolver.java 2008-12-05 22:07:07 UTC (rev 15670)
@@ -0,0 +1,31 @@
+package javax.validation;
+
+import java.lang.annotation.ElementType;
+
+/**
+ * Contract determining if a property can be accessed by the Bean Validation provider
+ * This contract is called for each property either validated or traversed
+ *
+ * A traversable resolver implementation must me thread-safe
+ *
+ * @author Emmanuel Bernard
+ */
+public interface TraversableResolver {
+ /**
+ * Determine if a property can be traversed by Bean Validation.
+ *
+ * @param traversableObject object hosting traversableProperty
+ * @param traversableProperty name of the traqversable property
+ * @param rootBeanType type of the root object passed to the Validator.
+ * @param pathToTraversableObject path from the root object to the traversableObject
+ * (using the path specification defined by Bean Validator)
+ * @param elementType either FIELD or METHOD
+ *
+ * @return true if the property is traversable by Bean Validation
+ */
+ boolean isTraversable(Object traversableObject,
+ String traversableProperty,
+ Class<?> rootBeanType,
+ String pathToTraversableObject,
+ ElementType elementType);
+}
Modified: validator/trunk/validation-api/src/main/java/javax/validation/Validator.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/Validator.java 2008-12-05 13:56:19 UTC (rev 15669)
+++ validator/trunk/validation-api/src/main/java/javax/validation/Validator.java 2008-12-05 22:07:07 UTC (rev 15670)
@@ -54,7 +54,9 @@
*
* @throws IllegalArgumentException e if object is null or if propertyName is not present
*/
- <T> Set<ConstraintViolation<T>> validateProperty(T object, String propertyName, Class<?>... groups);
+ <T> Set<ConstraintViolation<T>> validateProperty(T object,
+ String propertyName,
+ Class<?>... groups);
/**
* validate all constraints on <code>propertyName</code> property
@@ -70,8 +72,10 @@
* @return constraint violations or an empty Set if none
* @throws IllegalArgumentException e if propertyName is not present
*/
- <T> Set<ConstraintViolation<T>> validateValue(Class<T> beanType, String propertyName,
- Object value, Class<?>... groups);
+ <T> Set<ConstraintViolation<T>> validateValue(Class<T> beanType,
+ String propertyName,
+ Object value,
+ Class<?>... groups);
/**
* Return the descriptor object describing bean constraints
Added: validator/trunk/validation-api/src/main/java/javax/validation/ValidatorBuilder.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/ValidatorBuilder.java (rev 0)
+++ validator/trunk/validation-api/src/main/java/javax/validation/ValidatorBuilder.java 2008-12-05 22:07:07 UTC (rev 15670)
@@ -0,0 +1,31 @@
+package javax.validation;
+
+/**
+ * Return a Validator corresponding to the initialized state.
+ *
+ * @author Emmanuel Bernard
+ */
+public interface ValidatorBuilder {
+ /**
+ * Defines the message resolver implementation used by the Validator.
+ * If unset, the message resolver of the ValidatorFactory is used.
+ *
+ * @return self following the chaining method pattern
+ */
+ ValidatorBuilder messageResolver(MessageResolver messageResolver);
+
+ /**
+ * Defines the traversable resolver implementation used by the Validator.
+ * If unset, the traversable resolver of the ValidatorFactory is used.
+ *
+ * @return self following the chaining method pattern
+ */
+ ValidatorBuilder traversableResolver(TraversableResolver traversableResolver);
+
+ /**
+ * return an initialized Validator instance respecting the defined state
+ * Validator instances can be pooled and shared by the implementation
+ */
+ Validator getValidator();
+
+}
Modified: validator/trunk/validation-api/src/main/java/javax/validation/ValidatorFactory.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/ValidatorFactory.java 2008-12-05 13:56:19 UTC (rev 15669)
+++ validator/trunk/validation-api/src/main/java/javax/validation/ValidatorFactory.java 2008-12-05 22:07:07 UTC (rev 15670)
@@ -26,21 +26,20 @@
*/
public interface ValidatorFactory {
/**
- * return an initialized Validator instance.
- * Validator instances can be pooled and shared by the implementation
+ * return an initialized Validator instance using the default factory instances
+ * for message resolver and traversable resolver.
*
+ * Validator instances can be pooled and shared by the implementation
*/
Validator getValidator();
/**
- * return an initialized Validator instance.
- * Validator instances can be pooled and shared by the implementation
+ * Define the validator state and return a
+ * Validator compliant with this state
*
- * The returned Validator instance must use the MessageResolver instance
- * passed as a parameter to resolve error messages.
- *
+ * @return a ValidatorBuilder
*/
- Validator getValidator(MessageResolver messageResolver);
+ ValidatorBuilder defineValidatorState();
/**
* Returns the MessageResolver instance configured at initialization time
Modified: validator/trunk/validation-api/src/main/java/javax/validation/ValidatorFactoryBuilder.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/ValidatorFactoryBuilder.java 2008-12-05 13:56:19 UTC (rev 15669)
+++ validator/trunk/validation-api/src/main/java/javax/validation/ValidatorFactoryBuilder.java 2008-12-05 22:07:07 UTC (rev 15670)
@@ -59,6 +59,16 @@
T messageResolver(MessageResolver resolver);
/**
+ * 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 factory. Has priority over the configuration
* based constraint factory.
*
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-12-05 13:56:19 UTC (rev 15669)
+++ validator/trunk/validation-api/src/main/java/javax/validation/spi/ValidatorFactoryConfiguration.java 2008-12-05 22:07:07 UTC (rev 15670)
@@ -20,6 +20,7 @@
import java.io.InputStream;
import javax.validation.ConstraintFactory;
import javax.validation.MessageResolver;
+import javax.validation.TraversableResolver;
/**
* Contract between a <code>ValidatorFactoryBuilder</code> and a
@@ -54,4 +55,12 @@
* @return factory instance or null if not defined
*/
ConstraintFactory getConstraintFactory();
+
+ /**
+ * Traversable resolver as defined by the client programmatically
+ * or null if undefined.
+ *
+ * @return traversable provider instance or null if not defined
+ */
+ TraversableResolver getTraversableResolver();
}
15 years, 4 months
Hibernate SVN: r15669 - in validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec: s3 and 1 other directories.
by hibernate-commits@lists.jboss.org
Author: epbernard
Date: 2008-12-05 08:56:19 -0500 (Fri, 05 Dec 2008)
New Revision: 15669
Added:
validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/
validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/
validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/Address.java
validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/Auditable.java
validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/Billable.java
validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/BuyInOneClick.java
validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/BuyInOneClickInherited.java
validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/CreditCard.java
validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/Order.java
validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/User.java
validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/ZipCode.java
validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/ZipCodeCoherenceChecker.java
Log:
Examples from the spec
Added: validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/Address.java
===================================================================
--- validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/Address.java (rev 0)
+++ validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/Address.java 2008-12-05 13:56:19 UTC (rev 15669)
@@ -0,0 +1,34 @@
+package org.hibernate.validator.spec.s3.s4;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import javax.validation.GroupSequence;
+import javax.validation.groups.Default;
+
+/**
+ * @author Emmanuel Bernard
+ */
+@ZipCodeCoherenceChecker(groups = Address.HighLevelCoherence.class)
+public class Address {
+ @NotNull @Size(max = 50)
+ private String street1;
+
+ @ZipCode
+ private String zipcode;
+
+ @NotNull @Size(max = 30)
+ private String city;
+
+ /**
+ * check conherence on the overall object
+ * Needs basic checking to be green first
+ */
+ public interface HighLevelCoherence {}
+
+ /**
+ * check both basic constraints and high level ones.
+ * high level constraints are not cheked if basic constraints fail
+ */
+ @GroupSequence(sequence = {Default.class, HighLevelCoherence.class})
+ public interface Complete {}
+}
Added: validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/Auditable.java
===================================================================
--- validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/Auditable.java (rev 0)
+++ validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/Auditable.java 2008-12-05 13:56:19 UTC (rev 15669)
@@ -0,0 +1,22 @@
+package org.hibernate.validator.spec.s3.s4;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * Auditable object contract
+ *
+ * @author Emmanuel Bernard
+ */
+public interface Auditable {
+ @NotNull
+ String getCreationDate();
+
+ @NotNull
+ String getLastUpdate();
+
+ @NotNull
+ String getLastModifier();
+
+ @NotNull
+ String getLastReader();
+}
Added: validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/Billable.java
===================================================================
--- validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/Billable.java (rev 0)
+++ validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/Billable.java 2008-12-05 13:56:19 UTC (rev 15669)
@@ -0,0 +1,8 @@
+package org.hibernate.validator.spec.s3.s4;
+
+/**
+ * Validation group checking a user is billable
+ *
+ * @author Emmanuel Bernard
+ */
+public interface Billable {}
Added: validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/BuyInOneClick.java
===================================================================
--- validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/BuyInOneClick.java (rev 0)
+++ validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/BuyInOneClick.java 2008-12-05 13:56:19 UTC (rev 15669)
@@ -0,0 +1,9 @@
+package org.hibernate.validator.spec.s3.s4;
+
+/**
+ * Customer can buy without harrassing checking process
+ *
+ * @author Emmanuel Bernard
+ */
+public interface BuyInOneClick {
+}
Added: validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/BuyInOneClickInherited.java
===================================================================
--- validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/BuyInOneClickInherited.java (rev 0)
+++ validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/BuyInOneClickInherited.java 2008-12-05 13:56:19 UTC (rev 15669)
@@ -0,0 +1,11 @@
+package org.hibernate.validator.spec.s3.s4;
+
+import javax.validation.groups.Default;
+
+/**
+ * Customer can buy without harrassing checking process
+ *
+ * @author Emmanuel Bernard
+ */
+public interface BuyInOneClickInherited extends Default, Billable {
+}
Added: validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/CreditCard.java
===================================================================
--- validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/CreditCard.java (rev 0)
+++ validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/CreditCard.java 2008-12-05 13:56:19 UTC (rev 15669)
@@ -0,0 +1,7 @@
+package org.hibernate.validator.spec.s3.s4;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class CreditCard {
+}
Added: validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/Order.java
===================================================================
--- validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/Order.java (rev 0)
+++ validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/Order.java 2008-12-05 13:56:19 UTC (rev 15669)
@@ -0,0 +1,39 @@
+package org.hibernate.validator.spec.s3.s4;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+
+/**
+ * Represents an order in the system
+ *
+ * @author Emmanuel Bernard
+ */
+public class Order implements Auditable {
+ private String creationDate;
+ private String lastUpdate;
+ private String lastModifier;
+ private String lastReader;
+
+ private String orderNumber;
+
+ public String getCreationDate() {
+ return this.creationDate;
+ }
+
+ public String getLastUpdate() {
+ return this.lastUpdate;
+ }
+
+ public String getLastModifier() {
+ return this.lastModifier;
+ }
+
+ public String getLastReader() {
+ return this.lastReader;
+ }
+
+ @NotNull @Size(min=10, max=10)
+ public String getOrderNumber() {
+ return this.orderNumber;
+ }
+}
Added: validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/User.java
===================================================================
--- validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/User.java (rev 0)
+++ validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/User.java 2008-12-05 13:56:19 UTC (rev 15669)
@@ -0,0 +1,20 @@
+package org.hibernate.validator.spec.s3.s4;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.groups.Default;
+
+/**
+ * User representation
+ *
+ * @author Emmanuel Bernard
+ */
+public class User {
+ @NotNull
+ private String firstname;
+
+ @NotNull(groups = Default.class)
+ private String lastname;
+
+ @NotNull(groups = {Billable.class, BuyInOneClick.class})
+ private CreditCard defaultCreditCard;
+}
Added: validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/ZipCode.java
===================================================================
--- validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/ZipCode.java (rev 0)
+++ validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/ZipCode.java 2008-12-05 13:56:19 UTC (rev 15669)
@@ -0,0 +1,8 @@
+package org.hibernate.validator.spec.s3.s4;
+
+/**
+ * @author Emmanuel Bernard
+ */
+//TODO complete it
+public @interface ZipCode {
+}
Added: validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/ZipCodeCoherenceChecker.java
===================================================================
--- validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/ZipCodeCoherenceChecker.java (rev 0)
+++ validator/trunk/validation-api/src/test/java/org/hibernate/validator/spec/s3/s4/ZipCodeCoherenceChecker.java 2008-12-05 13:56:19 UTC (rev 15669)
@@ -0,0 +1,19 @@
+package org.hibernate.validator.spec.s3.s4;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Documented;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+
+/**
+ * @author Emmanuel Bernard
+ */
+@Target({ TYPE, ANNOTATION_TYPE })
+@Retention(RUNTIME)
+@Documented
+public @interface ZipCodeCoherenceChecker {
+ String message() default "{validator.zipCodeCoherenceChecker}";
+ Class<?>[] groups() default {};
+}
15 years, 4 months
Hibernate SVN: r15668 - validator/trunk/validation-api/src/main/java/javax/validation.
by hibernate-commits@lists.jboss.org
Author: epbernard
Date: 2008-12-05 08:55:44 -0500 (Fri, 05 Dec 2008)
New Revision: 15668
Modified:
validator/trunk/validation-api/src/main/java/javax/validation/GroupSequence.java
Log:
BVAL-79 Groups are now type based
Modified: validator/trunk/validation-api/src/main/java/javax/validation/GroupSequence.java
===================================================================
--- validator/trunk/validation-api/src/main/java/javax/validation/GroupSequence.java 2008-12-05 08:29:50 UTC (rev 15667)
+++ validator/trunk/validation-api/src/main/java/javax/validation/GroupSequence.java 2008-12-05 13:55:44 UTC (rev 15668)
@@ -33,7 +33,7 @@
@Retention(RUNTIME)
public @interface GroupSequence {
//TODO depreciate
- Class<?> name();
+ Class<?> name() default void.class;
Class<?>[] sequence();
}
15 years, 4 months
Hibernate SVN: r15667 - branches/Branch_3_2/HibernateExt/tools.
by hibernate-commits@lists.jboss.org
Author: max.andersen(a)jboss.com
Date: 2008-12-05 03:29:50 -0500 (Fri, 05 Dec 2008)
New Revision: 15667
Modified:
branches/Branch_3_2/HibernateExt/tools/build.xml
Log:
Modified: branches/Branch_3_2/HibernateExt/tools/build.xml
===================================================================
--- branches/Branch_3_2/HibernateExt/tools/build.xml 2008-12-04 12:35:20 UTC (rev 15666)
+++ branches/Branch_3_2/HibernateExt/tools/build.xml 2008-12-05 08:29:50 UTC (rev 15667)
@@ -7,7 +7,7 @@
<!-- Name of project and version, used to create filenames -->
<property name="Name" value="Hibernate Tools"/>
<property name="name" value="hibernate-tools"/>
- <property name="version" value="3.2.2.GA"/>
+ <property name="version" value="3.2.4.CR1"/>
<property name="javadoc.packagenames" value="org.hibernate.tool"/>
15 years, 4 months
Hibernate SVN: r15666 - search/tags.
by hibernate-commits@lists.jboss.org
Author: hardy.ferentschik
Date: 2008-12-04 07:35:20 -0500 (Thu, 04 Dec 2008)
New Revision: 15666
Added:
search/tags/v3_1_0_GA/
Log:
Created tag v3_1_0_GA.
Copied: search/tags/v3_1_0_GA (from rev 15665, search/trunk)
15 years, 4 months
Hibernate SVN: r15665 - search/trunk.
by hibernate-commits@lists.jboss.org
Author: hardy.ferentschik
Date: 2008-12-04 07:32:00 -0500 (Thu, 04 Dec 2008)
New Revision: 15665
Modified:
search/trunk/common-build.xml
Log:
Made sure that the ivy.xml file gets also copied
Modified: search/trunk/common-build.xml
===================================================================
--- search/trunk/common-build.xml 2008-12-04 12:30:22 UTC (rev 15664)
+++ search/trunk/common-build.xml 2008-12-04 12:32:00 UTC (rev 15665)
@@ -272,6 +272,7 @@
<copy file="lgpl.txt" todir="${dist.dir}"/>
<copy file="changelog.txt" todir="${dist.dir}"/>
<copy file="build.xml" todir="${dist.dir}"/>
+ <copy file="ivy.xml" todir="${dist.dir}"/>
<copy todir="${dist.dir}/jdbc">
<fileset dir="jdbc"/>
</copy>
15 years, 4 months
Hibernate SVN: r15664 - search/tags.
by hibernate-commits@lists.jboss.org
Author: hardy.ferentschik
Date: 2008-12-04 07:30:22 -0500 (Thu, 04 Dec 2008)
New Revision: 15664
Removed:
search/tags/v3_1_0_GA/
Log:
Removed search/tags/v3_1_0_GA. Need to retag
15 years, 4 months