/* * 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.cfg.context; import org.hibernate.validator.cfg.ConstraintDef; import org.hibernate.validator.cfg.context.ConstructorConstraintMappingContext; import org.hibernate.validator.cfg.context.ContainerElementConstraintMappingContext; import org.hibernate.validator.cfg.context.CrossParameterConstraintMappingContext; import org.hibernate.validator.cfg.context.MethodConstraintMappingContext; import org.hibernate.validator.cfg.context.ParameterConstraintMappingContext; import org.hibernate.validator.cfg.context.ReturnValueConstraintMappingContext; import org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl.ConstraintType; import org.hibernate.validator.internal.metadata.location.ConstraintLocation; import org.hibernate.validator.internal.util.ReflectionHelper; /** * Constraint mapping creational context which allows to configure the constraints for one method return value. * * @author Hardy Ferentschik * @author Gunnar Morling * @author Kevin Pollet <kevin.pollet@serli.com> (C) 2011 SERLI */ final class ReturnValueConstraintMappingContextImpl extends CascadableConstraintMappingContextImplBase<ReturnValueConstraintMappingContext> implements ReturnValueConstraintMappingContext { private final ExecutableConstraintMappingContextImpl executableContext; ReturnValueConstraintMappingContextImpl(ExecutableConstraintMappingContextImpl executableContext) { super( executableContext.getTypeContext().getConstraintMapping(), ReflectionHelper.typeOf( executableContext.getExecutable() ) ); this.executableContext = executableContext; } @Override protected ReturnValueConstraintMappingContext getThis() { return this; } @Override public ReturnValueConstraintMappingContext constraint(ConstraintDef<?, ?> definition) { super.addConstraint( ConfiguredConstraint.forExecutable( definition, executableContext.getExecutable() ) ); return this; } @Override public ReturnValueConstraintMappingContext ignoreAnnotations(boolean ignoreAnnotations) { mapping.getAnnotationProcessingOptions().ignoreConstraintAnnotationsForReturnValue( executableContext.getExecutable(), ignoreAnnotations ); return this; } @Override public ParameterConstraintMappingContext parameter(int index) { return executableContext.parameter( index ); } @Override public CrossParameterConstraintMappingContext crossParameter() { return executableContext.crossParameter(); } @Override public MethodConstraintMappingContext method(String name, Class<?>... parameterTypes) { return executableContext.getTypeContext().method( name, parameterTypes ); } @Override public ConstructorConstraintMappingContext constructor(Class<?>... parameterTypes) { return executableContext.getTypeContext().constructor( parameterTypes ); } @Override public ContainerElementConstraintMappingContext containerElementType() { return super.containerElement( this, executableContext.getTypeContext(), ConstraintLocation.forReturnValue( executableContext.getExecutable() ) ); } @Override public ContainerElementConstraintMappingContext containerElementType(int index, int... nestedIndexes) { return super.containerElement( this, executableContext.getTypeContext(), ConstraintLocation.forReturnValue( executableContext.getExecutable() ), index, nestedIndexes ); } @Override protected ConstraintType getConstraintType() { return ConstraintType.GENERIC; } }