[hibernate-commits] Hibernate SVN: r17184 - beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Jul 21 10:12:43 EDT 2009


Author: hardy.ferentschik
Date: 2009-07-21 10:12:43 -0400 (Tue, 21 Jul 2009)
New Revision: 17184

Removed:
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/Cloth.java
Modified:
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/SnifferTraversableResolver.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/Suit.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/TraversableResolverTest.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/Trousers.java
Log:
TraversableReslver tests

Deleted: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/Cloth.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/Cloth.java	2009-07-21 13:54:31 UTC (rev 17183)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/Cloth.java	2009-07-21 14:12:43 UTC (rev 17184)
@@ -1,24 +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.jsr303.tck.tests.traversableresolver;
-
-/**
- * @author Emmanuel Bernard
- */
-public interface Cloth {
-}
\ No newline at end of file

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/SnifferTraversableResolver.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/SnifferTraversableResolver.java	2009-07-21 13:54:31 UTC (rev 17183)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/SnifferTraversableResolver.java	2009-07-21 14:12:43 UTC (rev 17184)
@@ -25,21 +25,23 @@
 
 /**
  * @author Emmanuel Bernard
+ * @author Hardy Ferentschik
  */
 public class SnifferTraversableResolver implements TraversableResolver {
 	Set<String> reachPaths = new HashSet<String>();
 	Set<String> cascadePaths = new HashSet<String>();
-	Set<Call> reachCalls = new HashSet<Call>();
-	Set<Call> cascadeCalls = new HashSet<Call>();
+	Set<Call> expectedReachCalls = new HashSet<Call>();
+	Set<Call> expectedCascadeCalls = new HashSet<Call>();
+	Set<Call> executedReachableCalls = new HashSet<Call>();
 
 	public SnifferTraversableResolver(Suit suit) {
-		reachCalls.add( new Call( suit, "size", Suit.class, "", ElementType.FIELD ) );
-		reachCalls.add( new Call( suit, "trousers", Suit.class, "", ElementType.FIELD ) );
-		cascadeCalls.add( new Call( suit, "trousers", Suit.class, "", ElementType.FIELD ) );
-		reachCalls.add( new Call( suit.getTrousers(), "length", Suit.class, "trousers", ElementType.FIELD ) );
-		reachCalls.add( new Call( suit, "jacket", Suit.class, "", ElementType.METHOD ) );
-		cascadeCalls.add( new Call( suit, "jacket", Suit.class, "", ElementType.METHOD ) );
-		reachCalls.add( new Call( suit.getJacket(), "width", Suit.class, "jacket", ElementType.METHOD ) );
+		expectedReachCalls.add( new Call( suit, "size", Suit.class, "", ElementType.FIELD ) );
+		expectedReachCalls.add( new Call( suit, "trousers", Suit.class, "", ElementType.FIELD ) );
+		expectedCascadeCalls.add( new Call( suit, "trousers", Suit.class, "", ElementType.FIELD ) );
+		expectedReachCalls.add( new Call( suit.getTrousers(), "length", Suit.class, "trousers", ElementType.FIELD ) );
+		expectedReachCalls.add( new Call( suit, "jacket", Suit.class, "", ElementType.METHOD ) );
+		expectedCascadeCalls.add( new Call( suit, "jacket", Suit.class, "", ElementType.METHOD ) );
+		expectedReachCalls.add( new Call( suit.getJacket(), "width", Suit.class, "jacket", ElementType.METHOD ) );
 	}
 
 	public Set<String> getReachPaths() {
@@ -50,15 +52,13 @@
 		return cascadePaths;
 	}
 
-	public boolean isTraversable(Set<Call> calls, Set<String> paths, Object traversableObject, String traversableProperty, Class<?> rootBeanType, String pathToTraversableObject, ElementType elementType) {
+	public boolean isTraversable(Set<Call> calls, Set<String> paths, Call call, String traversableProperty, String pathToTraversableObject) {
 		String path = "";
 		if ( !( pathToTraversableObject == null || pathToTraversableObject.length() == 0 ) ) {
 			path = pathToTraversableObject + ".";
 		}
 		paths.add( path + traversableProperty );
-		Call call = new Call(
-				traversableObject, traversableProperty, rootBeanType, pathToTraversableObject, elementType
-		);
+
 		if ( !calls.contains( call ) ) {
 			throw new IllegalStateException( "Unexpected " + call.toString() );
 		}
@@ -66,27 +66,44 @@
 	}
 
 	public boolean isReachable(Object traversableObject, Path.Node traversableProperty, Class<?> rootBeanType, Path pathToTraversableObject, ElementType elementType) {
-		return isTraversable(
-				reachCalls,
-				reachPaths,
+		Call call = new Call(
 				traversableObject,
 				traversableProperty.toString(),
 				rootBeanType,
 				pathToTraversableObject.toString(),
 				elementType
 		);
+		executedReachableCalls.add( call );
+
+		return isTraversable(
+				expectedReachCalls,
+				reachPaths,
+				call,
+				traversableProperty.toString(),
+				pathToTraversableObject.toString()
+		);
 	}
 
 	public boolean isCascadable(Object traversableObject, Path.Node traversableProperty, Class<?> rootBeanType, Path pathToTraversableObject, ElementType elementType) {
-		return isTraversable(
-				cascadeCalls,
-				cascadePaths,
+		Call call = new Call(
 				traversableObject,
 				traversableProperty.toString(),
 				rootBeanType,
 				pathToTraversableObject.toString(),
 				elementType
 		);
+		if ( !executedReachableCalls.contains( call ) ) {
+			throw new IllegalStateException( "isCascadable called before a matching  isReachable call: " + call.toString() );
+		}
+
+
+		return isTraversable(
+				expectedCascadeCalls,
+				cascadePaths,
+				call,
+				traversableProperty.toString(),
+				pathToTraversableObject.toString()
+		);
 	}
 
 	/**

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/Suit.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/Suit.java	2009-07-21 13:54:31 UTC (rev 17183)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/Suit.java	2009-07-21 14:12:43 UTC (rev 17184)
@@ -26,9 +26,8 @@
 /**
  * @author Emmanuel Bernard
  */
- at GroupSequence({ Suit.class, Cloth.class })
 public class Suit {
-	@Max(value = 50, groups = { Default.class, Cloth.class })
+	@Max(value = 50)
 	@Min(1)
 	private Integer size;
 

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/TraversableResolverTest.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/TraversableResolverTest.java	2009-07-21 13:54:31 UTC (rev 17183)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/TraversableResolverTest.java	2009-07-21 14:12:43 UTC (rev 17184)
@@ -27,7 +27,6 @@
 import javax.validation.ValidationException;
 import javax.validation.Validator;
 import javax.validation.ValidatorFactory;
-import javax.validation.groups.Default;
 
 import org.jboss.test.audit.annotations.SpecAssertion;
 import org.jboss.test.audit.annotations.SpecAssertions;
@@ -51,7 +50,8 @@
 	@Test
 	@SpecAssertions({
 			@SpecAssertion(section = "3.5.2", id = "a"),
-			@SpecAssertion(section = "3.5.2", id = "b")
+			@SpecAssertion(section = "3.5.2", id = "b"),
+			@SpecAssertion(section = "3.5.2", id = "c")
 	})
 	public void testCorrectNumberOfCallsToIsReachableAndIsCascadable() {
 		Suit suit = new Suit();
@@ -71,8 +71,7 @@
 		ValidatorFactory factory = config.buildValidatorFactory();
 		Validator v = factory.getValidator();
 
-		//Raises an IllegalStateException if something goes wrong
-		v.validate( suit, Default.class, Cloth.class );
+		v.validate( suit );
 
 		assertEquals( resolver.getReachPaths().size(), 5 );
 		assertEquals( resolver.getCascadePaths().size(), 2 );

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/Trousers.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/Trousers.java	2009-07-21 13:54:31 UTC (rev 17183)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/traversableresolver/Trousers.java	2009-07-21 14:12:43 UTC (rev 17184)
@@ -25,7 +25,7 @@
  * @author Emmanuel Bernard
  */
 public class Trousers {
-	@Min(value = 70, groups = { Default.class, Cloth.class })
+	@Min(value = 70)
 	@Max(value = 220)
 	private Integer length;
 



More information about the hibernate-commits mailing list