[hibernate-commits] Hibernate SVN: r16977 - beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition and 13 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Jun 30 08:37:36 EDT 2009


Author: hardy.ferentschik
Date: 2009-06-30 08:37:35 -0400 (Tue, 30 Jun 2009)
New Revision: 16977

Added:
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidDefaultPayload.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidMessageType.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidPayloadClass.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/NoPayload.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/ValidInPropertyName.java
Removed:
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/DummyEntityInvalidDefaultGroup.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/DummyEntityNoGroups.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/DummyEntityNoMessage.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/DummyEntityValidProperty.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/ValidProperty.java
Modified:
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/application/SecurityCheck.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/FrenchZipcode.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/FrenchZipcodeWithInvalidOverride.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/GermanZipcode.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/NotEmpty.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintdefinition/AlwaysValid.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/groups/ZipCodeCoherenceChecker.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/IsAdult.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/SafeEncryption.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidConstraintDefinitionsTest.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidDefaultGroup.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/NoGroups.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/NoMessage.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/Ambigious.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/PostCodeList.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/metadata/AccountChecker.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/metadata/NotEmpty.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validation/customconstraint/Negative.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validation/customconstraint/Positive.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validation/validatorcontext/Dummy.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validatorfactory/MyConstraint.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validatorfactory/MySecondConstraint.java
   beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/xmlconfiguration/ConsistentUserInformation.java
   beanvalidation/trunk/validation-tck/src/main/resources/tck-audit.xml
   validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/constraints/NotEmpty.java
   validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/metadata/ConstraintHelper.java
Log:
HV-178 - Add check for payload parameter


Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/application/SecurityCheck.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/application/SecurityCheck.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/application/SecurityCheck.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -27,6 +27,7 @@
 import javax.validation.Constraint;
 import javax.validation.ConstraintValidator;
 import javax.validation.ConstraintValidatorContext;
+import javax.validation.ConstraintPayload;
 
 /**
  * @author Hardy Ferentschik
@@ -40,6 +41,8 @@
 
 	public abstract Class<?>[] groups() default { };
 
+	public abstract Class<? extends ConstraintPayload>[] payload() default {};
+
 	public class SecurityCheckValidator implements ConstraintValidator<SecurityCheck, Object> {
 
 

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/FrenchZipcode.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/FrenchZipcode.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/FrenchZipcode.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -26,6 +26,7 @@
 import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.OverridesAttribute;
+import javax.validation.ConstraintPayload;
 import javax.validation.constraints.Pattern;
 import javax.validation.constraints.Size;
 
@@ -46,6 +47,8 @@
 
 	Class<?>[] groups() default { };
 
+	Class<? extends ConstraintPayload>[] payload() default {};
+
 	@OverridesAttribute.List({
 			@OverridesAttribute(constraint = Size.class, name = "min"),
 			@OverridesAttribute(constraint = Size.class, name = "max")

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/FrenchZipcodeWithInvalidOverride.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/FrenchZipcodeWithInvalidOverride.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/FrenchZipcodeWithInvalidOverride.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -26,6 +26,7 @@
 import java.lang.annotation.Target;
 import javax.validation.Constraint;
 import javax.validation.OverridesAttribute;
+import javax.validation.ConstraintPayload;
 import javax.validation.constraints.Pattern;
 import javax.validation.constraints.Size;
 
@@ -46,6 +47,8 @@
 
 	public abstract Class<?>[] groups() default { };
 
+	public abstract Class<? extends ConstraintPayload>[] payload() default {};
+
 	@OverridesAttribute.List({
 			@OverridesAttribute(constraint = Size.class, name = "min"),
 			@OverridesAttribute(constraint = Size.class, name = "max")

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/GermanZipcode.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/GermanZipcode.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/GermanZipcode.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -28,6 +28,7 @@
 import javax.validation.ReportAsSingleViolation;
 import javax.validation.ConstraintValidator;
 import javax.validation.ConstraintValidatorContext;
+import javax.validation.ConstraintPayload;
 
 /**
  * Constraint used to test nested composing constraints.
@@ -45,6 +46,8 @@
 
 	public abstract Class<?>[] groups() default { };
 
+	public abstract Class<? extends ConstraintPayload>[] payload() default {};
+
 	public class GermanZipcodeConstraintValidator implements ConstraintValidator<GermanZipcode, String> {
 
 	public void initialize(GermanZipcode parameters) {

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/NotEmpty.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/NotEmpty.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/NotEmpty.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -1,4 +1,4 @@
-// $Id:$
+// $Id$
 /*
 * JBoss, Home of Professional Open Source
 * Copyright 2008, Red Hat Middleware LLC, and individual contributors
@@ -27,6 +27,7 @@
 import javax.validation.Constraint;
 import javax.validation.ConstraintValidator;
 import javax.validation.ConstraintValidatorContext;
+import javax.validation.ConstraintPayload;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
 
@@ -44,6 +45,8 @@
 
 	Class<?>[] groups() default { };
 
+	Class<? extends ConstraintPayload>[] payload() default {};
+
 	public class NotEmptyValidator implements ConstraintValidator<NotEmpty, String> {
 
 		public void initialize(NotEmpty parameters) {

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintdefinition/AlwaysValid.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintdefinition/AlwaysValid.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/constraintdefinition/AlwaysValid.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -27,6 +27,7 @@
 import javax.validation.Constraint;
 import javax.validation.ConstraintValidator;
 import javax.validation.ConstraintValidatorContext;
+import javax.validation.ConstraintPayload;
 
 /**
  * @author Hardy Ferentschik
@@ -42,6 +43,8 @@
 
 	public abstract boolean alwaysValid();
 
+	public abstract Class<? extends ConstraintPayload>[] payload() default {};
+
 	public class StaticConstraintValidator implements ConstraintValidator<AlwaysValid, Object> {
 
 		boolean valid;

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/groups/ZipCodeCoherenceChecker.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/groups/ZipCodeCoherenceChecker.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/groups/ZipCodeCoherenceChecker.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -7,6 +7,7 @@
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import java.lang.annotation.Target;
 import javax.validation.Constraint;
+import javax.validation.ConstraintPayload;
 
 /**
  * @author Emmanuel Bernard
@@ -19,4 +20,6 @@
 	public abstract String message() default "Zip code is not coherent.";
 
 	public abstract Class<?>[] groups() default { };
+
+	public abstract Class<? extends ConstraintPayload>[] payload() default { };
 }
\ No newline at end of file

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/IsAdult.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/IsAdult.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/IsAdult.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -27,6 +27,7 @@
 import javax.validation.Constraint;
 import javax.validation.ConstraintValidator;
 import javax.validation.ConstraintValidatorContext;
+import javax.validation.ConstraintPayload;
 
 /**
  * @author Hardy Ferentschik
@@ -40,7 +41,9 @@
 
 	public abstract Class<?>[] groups() default { };
 
+	public abstract Class<? extends ConstraintPayload>[] payload() default {};
 
+
 	public class IsAdultValidator implements ConstraintValidator<IsAdult, Integer> {
 		public void initialize(IsAdult parameters) {
 		}

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/SafeEncryption.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/SafeEncryption.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/groups/groupsequenceisolation/SafeEncryption.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -25,6 +25,7 @@
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import java.lang.annotation.Target;
 import javax.validation.Constraint;
+import javax.validation.ConstraintPayload;
 import javax.validation.ConstraintValidator;
 import javax.validation.ConstraintValidatorContext;
 
@@ -40,6 +41,7 @@
 
 	public abstract Class<?>[] groups() default { };
 
+	public abstract Class<? extends ConstraintPayload>[] payload() default { };
 
 	public class SafeEncryptionValidator implements ConstraintValidator<SafeEncryption, String> {
 		public void initialize(SafeEncryption parameters) {

Deleted: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/DummyEntityInvalidDefaultGroup.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/DummyEntityInvalidDefaultGroup.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/DummyEntityInvalidDefaultGroup.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -1,25 +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.constraints.invalidconstraintdefinitions;
-
-/**
- * @author Hardy Ferentschik
- */
- at InvalidDefaultGroup
-public class DummyEntityInvalidDefaultGroup {
-}
\ No newline at end of file

Deleted: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/DummyEntityNoGroups.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/DummyEntityNoGroups.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/DummyEntityNoGroups.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -1,25 +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.constraints.invalidconstraintdefinitions;
-
-/**
- * @author Hardy Ferentschik
- */
- at NoGroups
-public class DummyEntityNoGroups {
-}

Deleted: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/DummyEntityNoMessage.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/DummyEntityNoMessage.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/DummyEntityNoMessage.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -1,25 +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.constraints.invalidconstraintdefinitions;
-
-/**
- * @author Hardy Ferentschik
- */
- at NoMessage
-public class DummyEntityNoMessage {
-}
\ No newline at end of file

Deleted: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/DummyEntityValidProperty.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/DummyEntityValidProperty.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/DummyEntityValidProperty.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -1,25 +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.constraints.invalidconstraintdefinitions;
-
-/**
- * @author Hardy Ferentschik
- */
- at ValidProperty
-public class DummyEntityValidProperty {
-}

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidConstraintDefinitionsTest.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidConstraintDefinitionsTest.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidConstraintDefinitionsTest.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -35,7 +35,7 @@
  * @author Hardy Ferentschik
  */
 @Artifact(artifactType = ArtifactType.JSR303)
- at Classes({TestUtil.class, TestUtil.PathImpl.class, TestUtil.NodeImpl.class})
+ at Classes({ TestUtil.class, TestUtil.PathImpl.class, TestUtil.NodeImpl.class })
 public class InvalidConstraintDefinitionsTest extends AbstractTest {
 
 	@Test
@@ -84,7 +84,7 @@
 		try {
 			Validator validator = TestUtil.getDefaultValidator();
 			validator.validate( new DummyEntityNoGroups() );
-			fail( "The used constraint does not define a groups paramter. The validation should have failed." );
+			fail( "The used constraint does not define a groups parameter. The validation should have failed." );
 		}
 		catch ( ConstraintDefinitionException e ) {
 			// success
@@ -94,6 +94,23 @@
 	@Test
 	@SpecAssertions({
 			@SpecAssertion(section = "2.1", id = "c"),
+			@SpecAssertion(section = "2.1.1", id = "h"),
+			@SpecAssertion(section = "8.2", id = "a")
+	})
+	public void testConstraintDefinitionWithoutPayloadParameter() {
+		try {
+			Validator validator = TestUtil.getDefaultValidator();
+			validator.validate( new DummyEntityNoGroups() );
+			fail( "The used constraint does not define a payload parameter. The validation should have failed." );
+		}
+		catch ( ConstraintDefinitionException e ) {
+			// success
+		}
+	}
+
+	@Test
+	@SpecAssertions({
+			@SpecAssertion(section = "2.1", id = "c"),
 			@SpecAssertion(section = "2.1.1", id = "e"),
 			@SpecAssertion(section = "8.2", id = "a")
 	})
@@ -101,10 +118,114 @@
 		try {
 			Validator validator = TestUtil.getDefaultValidator();
 			validator.validate( new DummyEntityInvalidDefaultGroup() );
-			fail( "The default groups paramter is not the empty array. The validation should have failed." );
+			fail( "The default groups parameter is not the empty array. The validation should have failed." );
 		}
 		catch ( ConstraintDefinitionException e ) {
 			// success
 		}
 	}
+
+	@Test
+	@SpecAssertions({
+			@SpecAssertion(section = "2.1", id = "c"),
+			@SpecAssertion(section = "2.1.1", id = "i"),
+			@SpecAssertion(section = "8.2", id = "a")
+	})
+	public void testConstraintDefinitionWithWrongDefaultPayloadValue() {
+		try {
+			Validator validator = TestUtil.getDefaultValidator();
+			validator.validate( new DummyEntityInvalidDefaultPayload() );
+			fail( "The default payload parameter is not the empty array. The validation should have failed." );
+		}
+		catch ( ConstraintDefinitionException e ) {
+			// success
+		}
+	}
+
+	@Test
+	@SpecAssertions({
+			@SpecAssertion(section = "2.1", id = "c"),
+			@SpecAssertion(section = "2.1.1", id = "j"),
+			@SpecAssertion(section = "8.2", id = "a")
+	})
+	public void testConstraintDefinitionWithWrongPayloadClass() {
+		try {
+			Validator validator = TestUtil.getDefaultValidator();
+			validator.validate( new DummyEntityInvalidPayloadClass() );
+			fail( "The default payload parameter has to be of type Class<? extends ConstraintPayload>[]. The validation should have failed." );
+		}
+		catch ( ConstraintDefinitionException e ) {
+			// success
+		}
+	}
+
+	@Test
+	@SpecAssertions({
+			@SpecAssertion(section = "2.1", id = "c"),
+			@SpecAssertion(section = "2.1.1", id = "c"),
+			@SpecAssertion(section = "8.2", id = "a")
+	})
+	public void testConstraintDefinitionWithWrongMessageType() {
+		try {
+			Validator validator = TestUtil.getDefaultValidator();
+			validator.validate( new DummyEntityInvalidMessageType() );
+			fail( "The message parameter has to be of type String. The validation should have failed." );
+		}
+		catch ( ConstraintDefinitionException e ) {
+			// success
+		}
+	}
+
+	@Test
+	@SpecAssertions({
+			@SpecAssertion(section = "2.1", id = "c"),
+			@SpecAssertion(section = "2.1.1", id = "g"),
+			@SpecAssertion(section = "8.2", id = "a")
+	})
+	public void testConstraintDefinitionWithWrongGroupType() {
+		try {
+			Validator validator = TestUtil.getDefaultValidator();
+			validator.validate( new DummyEntityInvalidGroupsType() );
+			fail( "The groups parameter has to be of type Class<?>[]. The validation should have failed." );
+		}
+		catch ( ConstraintDefinitionException e ) {
+			// success
+		}
+	}
+
+	@InvalidDefaultGroup
+	public class DummyEntityInvalidDefaultGroup {
+	}
+
+	@NoGroups
+	public class DummyEntityNoGroups {
+	}
+
+	@NoMessage
+	public class DummyEntityNoMessage {
+	}
+
+	@ValidInPropertyName
+	public class DummyEntityValidProperty {
+	}
+
+	@NoPayload
+	public class DummyEntityNoPayload {
+	}
+
+	@InvalidDefaultPayload
+	public class DummyEntityInvalidDefaultPayload {
+	}
+
+	@InvalidPayloadClass
+	public class DummyEntityInvalidPayloadClass {
+	}
+
+	@InvalidMessageType
+	public class DummyEntityInvalidMessageType {
+	}
+
+	@InvalidGroupsType
+	public class DummyEntityInvalidGroupsType {
+	}
 }
\ No newline at end of file

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidDefaultGroup.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidDefaultGroup.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidDefaultGroup.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -25,6 +25,7 @@
 import javax.validation.Constraint;
 import javax.validation.ConstraintValidator;
 import javax.validation.ConstraintValidatorContext;
+import javax.validation.ConstraintPayload;
 import javax.validation.groups.Default;
 
 /**
@@ -39,6 +40,8 @@
 
 	public abstract Class<?>[] groups() default Default.class;
 
+	public abstract Class<? extends ConstraintPayload>[] payload() default {};
+
 	public class InvalidDefaultGroupValidator implements ConstraintValidator<InvalidDefaultGroup, Object> {
 
 		public void initialize(InvalidDefaultGroup parameters) {

Copied: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidDefaultPayload.java (from rev 16948, beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidDefaultGroup.java)
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidDefaultPayload.java	                        (rev 0)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidDefaultPayload.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -0,0 +1,57 @@
+// $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.constraints.invalidconstraintdefinitions;
+
+import java.lang.annotation.Documented;
+import static java.lang.annotation.ElementType.TYPE;
+import java.lang.annotation.Retention;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.ConstraintPayload;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ * @author Hardy Ferentschik
+ */
+ at Documented
+ at Constraint(validatedBy = InvalidDefaultPayload.InvalidDefaultGroupValidator.class)
+ at Target({ TYPE })
+ at Retention(RUNTIME)
+public @interface InvalidDefaultPayload {
+	public abstract String message() default "default message";
+
+	public abstract Class<?>[] groups() default { };
+
+	public abstract Class<? extends ConstraintPayload>[] payload() default DummyPayload.class;
+
+	public class DummyPayload implements ConstraintPayload {
+
+	}
+
+	public class InvalidDefaultGroupValidator implements ConstraintValidator<InvalidDefaultPayload, Object> {
+
+		public void initialize(InvalidDefaultPayload parameters) {
+		}
+
+		public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {
+			return false;
+		}
+	}
+}
\ No newline at end of file

Added: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidMessageType.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidMessageType.java	                        (rev 0)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidMessageType.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -0,0 +1,52 @@
+// $Id: InvalidDefaultGroup.java 16691 2009-06-04 09:18:14Z hardy.ferentschik $
+/*
+* 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.constraints.invalidconstraintdefinitions;
+
+import java.lang.annotation.Documented;
+import static java.lang.annotation.ElementType.TYPE;
+import java.lang.annotation.Retention;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ * @author Hardy Ferentschik
+ */
+ at Documented
+ at Constraint(validatedBy = InvalidMessageType.InvalidDefaultGroupValidator.class)
+ at Target({ TYPE })
+ at Retention(RUNTIME)
+public @interface InvalidMessageType {
+	public abstract Class<?> message() default void.class;
+
+	public abstract Class<?>[] groups() default { };
+
+	public abstract Class<?>[] payload() default { };
+
+	public class InvalidDefaultGroupValidator implements ConstraintValidator<InvalidMessageType, Object> {
+
+		public void initialize(InvalidMessageType parameters) {
+		}
+
+		public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {
+			return false;
+		}
+	}
+}
\ No newline at end of file

Added: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidPayloadClass.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidPayloadClass.java	                        (rev 0)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/InvalidPayloadClass.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -0,0 +1,52 @@
+// $Id: InvalidDefaultGroup.java 16691 2009-06-04 09:18:14Z hardy.ferentschik $
+/*
+* 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.constraints.invalidconstraintdefinitions;
+
+import java.lang.annotation.Documented;
+import static java.lang.annotation.ElementType.TYPE;
+import java.lang.annotation.Retention;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ * @author Hardy Ferentschik
+ */
+ at Documented
+ at Constraint(validatedBy = InvalidPayloadClass.InvalidDefaultGroupValidator.class)
+ at Target({ TYPE })
+ at Retention(RUNTIME)
+public @interface InvalidPayloadClass {
+	public abstract String message() default "default message";
+
+	public abstract Class<?>[] groups() default { };
+
+	public abstract String payload() default "";
+
+	public class InvalidDefaultGroupValidator implements ConstraintValidator<InvalidPayloadClass, Object> {
+
+		public void initialize(InvalidPayloadClass parameters) {
+		}
+
+		public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {
+			return false;
+		}
+	}
+}
\ No newline at end of file

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/NoGroups.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/NoGroups.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/NoGroups.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -23,6 +23,7 @@
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import java.lang.annotation.Target;
 import javax.validation.Constraint;
+import javax.validation.ConstraintPayload;
 import javax.validation.ConstraintValidator;
 import javax.validation.ConstraintValidatorContext;
 
@@ -36,6 +37,8 @@
 public @interface NoGroups {
 	String message() default "default message";
 
+	Class<? extends ConstraintPayload>[] payload() default { };
+
 	public class NoGroupsValidator implements ConstraintValidator<NoGroups, Object> {
 
 		public void initialize(NoGroups parameters) {

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/NoMessage.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/NoMessage.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/NoMessage.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -23,6 +23,7 @@
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import java.lang.annotation.Target;
 import javax.validation.Constraint;
+import javax.validation.ConstraintPayload;
 import javax.validation.ConstraintValidator;
 import javax.validation.ConstraintValidatorContext;
 
@@ -36,6 +37,8 @@
 public @interface NoMessage {
 	Class<?>[] groups() default { };
 
+	Class<? extends ConstraintPayload>[] payload() default { };
+
 	public class NoMessageValidator implements ConstraintValidator<NoMessage, Object> {
 
 		public void initialize(NoMessage parameters) {

Copied: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/NoPayload.java (from rev 16948, beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/NoGroups.java)
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/NoPayload.java	                        (rev 0)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/NoPayload.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -0,0 +1,50 @@
+// $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.constraints.invalidconstraintdefinitions;
+
+import java.lang.annotation.Documented;
+import static java.lang.annotation.ElementType.TYPE;
+import java.lang.annotation.Retention;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ * @author Hardy Ferentschik
+ */
+ at Documented
+ at Constraint(validatedBy = NoPayload.NoGroupsValidator.class)
+ at Target({ TYPE })
+ at Retention(RUNTIME)
+public @interface NoPayload {
+	public abstract String message() default "default message";
+
+	public abstract Class<?>[] groups() default { };
+
+	public class NoGroupsValidator implements ConstraintValidator<NoPayload, Object> {
+
+		public void initialize(NoPayload parameters) {
+		}
+
+		public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {
+			return false;
+		}
+	}
+}
\ No newline at end of file

Copied: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/ValidInPropertyName.java (from rev 16948, beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/ValidProperty.java)
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/ValidInPropertyName.java	                        (rev 0)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/ValidInPropertyName.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -0,0 +1,55 @@
+// $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.constraints.invalidconstraintdefinitions;
+
+import java.lang.annotation.Documented;
+import static java.lang.annotation.ElementType.TYPE;
+import java.lang.annotation.Retention;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.ConstraintPayload;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ * @author Hardy Ferentschik
+ */
+ at Documented
+ at Constraint(validatedBy = ValidInPropertyName.ValidPropertyValidator.class)
+ at Target({ TYPE })
+ at Retention(RUNTIME)
+public @interface ValidInPropertyName {
+	String message() default "default message";
+
+	Class<?>[] groups() default { };
+
+	Class<? extends ConstraintPayload>[] payload() default { };
+
+	int validLength() default 0;
+
+	public class ValidPropertyValidator implements ConstraintValidator<ValidInPropertyName, Object> {
+
+		public void initialize(ValidInPropertyName parameters) {
+		}
+
+		public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {
+			return false;
+		}
+	}
+}
\ No newline at end of file


Property changes on: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/ValidInPropertyName.java
___________________________________________________________________
Name: svn:keywords
   + Id
Name: svn:eol-style
   + native

Deleted: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/ValidProperty.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/ValidProperty.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/invalidconstraintdefinitions/ValidProperty.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -1,52 +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.constraints.invalidconstraintdefinitions;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.TYPE;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-import javax.validation.Constraint;
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-
-/**
- * @author Hardy Ferentschik
- */
- at Documented
- at Constraint(validatedBy = ValidProperty.ValidPropertyValidator.class)
- at Target({ TYPE })
- at Retention(RUNTIME)
-public @interface ValidProperty {
-	String message() default "default message";
-
-	Class<?>[] groups() default { };
-
-	int validLength() default 0;
-
-	public class ValidPropertyValidator implements ConstraintValidator<ValidProperty, Object> {
-
-		public void initialize(ValidProperty parameters) {
-		}
-
-		public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {
-			return false;
-		}
-	}
-}
\ No newline at end of file

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/Ambigious.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/Ambigious.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/Ambigious.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -28,6 +28,7 @@
 import javax.validation.Constraint;
 import javax.validation.ConstraintValidator;
 import javax.validation.ConstraintValidatorContext;
+import javax.validation.ConstraintPayload;
 
 /**
  * A test constraint which can lead to a error when trying to reslove the validator.
@@ -45,7 +46,9 @@
 
 	public abstract Class<?>[] groups() default { };
 
+	public abstract Class<? extends ConstraintPayload>[] payload() default {};
 
+
 	public class AmbigiousValidatorForBar implements ConstraintValidator<Ambigious, Bar> {
 
 		public void initialize(Ambigious parameters) {

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/PostCodeList.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/PostCodeList.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/PostCodeList.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -28,6 +28,7 @@
 import javax.validation.Constraint;
 import javax.validation.ConstraintValidator;
 import javax.validation.ConstraintValidatorContext;
+import javax.validation.ConstraintPayload;
 
 /**
  * A test constraint which can lead to a error when trying to reslove the validator.
@@ -45,6 +46,8 @@
 
 	public abstract Class<?>[] groups() default { };
 
+	public abstract Class<? extends ConstraintPayload>[] payload() default {};
+
 	public class PostCodeListValidatorForNumber
 			implements ConstraintValidator<PostCodeList, Collection<? extends Number>> {
 		public void initialize(PostCodeList constraintAnnotation) {

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/metadata/AccountChecker.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/metadata/AccountChecker.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/metadata/AccountChecker.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -25,6 +25,7 @@
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import java.lang.annotation.Target;
 import javax.validation.Constraint;
+import javax.validation.ConstraintPayload;
 
 /**
  * @author Hardy Ferentschik
@@ -38,4 +39,6 @@
 	public abstract String message() default "Account information inconsistent.";
 
 	public abstract Class<?>[] groups() default { };
+
+	public abstract Class<? extends ConstraintPayload>[] payload() default {};
 }

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/metadata/NotEmpty.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/metadata/NotEmpty.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/metadata/NotEmpty.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -24,6 +24,7 @@
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import java.lang.annotation.Target;
 import javax.validation.Constraint;
+import javax.validation.ConstraintPayload;
 import javax.validation.OverridesAttribute;
 import javax.validation.ReportAsSingleViolation;
 import javax.validation.constraints.NotNull;
@@ -44,6 +45,8 @@
 
 	public abstract Class<?>[] groups() default { };
 
+	public abstract Class<? extends ConstraintPayload>[] payload() default { };
+
 	@OverridesAttribute(constraint = Size.class, name = "min")
 	public abstract int min() default 5;
 }
\ No newline at end of file

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validation/customconstraint/Negative.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validation/customconstraint/Negative.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validation/customconstraint/Negative.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -25,6 +25,7 @@
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import java.lang.annotation.Target;
 import javax.validation.Constraint;
+import javax.validation.ConstraintPayload;
 
 /**
  * @author Emmanuel Bernard
@@ -37,4 +38,6 @@
 	public abstract String message() default "{validation.negative}";
 
 	public abstract Class<?>[] groups() default { };
+
+	public abstract Class<? extends ConstraintPayload>[] payload() default {};
 }
\ No newline at end of file

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validation/customconstraint/Positive.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validation/customconstraint/Positive.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validation/customconstraint/Positive.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -17,23 +17,27 @@
 */
 package org.hibernate.jsr303.tck.tests.validation.customconstraint;
 
-import java.lang.annotation.Target;
+import java.lang.annotation.Documented;
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
 import java.lang.annotation.Retention;
-import java.lang.annotation.Documented;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import java.lang.annotation.Target;
 import javax.validation.Constraint;
+import javax.validation.ConstraintPayload;
 
 /**
  * @author Emmanuel Bernard
  */
- at Constraint( validatedBy = { PositiveConstraintValidator.class })
+ at Constraint(validatedBy = { PositiveConstraintValidator.class })
 @Target({ METHOD, FIELD, ANNOTATION_TYPE })
 @Retention(RUNTIME)
 @Documented
 public @interface Positive {
 	public abstract String message() default "{validation.positive}";
-	public abstract Class<?>[] groups() default {};
+
+	public abstract Class<?>[] groups() default { };
+
+	public abstract Class<? extends ConstraintPayload>[] payload() default { };
 }
\ No newline at end of file

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validation/validatorcontext/Dummy.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validation/validatorcontext/Dummy.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validation/validatorcontext/Dummy.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -24,6 +24,7 @@
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import java.lang.annotation.Target;
 import javax.validation.Constraint;
+import javax.validation.ConstraintPayload;
 
 /**
  * @author Hardy Ferentschik
@@ -36,4 +37,6 @@
 	String message() default "dummy message";
 
 	Class<?>[] groups() default { };
+
+	Class<? extends ConstraintPayload>[] payload() default { };
 }
\ No newline at end of file

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validatorfactory/MyConstraint.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validatorfactory/MyConstraint.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validatorfactory/MyConstraint.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -25,6 +25,7 @@
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import java.lang.annotation.Target;
 import javax.validation.Constraint;
+import javax.validation.ConstraintPayload;
 
 /**
  * @author Hardy Ferentschik
@@ -37,4 +38,6 @@
 	public abstract String message() default "my constraint failed";
 
 	public abstract Class<?>[] groups() default { };
+
+	public abstract Class<? extends ConstraintPayload>[] payload() default {};
 }
\ No newline at end of file

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validatorfactory/MySecondConstraint.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validatorfactory/MySecondConstraint.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/validatorfactory/MySecondConstraint.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -25,6 +25,7 @@
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import java.lang.annotation.Target;
 import javax.validation.Constraint;
+import javax.validation.ConstraintPayload;
 
 /**
  * @author Hardy Ferentschik
@@ -37,4 +38,6 @@
 	public abstract String message() default "my second constraint failed.";
 
 	public abstract Class<?>[] groups() default { };
+
+	public abstract Class<? extends ConstraintPayload>[] payload() default { };
 }
\ No newline at end of file

Modified: beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/xmlconfiguration/ConsistentUserInformation.java
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/xmlconfiguration/ConsistentUserInformation.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/java/org/hibernate/jsr303/tck/tests/xmlconfiguration/ConsistentUserInformation.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -25,6 +25,7 @@
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import java.lang.annotation.Target;
 import javax.validation.Constraint;
+import javax.validation.ConstraintPayload;
 import javax.validation.constraints.Pattern;
 
 
@@ -40,6 +41,8 @@
 
 	public abstract Class<?>[] groups() default { };
 
+	public abstract Class<? extends ConstraintPayload>[] payload() default {};
+
 	public abstract String stringParam() default "";
 
 	public abstract String[] stringArrayParam() default { };

Modified: beanvalidation/trunk/validation-tck/src/main/resources/tck-audit.xml
===================================================================
--- beanvalidation/trunk/validation-tck/src/main/resources/tck-audit.xml	2009-06-30 10:22:13 UTC (rev 16976)
+++ beanvalidation/trunk/validation-tck/src/main/resources/tck-audit.xml	2009-06-30 12:37:35 UTC (rev 16977)
@@ -46,14 +46,18 @@
             <text>If no group is specified when declaring the constraint on an element, the Default
                 group is considered declared.</text>
         </assertion>
-        <assertion id="g">
+        <assertion id="g"  implied="true">
+            <text>The type of the groups parameter is Class&lt;?&gt;[].</text>
+        </assertion>
+        
+        <assertion id="h">
             <text>Every constraint annotation must define a payload element that specifies which
                 payload the constraint declaration is associated with. </text>
         </assertion>
-        <assertion id="h">
+        <assertion id="i">
             <text>The default value for the payload parameter must be an empty array. </text>
         </assertion>
-        <assertion id="i">
+        <assertion id="j">
             <text>Each attachable payload extends ConstraintPayload. </text>
         </assertion>
     </section>

Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/constraints/NotEmpty.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/constraints/NotEmpty.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/constraints/NotEmpty.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -24,6 +24,7 @@
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
 import java.lang.annotation.Target;
 import javax.validation.Constraint;
+import javax.validation.ConstraintPayload;
 import javax.validation.ReportAsSingleViolation;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
@@ -32,14 +33,16 @@
  * @author Emmanuel Bernard
  */
 @Documented
- at Constraint(validatedBy = {})
+ at Constraint(validatedBy = { })
 @Target({ METHOD, FIELD })
 @Retention(RUNTIME)
 @ReportAsSingleViolation
 @NotNull
- at Size(min=1)
+ at Size(min = 1)
 public @interface NotEmpty {
 	String message() default "{org.hibernate.validation.constraints.NotEmpty.message}";
 
 	Class<?>[] groups() default { };
+
+	Class<? extends ConstraintPayload>[] payload() default { };
 }
\ No newline at end of file

Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/metadata/ConstraintHelper.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/metadata/ConstraintHelper.java	2009-06-30 10:22:13 UTC (rev 16976)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/metadata/ConstraintHelper.java	2009-06-30 12:37:35 UTC (rev 16977)
@@ -262,6 +262,7 @@
 	 * <li>Has to contain a <code>ConstraintValidator</code> implementation.</li>
 	 * <li>Defines a message parameter.</li>
 	 * <li>Defines a group parameter.</li>
+	 * <li>Defines a payload parameter.</li>
 	 * </ul>
 	 *
 	 * @param annotation The annotation to test.
@@ -276,15 +277,50 @@
 			return false;
 		}
 
+		assertMessageParameterExists( annotation );
+		assertGroupsParameterExists( annotation );
+		assertPayloadParameterExists( annotation );
+
+		assertNoParameterStartsWithValid( annotation );
+
+		return true;
+	}
+
+	private void assertNoParameterStartsWithValid(Annotation annotation) {
+		Method[] methods = annotation.getClass().getMethods();
+		for ( Method m : methods ) {
+			if ( m.getName().startsWith( "valid" ) ) {
+				String msg = "Parameters starting with 'valid' are not allowed in a constraint.";
+				throw new ConstraintDefinitionException( msg );
+			}
+		}
+	}
+
+	private void assertPayloadParameterExists(Annotation annotation) {
 		try {
-			ReflectionHelper.getAnnotationParameter( annotation, "message", String.class );
+			Class<?>[] defaultPayload = ( Class<?>[] ) annotation.annotationType()
+					.getMethod( "payload" )
+					.getDefaultValue();
+			if ( defaultPayload.length != 0 ) {
+				String msg = annotation.annotationType()
+						.getName() + " contains Constraint annotation, but the payload " +
+						"paramter default value is not the empty array.";
+				throw new ConstraintDefinitionException( msg );
+			}
 		}
-		catch ( Exception e ) {
+		catch ( ClassCastException e ) {
+			String msg = annotation.annotationType().getName() + " contains Constraint annotation, but the " +
+					"payload parameter is of wrong type.";
+			throw new ConstraintDefinitionException( msg );
+		}
+		catch ( NoSuchMethodException nsme ) {
 			String msg = annotation.annotationType().getName() + " contains Constraint annotation, but does " +
-					"not contain a message parameter.";
+					"not contain a groups parameter.";
 			throw new ConstraintDefinitionException( msg );
 		}
+	}
 
+	private void assertGroupsParameterExists(Annotation annotation) {
 		try {
 			Class<?>[] defaultGroups = ( Class<?>[] ) annotation.annotationType()
 					.getMethod( "groups" )
@@ -292,24 +328,31 @@
 			if ( defaultGroups.length != 0 ) {
 				String msg = annotation.annotationType()
 						.getName() + " contains Constraint annotation, but the groups " +
-						"paramter default value is not empty.";
+						"paramter default value is not the empty array.";
 				throw new ConstraintDefinitionException( msg );
 			}
 		}
+		catch ( ClassCastException e ) {
+			String msg = annotation.annotationType().getName() + " contains Constraint annotation, but the " +
+					"groups parameter is of wrong type.";
+			throw new ConstraintDefinitionException( msg );
+		}
 		catch ( NoSuchMethodException nsme ) {
 			String msg = annotation.annotationType().getName() + " contains Constraint annotation, but does " +
 					"not contain a groups parameter.";
 			throw new ConstraintDefinitionException( msg );
 		}
+	}
 
-		Method[] methods = annotation.getClass().getMethods();
-		for ( Method m : methods ) {
-			if ( m.getName().startsWith( "valid" ) ) {
-				String msg = "Parameters starting with 'valid' are not allowed in a constraint.";
-				throw new ConstraintDefinitionException( msg );
-			}
+	private void assertMessageParameterExists(Annotation annotation) {
+		try {
+			ReflectionHelper.getAnnotationParameter( annotation, "message", String.class );
 		}
-		return true;
+		catch ( Exception e ) {
+			String msg = annotation.annotationType().getName() + " contains Constraint annotation, but does " +
+					"not contain a message parameter.";
+			throw new ConstraintDefinitionException( msg );
+		}
 	}
 
 	public <T extends Annotation> List<Class<? extends ConstraintValidator<T, ?>>> getConstraintValidatorDefinition(Class<T> annotationClass) {
@@ -317,7 +360,9 @@
 			throw new IllegalArgumentException( "Class cannot be null" );
 		}
 
-		final List<Class<? extends ConstraintValidator<? extends Annotation, ?>>> list = constraintValidatorDefinitons.get( annotationClass );
+		final List<Class<? extends ConstraintValidator<? extends Annotation, ?>>> list = constraintValidatorDefinitons.get(
+				annotationClass
+		);
 
 		List<Class<? extends ConstraintValidator<T, ?>>> constraintsValidators =
 				new ArrayList<Class<? extends ConstraintValidator<T, ?>>>( list.size() );




More information about the hibernate-commits mailing list