|
54 | 54 | import org.hibernate.validator.internal.metadata.aggregated.CascadingMetaData;
|
55 | 55 | import org.hibernate.validator.internal.metadata.aggregated.ContainerCascadingMetaData;
|
56 | 56 | import org.hibernate.validator.internal.metadata.aggregated.ExecutableMetaData;
|
57 |
| -import org.hibernate.validator.internal.metadata.aggregated.NonContainerCascadingMetaData; |
58 | 57 | import org.hibernate.validator.internal.metadata.aggregated.ParameterMetaData;
|
59 | 58 | import org.hibernate.validator.internal.metadata.aggregated.PropertyMetaData;
|
60 | 59 | import org.hibernate.validator.internal.metadata.aggregated.ReturnValueMetaData;
|
@@ -581,28 +580,15 @@ private void validateCascadedConstraints(ValidationContext<?> validationContext,
|
581 | 580 | CascadingMetaData cascadingMetaData = cascadable.getCascadingMetaData();
|
582 | 581 |
|
583 | 582 | if ( value != null ) {
|
| 583 | + CascadingMetaData effectiveCascadingMetaData = cascadingMetaData.addRuntimeLegacyCollectionSupport( value.getClass() ); |
| 584 | + |
584 | 585 | // validate cascading on the annotated object
|
585 |
| - if ( cascadingMetaData.isCascading() ) { |
586 |
| - validateCascadedAnnotatedObjectForCurrentGroup( value, validationContext, valueContext, cascadingMetaData ); |
587 |
| - |
588 |
| - if ( !cascadingMetaData.isContainer() ) { |
589 |
| - // We might be in the case where the legacy @Valid support for collections and arrays has been used on a type for which |
590 |
| - // it cannot be detected at bootstrap time: thus we need to check with the runtime type. |
591 |
| - // Note that if it has been detected at bootstrap time, the cascading metadata has been modified to include it |
592 |
| - // and we are then in the container case. |
593 |
| - NonContainerCascadingMetaData nonContainerCascadingMetaData = cascadingMetaData.as( NonContainerCascadingMetaData.class ); |
594 |
| - ContainerCascadingMetaData legacyContainerCascadingMetaData = nonContainerCascadingMetaData |
595 |
| - .getLegacyContainerCascadingMetaData( value.getClass() ); |
596 |
| - |
597 |
| - if ( legacyContainerCascadingMetaData != null ) { |
598 |
| - validateCascadedContainerElementsForCurrentGroup( value, validationContext, valueContext, |
599 |
| - Collections.singletonList( legacyContainerCascadingMetaData ) ); |
600 |
| - } |
601 |
| - } |
| 586 | + if ( effectiveCascadingMetaData.isCascading() ) { |
| 587 | + validateCascadedAnnotatedObjectForCurrentGroup( value, validationContext, valueContext, effectiveCascadingMetaData ); |
602 | 588 | }
|
603 | 589 |
|
604 |
| - if ( cascadingMetaData.isContainer() ) { |
605 |
| - ContainerCascadingMetaData containerCascadingMetaData = cascadingMetaData.as( ContainerCascadingMetaData.class ); |
| 590 | + if ( effectiveCascadingMetaData.isContainer() ) { |
| 591 | + ContainerCascadingMetaData containerCascadingMetaData = effectiveCascadingMetaData.as( ContainerCascadingMetaData.class ); |
606 | 592 |
|
607 | 593 | if ( containerCascadingMetaData.hasContainerElementsMarkedForCascading() ) {
|
608 | 594 | // validate cascading on the container elements
|
|
0 commit comments