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/28 18:39:49 UTC

svn commit: r949224 - /incubator/bval/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodValidatorMetaBeanFactory.java

Author: romanstumm
Date: Fri May 28 16:39:48 2010
New Revision: 949224

URL: http://svn.apache.org/viewvc?rev=949224&view=rev
Log:
BVAL-66 merging changes for "Method validation parameter processing problems"

Modified:
    incubator/bval/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodValidatorMetaBeanFactory.java

Modified: incubator/bval/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodValidatorMetaBeanFactory.java
URL: http://svn.apache.org/viewvc/incubator/bval/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodValidatorMetaBeanFactory.java?rev=949224&r1=949223&r2=949224&view=diff
==============================================================================
--- incubator/bval/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodValidatorMetaBeanFactory.java (original)
+++ incubator/bval/trunk/bval-jsr303/src/main/java/org/apache/bval/jsr303/extensions/MethodValidatorMetaBeanFactory.java Fri May 28 16:39:48 2010
@@ -23,6 +23,7 @@ import org.apache.bval.jsr303.Jsr303Meta
 import org.apache.bval.jsr303.util.SecureActions;
 import org.apache.bval.model.Validation;
 import org.apache.bval.util.AccessStrategy;
+import org.apache.commons.lang.ClassUtils;
 
 import javax.validation.Constraint;
 import javax.validation.ConstraintValidator;
@@ -97,7 +98,11 @@ public class MethodValidatorMetaBeanFact
         AppendValidationToList validations = new AppendValidationToList();
         ReturnAccess returnAccess = new ReturnAccess(method.getReturnType());
         for (Annotation anno : method.getAnnotations()) {
-          processAnnotation(anno, methodDesc, returnAccess, validations);
+          if (anno instanceof Valid) {
+            methodDesc.setCascaded(true);
+          } else {
+            processAnnotation(anno, methodDesc, returnAccess, validations);
+          }
         }
         methodDesc.getConstraintDescriptors().addAll(validations.getValidations());
 
@@ -117,13 +122,19 @@ public class MethodValidatorMetaBeanFact
                                   AccessStrategy access, int idx)
       throws InvocationTargetException, IllegalAccessException {
     AppendValidationToList validations = new AppendValidationToList();
+    boolean cascaded = false;
     for (Annotation anno : paramAnnos) {
-      processAnnotation(anno, methodDesc, access, validations);
+      if (anno instanceof Valid) {
+        cascaded = true;
+      } else {
+        processAnnotation(anno, methodDesc, access, validations);
+      }
     }
     ParameterDescriptorImpl paramDesc = new ParameterDescriptorImpl(
         methodDesc.getMetaBean(), validations.getValidations().toArray(
             new Validation[validations.getValidations().size()]));
     paramDesc.setIndex(idx);
+    paramDesc.setCascaded( cascaded );
     methodDesc.getParameterDescriptors().add(paramDesc);
   }
 
@@ -139,7 +150,7 @@ public class MethodValidatorMetaBeanFact
         Class<? extends ConstraintValidator<?, ?>>[] validatorClasses;
         validatorClasses = findConstraintValidatorClasses(annotation, vcAnno);
         applyConstraint(annotation, validatorClasses, null,
-            desc.getMetaBean().getBeanClass(), access, validations);
+            ClassUtils.primitiveToWrapper((Class)access.getJavaType()), access, validations);
       } else {
         /**
          * Multi-valued constraints