org.hibernate.validator.internal.metadata.facets.Cascadable Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bean-validator Show documentation
Show all versions of bean-validator Show documentation
JSR 380's RI, Hibernate Validator version ${hibernate-validator.version} and its dependencies repackaged as OSGi bundle
/*
* Hibernate Validator, declare and validate application constraints
*
* License: Apache License, Version 2.0
* See the license.txt file in the root directory or .
*/
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
*/
public interface 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.
*
* @return This cascadable type.
*/
Type getCascadableType();
/**
* Returns the value of this cacadable from the given parent.
*/
Object getValue(Object parent);
/**
* 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.
*/
CascadingMetaData getCascadingMetaData();
public interface Builder {
void mergeCascadingMetaData(CascadingMetaDataBuilder cascadingMetaDataBuilder);
Cascadable build();
}
}