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/02/21 19:14:45 UTC

svn commit: r1073103 - in /incubator/bval/sandbox/lang3-work/bval-jsr303d/src: main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java test/java/org/apache/bval/jsr303/dynamic/DynamicBeanDescriptorTest.java

Author: mbenson
Date: Mon Feb 21 18:14:45 2011
New Revision: 1073103

URL: http://svn.apache.org/viewvc?rev=1073103&view=rev
Log:
add dynamic descriptor testing/bugfix

Modified:
    incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java
    incubator/bval/sandbox/lang3-work/bval-jsr303d/src/test/java/org/apache/bval/jsr303/dynamic/DynamicBeanDescriptorTest.java

Modified: incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java?rev=1073103&r1=1073102&r2=1073103&view=diff
==============================================================================
--- incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java (original)
+++ incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java Mon Feb 21 18:14:45 2011
@@ -338,6 +338,8 @@ final class DynamicMetaGraphManagerImpl 
             setName(metaBean.getName());
             setBeanClass(metaBean.getBeanClass());
             getFeatures().putAll(metaBean.getFeatures());
+            //don't inherit a cached descriptor from the static MetaBean:
+            getFeatures().remove(Jsr303Features.Bean.BEAN_DESCRIPTOR);
             setValidations(metaBean.getValidations().clone());
 
             MetaProperty[] properties = ObjectUtils.clone(metaBean.getProperties());

Modified: incubator/bval/sandbox/lang3-work/bval-jsr303d/src/test/java/org/apache/bval/jsr303/dynamic/DynamicBeanDescriptorTest.java
URL: http://svn.apache.org/viewvc/incubator/bval/sandbox/lang3-work/bval-jsr303d/src/test/java/org/apache/bval/jsr303/dynamic/DynamicBeanDescriptorTest.java?rev=1073103&r1=1073102&r2=1073103&view=diff
==============================================================================
--- incubator/bval/sandbox/lang3-work/bval-jsr303d/src/test/java/org/apache/bval/jsr303/dynamic/DynamicBeanDescriptorTest.java (original)
+++ incubator/bval/sandbox/lang3-work/bval-jsr303d/src/test/java/org/apache/bval/jsr303/dynamic/DynamicBeanDescriptorTest.java Mon Feb 21 18:14:45 2011
@@ -20,17 +20,22 @@ import java.util.Locale;
 
 import javax.validation.Validation;
 import javax.validation.Validator;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
 
 import org.apache.bval.jsr303.ApacheValidationProvider;
 import org.apache.bval.jsr303.ApacheValidatorConfiguration;
 import org.apache.bval.jsr303.BeanDescriptorTest;
 import org.apache.bval.jsr303.DefaultMessageInterpolator;
-import org.apache.bval.jsr303.dynamic.DynamicValidatorContext;
-import org.apache.bval.jsr303.dynamic.DynamicValidatorFactory;
+import org.apache.bval.jsr303.example.First;
+import org.apache.bval.jsr303.util.TestUtils;
+import org.apache.commons.proxy2.stub.AnnotationFactory;
+import org.apache.commons.proxy2.stub.StubConfigurer;
 
 /**
- *
- *
+ * 
+ * 
  * @version $Rev$ $Date$
  */
 public class DynamicBeanDescriptorTest extends BeanDescriptorTest {
@@ -43,9 +48,12 @@ public class DynamicBeanDescriptorTest e
     @Override
     public void setUp() throws Exception {
         DynamicValidatorFactory factory =
-            Validation.byProvider(ApacheValidationProvider.class).configure().addProperty(
-                ApacheValidatorConfiguration.Properties.VALIDATOR_FACTORY_CLASSNAME,
-                DynamicValidatorFactory.class.getName()).buildValidatorFactory().unwrap(DynamicValidatorFactory.class);
+            Validation
+                .byProvider(ApacheValidationProvider.class)
+                .configure()
+                .addProperty(ApacheValidatorConfiguration.Properties.VALIDATOR_FACTORY_CLASSNAME,
+                    DynamicValidatorFactory.class.getName()).buildValidatorFactory()
+                .unwrap(DynamicValidatorFactory.class);
         ((DefaultMessageInterpolator) factory.getMessageInterpolator()).setLocale(Locale.ENGLISH);
         validatorContext = factory.usingContext();
         super.setUp();
@@ -59,4 +67,39 @@ public class DynamicBeanDescriptorTest e
         return validatorContext.getValidator();
     }
 
+    @SuppressWarnings("unchecked")
+    public void testDynamicDescriptor() {
+        TestUtils.assertConstraintTypesFound(
+            validator.getConstraintsForClass(Woman.class).getConstraintsForProperty("name").findConstraints(),
+            NotNull.class);
+
+        validatorContext.constrain(Person.class, "name",
+            AnnotationFactory.INSTANCE.create(new StubConfigurer<Pattern>() {
+                /**
+                 * {@inheritDoc}
+                 */
+                @Override
+                protected void configure(Pattern stub) {
+                    when(stub.regexp()).thenReturn("[A-Za-z].*").when(stub.groups()).thenReturn(First.class);
+                }
+            }));
+
+        TestUtils.assertConstraintTypesFound(
+            validator.getConstraintsForClass(Woman.class).getConstraintsForProperty("name").findConstraints(),
+            NotNull.class, Pattern.class);
+
+        validatorContext.constrain(Person.class, "name", AnnotationFactory.INSTANCE.create(new StubConfigurer<Size>() {
+            /**
+             * {@inheritDoc}
+             */
+            @Override
+            protected void configure(Size stub) {
+                when(stub.min()).thenReturn(1);
+            }
+        }));
+
+        TestUtils.assertConstraintTypesFound(
+            validator.getConstraintsForClass(Woman.class).getConstraintsForProperty("name").findConstraints(),
+            NotNull.class, Pattern.class, Size.class);
+    }
 }