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
*/
-@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;