private void validateTypeArgumentConstraints(ValidationContext<?> context, ValueContext<?, Object> valueContext, Object value, Set<MetaConstraint<?>> typeArgumentsConstraints) { valueContext.setCurrentValidatedValue( value ); valueContext.appendCollectionElementNode(); for ( MetaConstraint<?> metaConstraint : typeArgumentsConstraints ) { metaConstraint.validateConstraint( context, valueContext ); if ( shouldFailFast( context ) ) { return; } } }
private boolean validateMetaConstraint(ValidationContext<?> validationContext, ValueContext<?, Object> valueContext, MetaConstraint<?> metaConstraint) { if ( isValidationRequired( validationContext, valueContext, metaConstraint ) ) { if ( valueContext.getCurrentBean() != null ) { Object valueToValidate = getBeanMemberValue( valueContext.getCurrentBean(), metaConstraint.getLocation().getMember() ); valueContext.setCurrentValidatedValue( valueToValidate ); } return metaConstraint.validateConstraint( validationContext, valueContext ); } return true; }
private ValueContext<?, Object> buildNewLocalExecutionContext(ValueContext<?, ?> valueContext, Object value) { ValueContext<?, Object> newValueContext; if ( value != null ) { newValueContext = ValueContext.getLocalExecutionContext( validatorScopedContext.getParameterNameProvider(), value, beanMetaDataManager.getBeanMetaData( value.getClass() ), valueContext.getPropertyPath() ); newValueContext.setCurrentValidatedValue( value ); } else { newValueContext = ValueContext.getLocalExecutionContext( validatorScopedContext.getParameterNameProvider(), valueContext.getCurrentBeanType(), valueContext.getCurrentBeanMetaData(), valueContext.getPropertyPath() ); } return newValueContext; }
private <T> Set<ConstraintViolation<T>> validateValueInContext(ValidationContext<T> validationContext, Object value, PathImpl propertyPath, ValidationOrder validationOrder) { ValueContext<?, Object> valueContext = getValueContextForValueValidation( validationContext, propertyPath ); valueContext.setCurrentValidatedValue( value );
context, propertyPath, metaConstraints, typeArgumentConstraints ); valueContext.setCurrentValidatedValue( value );
private boolean validateMetaConstraint(ValidationContext<?> validationContext, ValueContext<?, Object> valueContext, Object parent, MetaConstraint<?> metaConstraint) { ValueContext.ValueState<Object> originalValueState = valueContext.getCurrentValueState(); valueContext.appendNode( metaConstraint.getLocation() ); boolean success = true; if ( isValidationRequired( validationContext, valueContext, metaConstraint ) ) { if ( parent != null ) { valueContext.setCurrentValidatedValue( valueContext.getValue( parent, metaConstraint.getLocation() ) ); } success = metaConstraint.validateConstraint( validationContext, valueContext ); validationContext.markConstraintProcessed( valueContext.getCurrentBean(), valueContext.getPropertyPath(), metaConstraint ); } // reset the value context to the state before this call valueContext.resetValueState( originalValueState ); return success; }
); valueContext.appendCrossParameterNode(); valueContext.setCurrentValidatedValue( parameterValues ); validationContext.getRootBean(), executableMetaData, currentValidatedGroup ); valueContext.setCurrentValidatedValue( parameterValues ); valueContext.setCurrentValidatedValue( value );
private <T> void validateReturnValueForSingleGroup(ValidationContext<T> validationContext, ExecutableMetaData executableMetaData, T bean, Object value, Class<?> oneGroup) { // validate constraints at return value itself ValueContext<?, Object> valueContext = getExecutableValueContext( executableMetaData.getKind() == ElementKind.CONSTRUCTOR ? value : bean, executableMetaData, oneGroup ); valueContext.setCurrentValidatedValue( value ); ReturnValueMetaData returnValueMetaData = executableMetaData.getReturnValueMetaData(); valueContext.appendNode( returnValueMetaData ); valueContext.setUnwrapMode( returnValueMetaData.unwrapMode() ); validateConstraintsForGroup( validationContext, valueContext, returnValueMetaData ); if ( shouldFailFast( validationContext ) ) { return; } if ( !returnValueMetaData.isCascading() ) { validateConstraintsForGroup( validationContext, valueContext, returnValueMetaData.getTypeArgumentsConstraints() ); if ( shouldFailFast( validationContext ) ) { return; } } }