[hibernate-commits] Hibernate SVN: r17096 - validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine and 1 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Wed Jul 15 08:28:36 EDT 2009


Author: hardy.ferentschik
Date: 2009-07-15 08:28:36 -0400 (Wed, 15 Jul 2009)
New Revision: 17096

Modified:
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/application/ValidationRequirementTest.java
   validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ConstraintViolationImpl.java
   validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/GlobalExecutionContext.java
   validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/LocalExecutionContext.java
   validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/metadata/MetaConstraint.java
Log:
Enabled test and made sure that if both field and property get annotated two constraint violations get crearted.

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/application/ValidationRequirementTest.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/application/ValidationRequirementTest.java	2009-07-15 11:54:34 UTC (rev 17095)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/application/ValidationRequirementTest.java	2009-07-15 12:28:36 UTC (rev 17096)
@@ -108,7 +108,7 @@
 		assertCorrectNumberOfViolations( violations, 0 );
 	}
 
-	@Test(enabled = false)
+	@Test
 	@SpecAssertions({
 			@SpecAssertion(section = "3.1.2", id = "a"),
 			@SpecAssertion(section = "3.1.2", id = "b")

Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ConstraintViolationImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ConstraintViolationImpl.java	2009-07-15 11:54:34 UTC (rev 17095)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ConstraintViolationImpl.java	2009-07-15 12:28:36 UTC (rev 17096)
@@ -17,6 +17,7 @@
 */
 package org.hibernate.validation.engine;
 
+import java.lang.annotation.ElementType;
 import javax.validation.ConstraintViolation;
 import javax.validation.Path;
 import javax.validation.metadata.ConstraintDescriptor;
@@ -34,11 +35,12 @@
 	private final ConstraintDescriptor constraintDescriptor;
 	private final String rawMessage;
 	private final Class<T> rootBeanClass;
+	private final ElementType elementType;
 
 
 	public ConstraintViolationImpl(String messageTemplate, String interpolatedMessage, Class<T> rootBeanClass,
 								   T rootBean, Object leafBeanInstance, Object value,
-								   Path propertyPath, ConstraintDescriptor constraintDescriptor) {
+								   Path propertyPath, ConstraintDescriptor constraintDescriptor, ElementType elementType) {
 		this.rawMessage = messageTemplate;
 		this.interpolatedMessage = interpolatedMessage;
 		this.rootBean = rootBean;
@@ -47,6 +49,7 @@
 		this.leafBeanInstance = leafBeanInstance;
 		this.constraintDescriptor = constraintDescriptor;
 		this.rootBeanClass = rootBeanClass;
+		this.elementType = elementType;
 	}
 
 	public String getMessage() {
@@ -105,6 +108,9 @@
 		if ( leafBeanInstance != null ? !leafBeanInstance.equals( that.leafBeanInstance ) : that.leafBeanInstance != null ) {
 			return false;
 		}
+		if ( elementType != null ? !elementType.equals( that.elementType ) : that.elementType != null ) {
+			return false;
+		}
 		if ( value != null ? !value.equals( that.value ) : that.value != null ) {
 			return false;
 		}
@@ -119,6 +125,7 @@
 		result = 31 * result + ( rootBean != null ? rootBean.hashCode() : 0 );
 		result = 31 * result + ( leafBeanInstance != null ? leafBeanInstance.hashCode() : 0 );
 		result = 31 * result + ( value != null ? value.hashCode() : 0 );
+		result = 31 * result + ( elementType != null ? elementType.hashCode() : 0 );
 		return result;
 	}
 }

Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/GlobalExecutionContext.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/GlobalExecutionContext.java	2009-07-15 11:54:34 UTC (rev 17095)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/GlobalExecutionContext.java	2009-07-15 12:28:36 UTC (rev 17096)
@@ -159,7 +159,8 @@
 				localContext.getCurrentBean(),
 				localContext.getCurrentValidatedValue(),
 				error.getPath(),
-				descriptor
+				descriptor,
+				localContext.getElementType()
 		);
 	}
 
@@ -196,6 +197,7 @@
 	}
 
 	private void addConstraintFailure(ConstraintViolation<T> failingConstraintViolation) {
+		// NOTE: we are relying on the fact that ConstraintViolation.equals() is implemented correctly.
 		int i = failingConstraintViolations.indexOf( failingConstraintViolation );
 		if ( i == -1 ) {
 			failingConstraintViolations.add( failingConstraintViolation );

Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/LocalExecutionContext.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/LocalExecutionContext.java	2009-07-15 11:54:34 UTC (rev 17095)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/LocalExecutionContext.java	2009-07-15 12:28:36 UTC (rev 17096)
@@ -17,6 +17,7 @@
 */
 package org.hibernate.validation.engine;
 
+import java.lang.annotation.ElementType;
 import javax.validation.groups.Default;
 
 /**
@@ -51,6 +52,11 @@
 	 */
 	private V currentValue;
 
+	/**
+	 * The {@code ElementType} the constraint was defined on
+	 */
+	private ElementType elementType;
+
 	public static <T, V> LocalExecutionContext<T, V> getLocalExecutionContext(T value) {
 		@SuppressWarnings("unchecked")
 		Class<T> rootBeanClass = ( Class<T> ) value.getClass();
@@ -106,14 +112,25 @@
 		return getCurrentGroup() != null && getCurrentGroup().getName().equals( Default.class.getName() );
 	}
 
+	public ElementType getElementType() {
+		return elementType;
+	}
+
+	public void setElementType(ElementType elementType) {
+		this.elementType = elementType;
+	}
+
 	@Override
 	public String toString() {
-		return "LocalExecutionContext{" +
-				"currentBean=" + currentBean +
-				", currentBeanType=" + currentBeanType +
-				", propertyPath=" + propertyPath +
-				", currentGroup=" + currentGroup +
-				", currentValue=" + currentValue +
-				'}';
+		final StringBuilder sb = new StringBuilder();
+		sb.append( "LocalExecutionContext" );
+		sb.append( "{currentBean=" ).append( currentBean );
+		sb.append( ", currentBeanType=" ).append( currentBeanType );
+		sb.append( ", propertyPath=" ).append( propertyPath );
+		sb.append( ", currentGroup=" ).append( currentGroup );
+		sb.append( ", currentValue=" ).append( currentValue );
+		sb.append( ", elementType=" ).append( elementType );
+		sb.append( '}' );
+		return sb.toString();
 	}
 }

Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/metadata/MetaConstraint.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/metadata/MetaConstraint.java	2009-07-15 11:54:34 UTC (rev 17095)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/metadata/MetaConstraint.java	2009-07-15 12:28:36 UTC (rev 17096)
@@ -123,6 +123,7 @@
 
 	public <T, U, V> boolean validateConstraint(GlobalExecutionContext<T> executionContext, LocalExecutionContext<U, V> localExecutionContext) {
 		List<ConstraintViolation<T>> constraintViolations = new ArrayList<ConstraintViolation<T>>();
+		localExecutionContext.setElementType( elementType );
 		constraintTree.validateConstraints(
 				typeOfAnnoatedElement(), executionContext, localExecutionContext, constraintViolations
 		);




More information about the hibernate-commits mailing list