Top Description Fields Constructors Methods
org.hibernate.validator.internal.metadata.aggregated

public Class ContainerCascadingMetaData

extends Object
implements CascadingMetaData
Class Inheritance
All Implemented Interfaces
org.hibernate.validator.internal.metadata.aggregated.CascadingMetaData
Imports
java.lang.invoke.MethodHandles, java.lang.reflect.Type, .TypeVariable, java.util.Collections, .List, .Set, java.util.stream.Collectors, jakarta.validation.metadata.GroupConversionDescriptor, org.hibernate.validator.internal.engine.valueextraction.AnnotatedObject, .ValueExtractorDescriptor, .ValueExtractorManager, org.hibernate.validator.internal.util.CollectionHelper, .StringHelper, .TypeVariables, org.hibernate.validator.internal.util.logging.Log, .LoggerFactory, org.hibernate.validator.internal.util.stereotypes.Immutable

An aggregated view of the cascading validation metadata for containers. Note that it also includes the cascading validation metadata defined on the root element via the AnnotatedObject pseudo type parameter.
Author
Guillaume Smet

Field Summary

Modifier and TypeField and Description
private final boolean
cascading

If this type parameter is marked for cascading.

private final List<ContainerCascadingMetaData>
containerElementTypesCascadingMetaData

Possibly the cascading type parameters corresponding to this type parameter if it is a parameterized type.

private final Class<?>
declaredContainerClass

The declared container class: it is the one used in the node of the property path.

private final TypeVariable<?>
declaredTypeParameter

The declared type parameter: it is the one used in the node of the property path.

private final Integer
declaredTypeParameterIndex

Index of the declared type parameter: it is the one used in the node of the property path.

private final Type
enclosingType

The enclosing type that defines this type parameter.

private GroupConversionHelper
groupConversionHelper

The group conversions defined for this type parameter.

private final boolean
hasContainerElementsMarkedForCascading

Whether any container element (it can be nested) is marked for cascaded validation.

private static final Log
private final TypeVariable<?>
typeParameter

The type parameter.

private final Set<ValueExtractorDescriptor>
valueExtractorCandidates

The set of value extractors which are type compliant and container element compliant with the element where the cascaded validation was declared.

Constructor Summary

AccessConstructor and Description
private
ContainerCascadingMetaData(ValueExtractorManager valueExtractorManager, CascadingMetaDataBuilder cascadingMetaDataBuilder)

private
ContainerCascadingMetaData(ValueExtractorManager valueExtractorManager, Type enclosingType, TypeVariable<?> typeParameter, Class<?> declaredContainerClass, TypeVariable<?> declaredTypeParameter, List<ContainerCascadingMetaData> containerElementTypesCascadingMetaData, boolean cascading, GroupConversionHelper groupConversionHelper, boolean markedForCascadingOnContainerElements)

pack-priv
ContainerCascadingMetaData(Type enclosingType, List<ContainerCascadingMetaData> containerElementTypesCascadingMetaData, GroupConversionHelper groupConversionHelper, Set<ValueExtractorDescriptor> valueExtractorCandidates)

pack-priv
ContainerCascadingMetaData(Type enclosingType, TypeVariable<?> typeParameter, Class<?> declaredContainerClass, TypeVariable<?> declaredTypeParameter, GroupConversionHelper groupConversionHelper)

Method Summary

Modifier and TypeMethod and Description
public CascadingMetaData
addRuntimeContainerSupport(ValueExtractorManager valueExtractorManager, Class<?> valueClass)

Implements org.hibernate.validator.internal.metadata.aggregated.CascadingMetaData.addRuntimeContainerSupport.

Add additional cascading metadata when:
  • the element is marked with @Valid,
  • the runtime type of the element is container based (e.g. collections, maps or arrays),
  • and there are ValueExtractors present for such container,
  • and the declared type isn't container based.
public <T extends CascadingMetaData> T
public Class<?>
public List<ContainerCascadingMetaData>
public Class<?>
public TypeVariable<?>
public Integer
public Type
public Set<GroupConversionDescriptor>
public TypeVariable<?>
public Set<ValueExtractorDescriptor>
public boolean
public boolean
public boolean
public boolean
public static ContainerCascadingMetaData
of(ValueExtractorManager valueExtractorManager, CascadingMetaDataBuilder cascadingMetaDataBuilder, Object context)

public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAllwaitwaitwait

Field Detail

cascadingback to summary
private final boolean cascading

If this type parameter is marked for cascading.

containerElementTypesCascadingMetaDataback to summary
private final List<ContainerCascadingMetaData> containerElementTypesCascadingMetaData

Possibly the cascading type parameters corresponding to this type parameter if it is a parameterized type.

Annotations
@Immutable
declaredContainerClassback to summary
private final Class<?> declaredContainerClass

The declared container class: it is the one used in the node of the property path.

declaredTypeParameterback to summary
private final TypeVariable<?> declaredTypeParameter

The declared type parameter: it is the one used in the node of the property path.

declaredTypeParameterIndexback to summary
private final Integer declaredTypeParameterIndex

Index of the declared type parameter: it is the one used in the node of the property path. It is cached here for performance reasons.

enclosingTypeback to summary
private final Type enclosingType

The enclosing type that defines this type parameter.

groupConversionHelperback to summary
private GroupConversionHelper groupConversionHelper

The group conversions defined for this type parameter.

hasContainerElementsMarkedForCascadingback to summary
private final boolean hasContainerElementsMarkedForCascading

Whether any container element (it can be nested) is marked for cascaded validation.

LOGback to summary
private static final Log LOG
typeParameterback to summary
private final TypeVariable<?> typeParameter

The type parameter.

valueExtractorCandidatesback to summary
private final Set<ValueExtractorDescriptor> valueExtractorCandidates

The set of value extractors which are type compliant and container element compliant with the element where the cascaded validation was declared. The final value extractor is chosen among these ones, based on the runtime type.

Constructor Detail

ContainerCascadingMetaDataback to summary
private ContainerCascadingMetaData(ValueExtractorManager valueExtractorManager, CascadingMetaDataBuilder cascadingMetaDataBuilder)
ContainerCascadingMetaDataback to summary
private ContainerCascadingMetaData(ValueExtractorManager valueExtractorManager, Type enclosingType, TypeVariable<?> typeParameter, Class<?> declaredContainerClass, TypeVariable<?> declaredTypeParameter, List<ContainerCascadingMetaData> containerElementTypesCascadingMetaData, boolean cascading, GroupConversionHelper groupConversionHelper, boolean markedForCascadingOnContainerElements)
ContainerCascadingMetaDataback to summary
pack-priv ContainerCascadingMetaData(Type enclosingType, List<ContainerCascadingMetaData> containerElementTypesCascadingMetaData, GroupConversionHelper groupConversionHelper, Set<ValueExtractorDescriptor> valueExtractorCandidates)
ContainerCascadingMetaDataback to summary
pack-priv ContainerCascadingMetaData(Type enclosingType, TypeVariable<?> typeParameter, Class<?> declaredContainerClass, TypeVariable<?> declaredTypeParameter, GroupConversionHelper groupConversionHelper)

Method Detail

addRuntimeContainerSupportback to summary
public CascadingMetaData addRuntimeContainerSupport(ValueExtractorManager valueExtractorManager, Class<?> valueClass)

Implements org.hibernate.validator.internal.metadata.aggregated.CascadingMetaData.addRuntimeContainerSupport.

Doc from org.hibernate.validator.internal.metadata.aggregated.CascadingMetaData.addRuntimeContainerSupport.

Add additional cascading metadata when:

  • the element is marked with @Valid,
  • the runtime type of the element is container based (e.g. collections, maps or arrays),
  • and there are ValueExtractors present for such container,
  • and the declared type isn't container based.

An example of this particular situation is: @Valid private Object element = new ArrayList<String>().

Note that if the declared type is container based, the cascading information is directly included at bootstrap time.

Annotations
@Override
asback to summary
public <T extends CascadingMetaData> T as(Class<T> clazz)

Implements org.hibernate.validator.internal.metadata.aggregated.CascadingMetaData.as.

Annotations
@Override
@SuppressWarnings:unchecked
convertGroupback to summary
public Class<?> convertGroup(Class<?> originalGroup)

Implements org.hibernate.validator.internal.metadata.aggregated.CascadingMetaData.convertGroup.

Annotations
@Override
getContainerElementTypesCascadingMetaDataback to summary
public List<ContainerCascadingMetaData> getContainerElementTypesCascadingMetaData()
getDeclaredContainerClassback to summary
public Class<?> getDeclaredContainerClass()
getDeclaredTypeParameterback to summary
public TypeVariable<?> getDeclaredTypeParameter()
getDeclaredTypeParameterIndexback to summary
public Integer getDeclaredTypeParameterIndex()
getEnclosingTypeback to summary
public Type getEnclosingType()
getGroupConversionDescriptorsback to summary
public Set<GroupConversionDescriptor> getGroupConversionDescriptors()

Implements org.hibernate.validator.internal.metadata.aggregated.CascadingMetaData.getGroupConversionDescriptors.

Annotations
@Override
getTypeParameterback to summary
public TypeVariable<?> getTypeParameter()

Implements org.hibernate.validator.internal.metadata.aggregated.CascadingMetaData.getTypeParameter.

Annotations
@Override
getValueExtractorCandidatesback to summary
public Set<ValueExtractorDescriptor> getValueExtractorCandidates()
hasContainerElementsMarkedForCascadingback to summary
public boolean hasContainerElementsMarkedForCascading()
isCascadingback to summary
public boolean isCascading()

Implements org.hibernate.validator.internal.metadata.aggregated.CascadingMetaData.isCascading.

Annotations
@Override
isContainerback to summary
public boolean isContainer()

Implements org.hibernate.validator.internal.metadata.aggregated.CascadingMetaData.isContainer.

Annotations
@Override
isMarkedForCascadingOnAnnotatedObjectOrContainerElementsback to summary
public boolean isMarkedForCascadingOnAnnotatedObjectOrContainerElements()

Implements org.hibernate.validator.internal.metadata.aggregated.CascadingMetaData.isMarkedForCascadingOnAnnotatedObjectOrContainerElements.

Annotations
@Override
ofback to summary
public static ContainerCascadingMetaData of(ValueExtractorManager valueExtractorManager, CascadingMetaDataBuilder cascadingMetaDataBuilder, Object context)
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object.

Returns:String

a string representation of the object.

Annotations
@Override