Author: gunnar.morling
Date: 2010-08-08 12:45:57 -0400 (Sun, 08 Aug 2010)
New Revision: 20126
Added:
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/ConstraintValidatorCheck.java
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/ConstraintsWithoutValidator.java
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/DummyValidator.java
Modified:
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/ConstraintCheckFactory.java
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/RetentionPolicyCheck.java
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/TargetCheck.java
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/util/ConstraintHelper.java
validator/trunk/hibernate-validator-annotation-processor/src/main/resources/org/hibernate/validator/ap/ValidationProcessorMessages.properties
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/AnnotationTypeValidationTest.java
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/ConstraintValidationProcessorTestBase.java
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/ConstraintsWithIllegalRetentionPolicies.java
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/ConstraintsWithIllegalTargets.java
Log:
HV-299: Implemented check for validator specification at constraint annotation types,
added SVN keywords property
Modified:
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/ConstraintCheckFactory.java
===================================================================
---
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/ConstraintCheckFactory.java 2010-08-08
15:00:19 UTC (rev 20125)
+++
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/ConstraintCheckFactory.java 2010-08-08
16:45:57 UTC (rev 20126)
@@ -106,7 +106,9 @@
annotationTypeChecks.put(
AnnotationType.CONSTRAINT_META_ANNOTATION,
new SingleValuedChecks(
- new RetentionPolicyCheck( annotationApiHelper ), new TargetCheck(
annotationApiHelper )
+ new RetentionPolicyCheck( annotationApiHelper ),
+ new TargetCheck( annotationApiHelper ),
+ new ConstraintValidatorCheck( constraintHelper, annotationApiHelper )
)
);
annotationTypeChecks.put( AnnotationType.NO_CONSTRAINT_ANNOTATION, NULL_CHECKS );
Added:
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/ConstraintValidatorCheck.java
===================================================================
---
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/ConstraintValidatorCheck.java
(rev 0)
+++
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/ConstraintValidatorCheck.java 2010-08-08
16:45:57 UTC (rev 20126)
@@ -0,0 +1,68 @@
+// $Id$
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, 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.validator.ap.checks;
+
+import java.util.Collections;
+import java.util.Set;
+import javax.lang.model.element.AnnotationMirror;
+import javax.lang.model.element.TypeElement;
+import javax.validation.Constraint;
+
+import org.hibernate.validator.ap.util.AnnotationApiHelper;
+import org.hibernate.validator.ap.util.CollectionHelper;
+import org.hibernate.validator.ap.util.ConstraintHelper;
+
+/**
+ * Checks, that for each constraint annotation type, which is not a composed constraint,
+ * a validator implementation is specified using {@link Constraint#validatedBy()}.
+ *
+ * @author Gunnar Morling
+ */
+public class ConstraintValidatorCheck extends AbstractConstraintCheck {
+
+ private ConstraintHelper constraintHelper;
+
+ private final AnnotationApiHelper annotationApiHelper;
+
+ public ConstraintValidatorCheck(ConstraintHelper constraintHelper, AnnotationApiHelper
annotationApiHelper) {
+
+ this.constraintHelper = constraintHelper;
+ this.annotationApiHelper = annotationApiHelper;
+ }
+
+ @Override
+ public Set<ConstraintCheckError> checkAnnotationType(TypeElement element,
AnnotationMirror annotation) {
+
+ Constraint constraint = element.getAnnotation( Constraint.class );
+
+ //raise an error if neither a validator is given and this is not a composed constraint
+ if ( !( constraint.validatedBy().length > 0 ||
constraintHelper.isComposedConstraint( element ) ) ) {
+
+ return CollectionHelper.asSet(
+ new ConstraintCheckError(
+ element,
+ annotationApiHelper.getMirror( element.getAnnotationMirrors(), Constraint.class
),
+ "CONSTRAINT_TYPE_WITHOUT_VALIDATOR"
+ )
+ );
+ }
+
+ return Collections.emptySet();
+ }
+
+}
Property changes on:
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/ConstraintValidatorCheck.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified:
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/RetentionPolicyCheck.java
===================================================================
---
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/RetentionPolicyCheck.java 2010-08-08
15:00:19 UTC (rev 20125)
+++
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/RetentionPolicyCheck.java 2010-08-08
16:45:57 UTC (rev 20126)
@@ -1,4 +1,4 @@
-// $Id: RetentionPolicyCheck.java 19310 2010-04-27 22:51:17Z gunnar.morling $
+// $Id$
/*
* JBoss, Home of Professional Open Source
* Copyright 2009, Red Hat Middleware LLC, and individual contributors
Property changes on:
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/RetentionPolicyCheck.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified:
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/TargetCheck.java
===================================================================
---
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/TargetCheck.java 2010-08-08
15:00:19 UTC (rev 20125)
+++
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/TargetCheck.java 2010-08-08
16:45:57 UTC (rev 20126)
@@ -1,4 +1,4 @@
-// $Id: TargetCheck.java 19310 2010-04-27 22:51:17Z gunnar.morling $
+// $Id$
/*
* JBoss, Home of Professional Open Source
* Copyright 2009, Red Hat Middleware LLC, and individual contributors
Property changes on:
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/checks/TargetCheck.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified:
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/util/ConstraintHelper.java
===================================================================
---
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/util/ConstraintHelper.java 2010-08-08
15:00:19 UTC (rev 20125)
+++
validator/trunk/hibernate-validator-annotation-processor/src/main/java/org/hibernate/validator/ap/util/ConstraintHelper.java 2010-08-08
16:45:57 UTC (rev 20126)
@@ -29,6 +29,7 @@
import javax.lang.model.element.AnnotationValue;
import javax.lang.model.element.Element;
import javax.lang.model.element.Name;
+import javax.lang.model.element.TypeElement;
import javax.lang.model.type.DeclaredType;
import javax.lang.model.type.TypeMirror;
import javax.lang.model.util.Elements;
@@ -307,6 +308,29 @@
);
}
+ /**
+ * Checks, whether the given type element represents a composed constraint or not.
+ *
+ * @param element The type element of interest. Must not be null.
+ *
+ * @return True if the given element represents a composed constraint, false otherwise.
+ */
+ public boolean isComposedConstraint(TypeElement element) {
+
+ return Boolean.TRUE.equals(
+ element.asType().accept(
+ new TypeKindVisitor6<Boolean, Void>() {
+
+ @Override
+ public Boolean visitDeclared(DeclaredType constraintValidatorImplementation, Void
p) {
+ return !getComposingConstraints( constraintValidatorImplementation ).isEmpty();
+ }
+
+ }, null
+ )
+ );
+ }
+
// ==================================
// private API below
// ==================================
Modified:
validator/trunk/hibernate-validator-annotation-processor/src/main/resources/org/hibernate/validator/ap/ValidationProcessorMessages.properties
===================================================================
---
validator/trunk/hibernate-validator-annotation-processor/src/main/resources/org/hibernate/validator/ap/ValidationProcessorMessages.properties 2010-08-08
15:00:19 UTC (rev 20125)
+++
validator/trunk/hibernate-validator-annotation-processor/src/main/resources/org/hibernate/validator/ap/ValidationProcessorMessages.properties 2010-08-08
16:45:57 UTC (rev 20126)
@@ -12,4 +12,5 @@
ATVALID_NOT_ALLOWED_AT_PRIMITIVE_FIELD=Fields of a primitive type must not annotated with
@Valid.
ATVALID_NOT_ALLOWED_AT_METHOD_RETURNING_PRIMITIVE_TYPE=Methods returning a primitive type
must not annotated with @Valid.
CONSTRAINT_TYPE_WITH_MISSING_OR_WRONG_RETENTION=Constraint annotation types must be
annotated with @Retention(RUNTIME).
-CONSTRAINT_TYPE_WITH_WRONG_TARGET=Constraint annotation types must have at least one of
the element types FIELD, METHOD, TYPE or ANNOTATION_TYPE as target.
\ No newline at end of file
+CONSTRAINT_TYPE_WITH_WRONG_TARGET=Constraint annotation types must have at least one of
the element types FIELD, METHOD, TYPE or ANNOTATION_TYPE as target.
+CONSTRAINT_TYPE_WITHOUT_VALIDATOR=For non-composed constraints a validator implementation
must be specified using @Constraint#validatedBy().
\ No newline at end of file
Modified:
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/AnnotationTypeValidationTest.java
===================================================================
---
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/AnnotationTypeValidationTest.java 2010-08-08
15:00:19 UTC (rev 20125)
+++
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/AnnotationTypeValidationTest.java 2010-08-08
16:45:57 UTC (rev 20126)
@@ -1,4 +1,4 @@
-// $Id: AnnotationTypeValidationTest.java 19525 2010-05-15 16:05:09Z gunnar.morling $
+// $Id$
/*
* JBoss, Home of Professional Open Source
* Copyright 2009, Red Hat Middleware LLC, and individual contributors
@@ -24,6 +24,8 @@
import
org.hibernate.validator.ap.testmodel.constrainttypes.ConstraintsWithIllegalRetentionPolicies;
import
org.hibernate.validator.ap.testmodel.constrainttypes.ConstraintsWithIllegalTargets;
+import org.hibernate.validator.ap.testmodel.constrainttypes.ConstraintsWithoutValidator;
+import org.hibernate.validator.ap.testmodel.constrainttypes.DummyValidator;
import org.hibernate.validator.ap.testmodel.constrainttypes.ValidCustomerNumber;
import org.hibernate.validator.ap.util.DiagnosticExpectation;
@@ -55,10 +57,11 @@
@Test
public void
testThatConstraintAnnotationTypeWithWrongRetentionPolicyCausesCompilationError() {
- File sourceFile = compilerHelper.getSourceFile(
ConstraintsWithIllegalRetentionPolicies.class );
+ File sourceFile1 = compilerHelper.getSourceFile(
ConstraintsWithIllegalRetentionPolicies.class );
+ File sourceFile2 = compilerHelper.getSourceFile( DummyValidator.class );
boolean compilationResult =
- compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics, sourceFile
);
+ compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics,
sourceFile1, sourceFile2 );
assertFalse( compilationResult );
assertThatDiagnosticsMatch(
@@ -70,10 +73,11 @@
@Test
public void testThatConstraintAnnotationTypeWithWrongTargetCausesCompilationError() {
- File sourceFile = compilerHelper.getSourceFile( ConstraintsWithIllegalTargets.class );
+ File sourceFile1 = compilerHelper.getSourceFile( ConstraintsWithIllegalTargets.class
);
+ File sourceFile2 = compilerHelper.getSourceFile( DummyValidator.class );
boolean compilationResult =
- compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics, sourceFile
);
+ compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics,
sourceFile1, sourceFile2 );
assertFalse( compilationResult );
assertThatDiagnosticsMatch(
@@ -82,5 +86,19 @@
);
}
+ @Test
+ public void testThatConstraintAnnotationTypeWithoutValidatorCausesCompilationError() {
+ File sourceFile1 = compilerHelper.getSourceFile( ConstraintsWithoutValidator.class );
+ File sourceFile2 = compilerHelper.getSourceFile( DummyValidator.class );
+
+ boolean compilationResult =
+ compilerHelper.compile( new ConstraintValidationProcessor(), diagnostics,
sourceFile1, sourceFile2 );
+
+ assertFalse( compilationResult );
+ assertThatDiagnosticsMatch(
+ diagnostics,
+ new DiagnosticExpectation( Kind.ERROR, 34 )
+ );
+ }
}
Property changes on:
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/AnnotationTypeValidationTest.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified:
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/ConstraintValidationProcessorTestBase.java
===================================================================
---
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/ConstraintValidationProcessorTestBase.java 2010-08-08
15:00:19 UTC (rev 20125)
+++
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/ConstraintValidationProcessorTestBase.java 2010-08-08
16:45:57 UTC (rev 20126)
@@ -1,4 +1,4 @@
-// $Id: ConstraintValidationProcessorTestBase.java 19033 Aug 8, 2010 11:14:14 AM
gunnar.morling $
+// $Id$
/*
* JBoss, Home of Professional Open Source
* Copyright 2009, Red Hat Middleware LLC, and individual contributors
Property changes on:
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/ConstraintValidationProcessorTestBase.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified:
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/ConstraintsWithIllegalRetentionPolicies.java
===================================================================
---
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/ConstraintsWithIllegalRetentionPolicies.java 2010-08-08
15:00:19 UTC (rev 20125)
+++
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/ConstraintsWithIllegalRetentionPolicies.java 2010-08-08
16:45:57 UTC (rev 20126)
@@ -1,4 +1,4 @@
-// $Id: ConstraintWithWrongRetentionPolicy.java 19033 Aug 1, 2010 5:44:13 PM
gunnar.morling $
+// $Id$
/*
* JBoss, Home of Professional Open Source
* Copyright 2009, Red Hat Middleware LLC, and individual contributors
@@ -29,7 +29,7 @@
/**
* Compilation error expected as wrong retention policy is given.
*/
- @Constraint(validatedBy = { })
+ @Constraint(validatedBy = { DummyValidator.class })
@Retention(RetentionPolicy.CLASS)
public @interface ConstraintWithWrongRetentionPolicy {
@@ -38,7 +38,7 @@
/**
* Compilation error expected as no retention policy is given.
*/
- @Constraint(validatedBy = { })
+ @Constraint(validatedBy = { DummyValidator.class })
public @interface ConstraintWithoutRetentionPolicy {
}
@@ -46,7 +46,7 @@
/**
* No compilation error expected as correct retention policy is given.
*/
- @Constraint(validatedBy = { })
+ @Constraint(validatedBy = { DummyValidator.class })
@Retention(RetentionPolicy.RUNTIME)
public @interface ConstraintWithCorrectRetentionPolicy {
Property changes on:
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/ConstraintsWithIllegalRetentionPolicies.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified:
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/ConstraintsWithIllegalTargets.java
===================================================================
---
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/ConstraintsWithIllegalTargets.java 2010-08-08
15:00:19 UTC (rev 20125)
+++
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/ConstraintsWithIllegalTargets.java 2010-08-08
16:45:57 UTC (rev 20126)
@@ -1,4 +1,4 @@
-// $Id: ConstraintsWithIllegalTargets.java 19033 Aug 1, 2010 5:44:13 PM gunnar.morling $
+// $Id$
/*
* JBoss, Home of Professional Open Source
* Copyright 2009, Red Hat Middleware LLC, and individual contributors
@@ -37,7 +37,7 @@
/**
* Compilation error expected due to none supported target type being given.
*/
- @Constraint(validatedBy = { })
+ @Constraint(validatedBy = { DummyValidator.class })
@Retention(RetentionPolicy.RUNTIME)
@Target({ LOCAL_VARIABLE })
public @interface ConstraintWithWrongTarget {
@@ -47,7 +47,7 @@
/**
* Compilation error expected as no supported target type is given.
*/
- @Constraint(validatedBy = { })
+ @Constraint(validatedBy = { DummyValidator.class })
@Retention(RetentionPolicy.RUNTIME)
@Target({ })
public @interface ConstraintWithEmptyTarget {
@@ -57,7 +57,7 @@
/**
* No compilation error expected, as not specifying @Target allows this constraint for
all element types.
*/
- @Constraint(validatedBy = { })
+ @Constraint(validatedBy = { DummyValidator.class })
@Retention(RetentionPolicy.RUNTIME)
public @interface ConstraintWithDefaultTarget {
@@ -66,7 +66,7 @@
/**
* No compilation error expected, as supported target type FIELD is given.
*/
- @Constraint(validatedBy = { })
+ @Constraint(validatedBy = { DummyValidator.class })
@Retention(RetentionPolicy.RUNTIME)
@Target({ FIELD })
public @interface ConstraintWithAllowedTargetField {
@@ -76,7 +76,7 @@
/**
* No compilation error expected, as supported target type METHOD is given.
*/
- @Constraint(validatedBy = { })
+ @Constraint(validatedBy = { DummyValidator.class })
@Retention(RetentionPolicy.RUNTIME)
@Target({ METHOD })
public @interface ConstraintWithAllowedTargetMethod {
@@ -86,7 +86,7 @@
/**
* No compilation error expected, as supported target type TYPE is given.
*/
- @Constraint(validatedBy = { })
+ @Constraint(validatedBy = { DummyValidator.class })
@Retention(RetentionPolicy.RUNTIME)
@Target({ TYPE })
public @interface ConstraintWithAllowedTargetType {
@@ -96,7 +96,7 @@
/**
* No compilation error expected, as supported target type ANNOTATION_TYPE is given.
*/
- @Constraint(validatedBy = { })
+ @Constraint(validatedBy = { DummyValidator.class })
@Retention(RetentionPolicy.RUNTIME)
@Target({ ANNOTATION_TYPE })
public @interface ConstraintWithAllowedTargetAnnotationType {
Property changes on:
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/ConstraintsWithIllegalTargets.java
___________________________________________________________________
Name: svn:keywords
+ Id
Added:
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/ConstraintsWithoutValidator.java
===================================================================
---
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/ConstraintsWithoutValidator.java
(rev 0)
+++
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/ConstraintsWithoutValidator.java 2010-08-08
16:45:57 UTC (rev 20126)
@@ -0,0 +1,58 @@
+// $Id$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, 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.validator.ap.testmodel.constrainttypes;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import javax.validation.Constraint;
+import javax.validation.constraints.Size;
+
+/**
+ * @author Gunnar Morling
+ */
+public interface ConstraintsWithoutValidator {
+
+ /**
+ * Compilation error expected as no validator is given.
+ */
+ @Retention(RetentionPolicy.RUNTIME)
+ @Constraint(validatedBy = { })
+ public @interface ConstraintWithoutValidator {
+
+ }
+
+ /**
+ * No compilation error expected as a validator is given.
+ */
+ @Retention(RetentionPolicy.RUNTIME)
+ @Constraint(validatedBy = { DummyValidator.class })
+ public @interface ConstraintWithValidator {
+
+ }
+
+ /**
+ * No compilation error as this is a composed constraint.
+ */
+ @Size
+ @Retention(RetentionPolicy.RUNTIME)
+ @Constraint(validatedBy = { })
+ public @interface ComposedConstraintWithoutValidator {
+
+ }
+
+}
\ No newline at end of file
Property changes on:
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/ConstraintsWithoutValidator.java
___________________________________________________________________
Name: svn:keywords
+ Id
Added:
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/DummyValidator.java
===================================================================
---
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/DummyValidator.java
(rev 0)
+++
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/DummyValidator.java 2010-08-08
16:45:57 UTC (rev 20126)
@@ -0,0 +1,37 @@
+// $Id$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, 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.validator.ap.testmodel.constrainttypes;
+
+import java.lang.annotation.Annotation;
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+
+/**
+ * @author Gunnar Morling
+ */
+public class DummyValidator implements ConstraintValidator<Annotation, Object> {
+
+ public void initialize(Annotation constraintAnnotation) {
+ throw new UnsupportedOperationException( "Not implemented" );
+ }
+
+ public boolean isValid(Object value, ConstraintValidatorContext context) {
+ throw new UnsupportedOperationException( "Not implemented" );
+ }
+
+}
Property changes on:
validator/trunk/hibernate-validator-annotation-processor/src/test/java/org/hibernate/validator/ap/testmodel/constrainttypes/DummyValidator.java
___________________________________________________________________
Name: svn:keywords
+ Id