You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bval.apache.org by ro...@apache.org on 2010/05/05 11:09:30 UTC
svn commit: r941210 - in /incubator/bval/trunk/bval-jsr303/src:
main/java/org/apache/bval/jsr303/AnnotationConstraintBuilder.java
test/java/org/apache/bval/jsr303/BeanDescriptorTest.java
Author: romanstumm
Date: Wed May 5 09:09:30 2010
New Revision: 941210
URL: http://svn.apache.org/viewvc?rev=941210&view=rev
Log:
BVAL-38 Groups and payload values must be part of the ConstraintDescriptor attributes - from Carlos Varla
Added:
incubator/bval/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/BeanDescriptorTest.java
Modified:
incubator/bval/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AnnotationConstraintBuilder.java
Modified: incubator/bval/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AnnotationConstraintBuilder.java
URL: http://svn.apache.org/viewvc/incubator/bval/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AnnotationConstraintBuilder.java?rev=941210&r1=941209&r2=941210&view=diff
==============================================================================
--- incubator/bval/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AnnotationConstraintBuilder.java (original)
+++ incubator/bval/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/AnnotationConstraintBuilder.java Wed May 5 09:09:30 2010
@@ -65,18 +65,17 @@ final class AnnotationConstraintBuilder
for (Method method : constraintValidation.getAnnotation()
.annotationType()
.getDeclaredMethods()) {
- // enhancement: clarify: should groups + payload also appear in attributes?
+ // groups + payload must also appear in attributes (also checked by TCK-Tests)
if (method.getParameterTypes().length == 0) {
try {
if (ANNOTATION_PAYLOAD.equals(method.getName())) {
buildPayload(method);
} else if (ANNOTATION_GROUPS.equals(method.getName())) {
buildGroups(method);
- } else {
- constraintValidation.getAttributes()
- .put(method.getName(), method.invoke(
- constraintValidation.getAnnotation()));
}
+ constraintValidation.getAttributes()
+ .put(method.getName(), method.invoke(
+ constraintValidation.getAnnotation()));
} catch (Exception e) { // do nothing
log.warn("error processing annotation: " +
constraintValidation.getAnnotation(), e);
@@ -177,16 +176,16 @@ final class AnnotationConstraintBuilder
if ( override != null ) {
override.applyOn(composite);
}
-
+
}
}
-
+
/**
* Calculates the index of the composite constraint. The index represents
* the order in which it is added in reference to other constraints of the
* same type.
- *
+ *
* @param composite
* The composite constraint (not yet added).
* @return An integer index always >= 0
@@ -263,7 +262,7 @@ final class AnnotationConstraintBuilder
public void applyOn(ConstraintValidation composite) {
// Update the attributes
composite.getAttributes().putAll(values);
-
+
// And the annotation
Annotation originalAnnot = composite.getAnnotation();
AnnotationProxyBuilder<Annotation> apb = new AnnotationProxyBuilder<Annotation>(originalAnnot);
Added: incubator/bval/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/BeanDescriptorTest.java
URL: http://svn.apache.org/viewvc/incubator/bval/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/BeanDescriptorTest.java?rev=941210&view=auto
==============================================================================
--- incubator/bval/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/BeanDescriptorTest.java (added)
+++ incubator/bval/trunk/bval-jsr303/src/test/java/org/apache/bval/jsr303/BeanDescriptorTest.java Wed May 5 09:09:30 2010
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.bval.jsr303;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import javax.validation.Validation;
+import javax.validation.Validator;
+import javax.validation.ValidatorFactory;
+import javax.validation.constraints.NotNull;
+import javax.validation.metadata.BeanDescriptor;
+import javax.validation.metadata.ConstraintDescriptor;
+import java.util.Locale;
+import java.util.Set;
+
+/**
+ * Tests the implementation of {@link BeanDescriptor} and its dependent
+ * interfaces.
+ *
+ * @author Carlos Vara
+ */
+public class BeanDescriptorTest extends TestCase {
+
+ static ValidatorFactory factory;
+
+ static {
+ factory = Validation.buildDefaultValidatorFactory();
+ ((DefaultMessageInterpolator) factory.getMessageInterpolator()).setLocale(Locale.ENGLISH);
+ }
+
+ private Validator getValidator() {
+ return factory.getValidator();
+ }
+
+
+ /**
+ * Check that groups(), message() and payload() are always in the
+ * attributes.
+ */
+ public void testMandatoryAttributesPresentInConstraintDescriptor() {
+ Validator validator = getValidator();
+
+ Set<ConstraintDescriptor<?>> nameDescriptors = validator.getConstraintsForClass(Form.class).getConstraintsForProperty("name").getConstraintDescriptors();
+ Assert.assertEquals("Incorrect number of descriptors", 1, nameDescriptors.size());
+ ConstraintDescriptor<?> nameDescriptor = nameDescriptors.iterator().next();
+ Assert.assertTrue("groups attribute not present", nameDescriptor.getAttributes().containsKey("groups"));
+ Assert.assertTrue("payload attribute not present", nameDescriptor.getAttributes().containsKey("payload"));
+ Assert.assertTrue("message attribute not present", nameDescriptor.getAttributes().containsKey("message"));
+ }
+
+ public static class Form {
+ @NotNull
+ public String name;
+ }
+
+}