You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bval.apache.org by mb...@apache.org on 2011/05/16 21:48:20 UTC

svn commit: r1103858 - in /incubator/bval/sandbox/lang3-work/bval-jsr303-dynamic/provider/src: main/java/org/apache/bval/jsr303/dynamic/NestedValidator.java test/java/org/apache/bval/jsr303/dynamic/NestedValidatorTest.java

Author: mbenson
Date: Mon May 16 19:48:20 2011
New Revision: 1103858

URL: http://svn.apache.org/viewvc?rev=1103858&view=rev
Log:
support ElementDescriptor APIs in NestedValidator

Modified:
    incubator/bval/sandbox/lang3-work/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/NestedValidator.java
    incubator/bval/sandbox/lang3-work/bval-jsr303-dynamic/provider/src/test/java/org/apache/bval/jsr303/dynamic/NestedValidatorTest.java

Modified: incubator/bval/sandbox/lang3-work/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/NestedValidator.java
URL: http://svn.apache.org/viewvc/incubator/bval/sandbox/lang3-work/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/NestedValidator.java?rev=1103858&r1=1103857&r2=1103858&view=diff
==============================================================================
--- incubator/bval/sandbox/lang3-work/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/NestedValidator.java (original)
+++ incubator/bval/sandbox/lang3-work/bval-jsr303-dynamic/provider/src/main/java/org/apache/bval/jsr303/dynamic/NestedValidator.java Mon May 16 19:48:20 2011
@@ -20,9 +20,12 @@ import java.lang.annotation.ElementType;
 import java.lang.reflect.Type;
 
 import javax.validation.ConstraintViolation;
+import javax.validation.ValidationException;
+import javax.validation.metadata.BeanDescriptor;
 
 import org.apache.bval.DynamicMetaBean;
 import org.apache.bval.jsr303.GroupValidationContext;
+import org.apache.bval.jsr303.util.PathImpl;
 import org.apache.bval.jsr303.util.PathNavigation;
 import org.apache.bval.jsr303.util.ValidationContextTraversal;
 import org.apache.bval.model.MetaBean;
@@ -65,6 +68,24 @@ public class NestedValidator extends Dyn
     /**
      * {@inheritDoc}
      */
+    @Override
+    public BeanDescriptor getConstraintsForClass(Class<?> clazz) {
+        if (clazz == null) {
+            throw new IllegalArgumentException("Class cannot be null");
+        }
+        try {
+            DynamicValidationState.CURRENT.set(new DynamicValidationStateBean(null, rootBean, PathImpl.create(path)));
+            return createBeanDescriptor(factoryContext().readOnly().getMetaBean(clazz));
+        } catch (RuntimeException ex) {
+            throw new ValidationException("error retrieving constraints for " + clazz, ex);
+        } finally {
+            DynamicValidationState.CURRENT.remove();
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
     protected GroupValidationContext createContext(MetaBean metaBean, final Object object, Class objectClass,
         Class... groups) {
         if (StringUtils.isEmpty(path)) {

Modified: incubator/bval/sandbox/lang3-work/bval-jsr303-dynamic/provider/src/test/java/org/apache/bval/jsr303/dynamic/NestedValidatorTest.java
URL: http://svn.apache.org/viewvc/incubator/bval/sandbox/lang3-work/bval-jsr303-dynamic/provider/src/test/java/org/apache/bval/jsr303/dynamic/NestedValidatorTest.java?rev=1103858&r1=1103857&r2=1103858&view=diff
==============================================================================
--- incubator/bval/sandbox/lang3-work/bval-jsr303-dynamic/provider/src/test/java/org/apache/bval/jsr303/dynamic/NestedValidatorTest.java (original)
+++ incubator/bval/sandbox/lang3-work/bval-jsr303-dynamic/provider/src/test/java/org/apache/bval/jsr303/dynamic/NestedValidatorTest.java Mon May 16 19:48:20 2011
@@ -19,6 +19,7 @@ package org.apache.bval.jsr303.dynamic;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
+import java.beans.PropertyDescriptor;
 import java.util.ArrayList;
 import java.util.Locale;
 import java.util.Set;
@@ -28,6 +29,7 @@ import javax.validation.Validation;
 import javax.validation.Validator;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Pattern;
+import javax.validation.metadata.BeanDescriptor;
 
 import org.apache.bval.jsr303.ApacheValidationProvider;
 import org.apache.bval.jsr303.ApacheValidatorConfiguration;
@@ -143,4 +145,20 @@ public class NestedValidatorTest {
         errors = new NestedValidator(validatorContext, Author.class, "addresses[1]").validate(address1, Book.All.class);
         assertEquals(1, errors.size());
     }
+
+    @Test
+    public void testDescriptor() {
+        validatorContext.constrain(Author.class, "addresses[].addressline2",
+            StubConstraint.build().withGroups(First.class).new CustomConfig<Pattern>() {
+                protected void customConfigure(Pattern stub) {
+                    when(stub.regexp()).thenReturn("[0..9]+.*");
+                }
+            }.build());
+
+        assertEquals(1, validator.getConstraintsForClass(Address.class).getConstraintsForProperty("addressline2")
+            .getConstraintDescriptors().size());
+        assertEquals(2,
+            new NestedValidator(validatorContext, Author.class, "addresses[]").getConstraintsForClass(Address.class)
+                .getConstraintsForProperty("addressline2").getConstraintDescriptors().size());
+    }
 }