 
                        
        
                        
        javax.validation.metadata.ExecutableDescriptor Maven / Gradle / Ivy
/*
 * Jakarta Bean Validation API
 *
 * License: Apache License, Version 2.0
 * See the license.txt file in the root directory or .
 */
package javax.validation.metadata;
import javax.validation.Valid;
import java.util.List;
import java.util.Set;
/**
 * Provides the common functionality of {@link MethodDescriptor} and
 * {@link ConstructorDescriptor}.
 *
 * @author Gunnar Morling
 *
 * @since 1.1
 */
public interface ExecutableDescriptor extends ElementDescriptor {
	/**
	 * Returns the method name in case this descriptor represents a method or
	 * the non-qualified name of the declaring class in case this descriptor
	 * represents a constructor.
	 *
	 * @return the name of the executable represented by this descriptor
	 */
	String getName();
	/**
	 * Returns a list of descriptors representing this executable's
	 * parameters, in the order of their declaration, including synthetic
	 * parameters.
	 *
	 * @return a list of descriptors representing this executable's
	 *         parameters; an empty list will be returned if this executable has
	 *         no parameters, but never {@code null}
	 */
	List getParameterDescriptors();
	/**
	 * Returns a descriptor containing the cross-parameter constraints
	 * of this executable.
	 *
	 * @return a descriptor containing the cross-parameter constraints of
	 *         this executable
	 */
	CrossParameterDescriptor getCrossParameterDescriptor();
	/**
	 * Returns a descriptor for this executable's return value.
	 * 
	 * An executable without return value will return a descriptor
	 * representing {@code void}. This descriptor will have no constraint
	 * associated.
	 *
	 * @return a descriptor for this executable's return value
	 */
	ReturnValueDescriptor getReturnValueDescriptor();
	/**
	 * Returns {@code true} if the executable parameters are constrained either:
	 * 
	 *     - because of a constraint on at least one of the parameters*
- because of a cascade on at least one of the parameters (via
	 *     {@link Valid})*
- because of at least one cross-parameter constraint*
*
	 * Also returns {@code false} if there is no parameter.
	 *
	 * @return {@code true} if the executable parameters are constrained
	 */
	boolean hasConstrainedParameters();
	/**
	 * Returns {@code true} if the executable return value is constrained
	 * either:
	 * 
	 *     - because of a constraint on the return value*
- because validation is cascaded on the return value (via
	 *     {@link Valid})*
*
	 * Also returns {@code false} if there is no return value.
	 *
	 * @return {@code true} if the executable return value is constrained
	 */
	boolean hasConstrainedReturnValue();
	/**
	 * Returns {@code false}.
	 * 
	 * An executable per se does not host constraints, use
	 * {@link #getParameterDescriptors()}, {@link #getCrossParameterDescriptor()}
	 * and {@link #getReturnValueDescriptor()} to discover constraints.
	 *
	 * @return {@code false}
	 */
	@Override
	boolean hasConstraints();
	/**
	 * Returns an empty {@code Set}.
	 * 
	 * An executable per se does not host constraints, use
	 * {@link #getParameterDescriptors()}, {@link #getCrossParameterDescriptor()}
	 * and {@link #getReturnValueDescriptor()} to discover constraints.
	 *
	 * @return an empty {@code Set}
	 */
	@Override
	Set> getConstraintDescriptors();
	/**
	 * Returns a finder that will always return an empty {@code Set}.
	 * 
	 * An executable per se does not host constraints, use
	 * {@link #getParameterDescriptors()}, {@link #getCrossParameterDescriptor()}
	 * and {@link #getReturnValueDescriptor()} to discover constraints.
	 *
	 * @return {@code ConstraintFinder} object
	 */
	@Override
	ConstraintFinder findConstraints();
}