private void validateCascadedContainerElementsForCurrentGroup(Object value, ValidationContext<?> validationContext, ValueContext<?, ?> valueContext,
List<ContainerCascadingMetaData> containerElementTypesCascadingMetaData) {
for ( ContainerCascadingMetaData cascadingMetaData : containerElementTypesCascadingMetaData ) {
if ( !cascadingMetaData.isMarkedForCascadingOnAnnotatedObjectOrContainerElements() ) {
continue;
}
ValueExtractorDescriptor extractor = valueExtractorManager.getMaximallySpecificAndRuntimeContainerElementCompliantValueExtractor(
cascadingMetaData.getEnclosingType(),
cascadingMetaData.getTypeParameter(),
value.getClass(),
cascadingMetaData.getValueExtractorCandidates()
);
if ( extractor == null ) {
throw LOG.getNoValueExtractorFoundForTypeException( cascadingMetaData.getEnclosingType(), cascadingMetaData.getTypeParameter(), value.getClass() );
}
CascadingValueReceiver receiver = new CascadingValueReceiver( validationContext, valueContext, cascadingMetaData );
ValueExtractorHelper.extractValues( extractor, value, receiver );
}
}