@@ -621,7 +621,7 @@ private void validateCascadedAnnotatedObjectForCurrentGroup(Object value, BaseBe
621
621
// already and need only to pass the current element
622
622
ValidationOrder validationOrder = validationOrderGenerator .getValidationOrder ( currentGroup , currentGroup != originalGroup );
623
623
624
- BeanValueContext <?, Object > cascadedValueContext = buildNewLocalExecutionContext ( valueContext , value );
624
+ BeanValueContext <?, Object > cascadedValueContext = buildNewLocalExecutionContext ( cascadingMetaData , valueContext , value );
625
625
626
626
validateInContext ( validationContext , cascadedValueContext , validationOrder );
627
627
}
@@ -699,7 +699,7 @@ private void doValidate(Object value, String nodeName) {
699
699
// already and need only to pass the current element
700
700
ValidationOrder validationOrder = validationOrderGenerator .getValidationOrder ( currentGroup , currentGroup != originalGroup );
701
701
702
- BeanValueContext <?, Object > cascadedValueContext = buildNewLocalExecutionContext ( valueContext , value );
702
+ BeanValueContext <?, Object > cascadedValueContext = buildNewLocalExecutionContext ( cascadingMetaData , valueContext , value );
703
703
704
704
if ( cascadingMetaData .getDeclaredContainerClass () != null ) {
705
705
cascadedValueContext .setTypeParameter ( cascadingMetaData .getDeclaredContainerClass (), cascadingMetaData .getDeclaredTypeParameterIndex () );
@@ -712,7 +712,7 @@ private void doValidate(Object value, String nodeName) {
712
712
713
713
// Cascade validation to container elements if we are dealing with a container element
714
714
if ( cascadingMetaData .hasContainerElementsMarkedForCascading () ) {
715
- ValueContext <?, Object > cascadedTypeArgumentValueContext = buildNewLocalExecutionContext ( valueContext , value );
715
+ ValueContext <?, Object > cascadedTypeArgumentValueContext = buildNewLocalExecutionContext ( cascadingMetaData , valueContext , value );
716
716
if ( cascadingMetaData .getTypeParameter () != null ) {
717
717
cascadedValueContext .setTypeParameter ( cascadingMetaData .getDeclaredContainerClass (), cascadingMetaData .getDeclaredTypeParameterIndex () );
718
718
}
@@ -761,14 +761,13 @@ private void validateCascadedContainerElementsInContext(Object value, BaseBeanVa
761
761
}
762
762
}
763
763
764
- private BeanValueContext <?, Object > buildNewLocalExecutionContext (ValueContext <?, ?> valueContext , Object value ) {
764
+ private BeanValueContext <?, Object > buildNewLocalExecutionContext (CascadingMetaData cascadingMetaData , ValueContext <?, ?> valueContext , Object value ) {
765
765
BeanValueContext <?, Object > newValueContext ;
766
766
Contracts .assertNotNull ( value , "value cannot be null" );
767
- BeanMetaData <?> beanMetaData = beanMetaDataManager .getBeanMetaData ( value .getClass () );
768
767
newValueContext = ValueContexts .getLocalExecutionContextForBean (
769
768
validatorScopedContext .getParameterNameProvider (),
770
769
value ,
771
- beanMetaData ,
770
+ cascadingMetaData . getBeanMetaDataForCascadable ( beanMetaDataManager , value ) ,
772
771
valueContext .getPropertyPath ()
773
772
);
774
773
newValueContext .setCurrentValidatedValue ( value );
0 commit comments