Author: mbenson
Date: Wed Jun 15 22:55:31 2011
New Revision: 1136235

URL: http://svn.apache.org/viewvc?rev=1136235&view=rev
Log:
best type consistency; resolve DynamicMetaBeans on completion

Modified:
    
incubator/bval/sandbox/lang3-work/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ValidationContextTraversal.java

Modified: 
incubator/bval/sandbox/lang3-work/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ValidationContextTraversal.java
URL: 
http://svn.apache.org/viewvc/incubator/bval/sandbox/lang3-work/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ValidationContextTraversal.java?rev=1136235&r1=1136234&r2=1136235&view=diff
==============================================================================
--- 
incubator/bval/sandbox/lang3-work/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ValidationContextTraversal.java
 (original)
+++ 
incubator/bval/sandbox/lang3-work/bval-jsr303/src/main/java/org/apache/bval/jsr303/util/ValidationContextTraversal.java
 Wed Jun 15 22:55:31 2011
@@ -105,7 +105,7 @@ public class ValidationContextTraversal 
         }
         Object value = validationContext.getBean();
         Object child = value == null ? null : access.get(value);
-        setType(access.getJavaType());
+        setType(child == null ? access.getJavaType() : child.getClass());
         validationContext.setBean(child,
             validationContext.getMetaBean().resolveMetaBean(child == null ? 
rawType : child));
     }
@@ -186,4 +186,16 @@ public class ValidationContextTraversal 
         return rawType;
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void complete() {
+        super.complete();
+        MetaBean metaBean = validationContext.getMetaBean();
+        if (metaBean instanceof DynamicMetaBean) {
+            Class<?> defaultType = validationContext.getMetaProperty() == null 
? rawType : 
validationContext.getMetaProperty().getParentMetaBean().getBeanClass();
+            
validationContext.setMetaBean(metaBean.resolveMetaBean(ObjectUtils.defaultIfNull(validationContext.getBean(),
 defaultType)));
+        }
+    }
 }
\ No newline at end of file


Reply via email to