@@ -621,7 +621,7 @@ private void validateCascadedAnnotatedObjectForCurrentGroup(Object value, BaseBe
621621 // already and need only to pass the current element
622622 ValidationOrder validationOrder = validationOrderGenerator .getValidationOrder ( currentGroup , currentGroup != originalGroup );
623623
624- BeanValueContext <?, Object > cascadedValueContext = buildNewLocalExecutionContext ( valueContext , value );
624+ BeanValueContext <?, Object > cascadedValueContext = buildNewLocalExecutionContext ( cascadingMetaData , valueContext , value );
625625
626626 validateInContext ( validationContext , cascadedValueContext , validationOrder );
627627 }
@@ -699,7 +699,7 @@ private void doValidate(Object value, String nodeName) {
699699 // already and need only to pass the current element
700700 ValidationOrder validationOrder = validationOrderGenerator .getValidationOrder ( currentGroup , currentGroup != originalGroup );
701701
702- BeanValueContext <?, Object > cascadedValueContext = buildNewLocalExecutionContext ( valueContext , value );
702+ BeanValueContext <?, Object > cascadedValueContext = buildNewLocalExecutionContext ( cascadingMetaData , valueContext , value );
703703
704704 if ( cascadingMetaData .getDeclaredContainerClass () != null ) {
705705 cascadedValueContext .setTypeParameter ( cascadingMetaData .getDeclaredContainerClass (), cascadingMetaData .getDeclaredTypeParameterIndex () );
@@ -712,7 +712,7 @@ private void doValidate(Object value, String nodeName) {
712712
713713 // Cascade validation to container elements if we are dealing with a container element
714714 if ( cascadingMetaData .hasContainerElementsMarkedForCascading () ) {
715- ValueContext <?, Object > cascadedTypeArgumentValueContext = buildNewLocalExecutionContext ( valueContext , value );
715+ ValueContext <?, Object > cascadedTypeArgumentValueContext = buildNewLocalExecutionContext ( cascadingMetaData , valueContext , value );
716716 if ( cascadingMetaData .getTypeParameter () != null ) {
717717 cascadedValueContext .setTypeParameter ( cascadingMetaData .getDeclaredContainerClass (), cascadingMetaData .getDeclaredTypeParameterIndex () );
718718 }
@@ -761,14 +761,13 @@ private void validateCascadedContainerElementsInContext(Object value, BaseBeanVa
761761 }
762762 }
763763
764- private BeanValueContext <?, Object > buildNewLocalExecutionContext (ValueContext <?, ?> valueContext , Object value ) {
764+ private BeanValueContext <?, Object > buildNewLocalExecutionContext (CascadingMetaData cascadingMetaData , ValueContext <?, ?> valueContext , Object value ) {
765765 BeanValueContext <?, Object > newValueContext ;
766766 Contracts .assertNotNull ( value , "value cannot be null" );
767- BeanMetaData <?> beanMetaData = beanMetaDataManager .getBeanMetaData ( value .getClass () );
768767 newValueContext = ValueContexts .getLocalExecutionContextForBean (
769768 validatorScopedContext .getParameterNameProvider (),
770769 value ,
771- beanMetaData ,
770+ cascadingMetaData . getBeanMetaDataForCascadable ( beanMetaDataManager , value ) ,
772771 valueContext .getPropertyPath ()
773772 );
774773 newValueContext .setCurrentValidatedValue ( value );
0 commit comments