/*
* Hibernate Validator, declare and validate application constraints
*
* License: Apache License, Version 2.0
* See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
*/
package org.hibernate.validator.internal.metadata.facets;
import java.lang.annotation.ElementType;
import java.lang.reflect.Type;
import org.hibernate.validator.internal.engine.path.PathImpl;
import org.hibernate.validator.internal.metadata.aggregated.CascadingMetaData;
import org.hibernate.validator.internal.metadata.aggregated.CascadingMetaDataBuilder;
Provides a unified view on cascadable elements of all kinds, be it properties
of a Java bean, the arguments passed to an executable or the value returned
from an executable. Allows a unified handling of these elements in the
validation routine.
Author: Gunnar Morling
/**
* Provides a unified view on cascadable elements of all kinds, be it properties
* of a Java bean, the arguments passed to an executable or the value returned
* from an executable. Allows a unified handling of these elements in the
* validation routine.
*
* @author Gunnar Morling
*/
public interface Cascadable {
Returns the element type of the cascadable.
Returns: Returns the element type of the cascadable.
/**
* Returns the element type of the cascadable.
*
* @return Returns the element type of the cascadable.
*/
ElementType getElementType();
Returns the data type of this cascadable, e.g. the type of a bean property or the
return type of a method.
Returns: This cascadable type.
/**
* Returns the data type of this cascadable, e.g. the type of a bean property or the
* return type of a method.
*
* @return This cascadable type.
*/
Type getCascadableType();
Returns the value of this cacadable from the given parent.
/**
* Returns the value of this cacadable from the given parent.
*/
Object getValue(Object parent);
Appends this cascadable element to the given path.
/**
* Appends this cascadable element to the given path.
*/
void appendTo(PathImpl path);
Returns cascading metadata of this cascadable element. Also contains the cascading metadata of the potential
container element types.
/**
* Returns cascading metadata of this cascadable element. Also contains the cascading metadata of the potential
* container element types.
*/
CascadingMetaData getCascadingMetaData();
public interface Builder {
void mergeCascadingMetaData(CascadingMetaDataBuilder cascadingMetaDataBuilder);
Cascadable build();
}
}