private ValueContext<?, Object> buildNewLocalExecutionContext(ValueContext<?, Object> valueContext, Object value) { ValueContext<?, Object> newValueContext; if ( value != null ) { newValueContext = ValueContext.getLocalExecutionContext( value, beanMetaDataManager.getBeanMetaData( value.getClass() ), valueContext.getPropertyPath() ); } else { newValueContext = ValueContext.getLocalExecutionContext( valueContext.getCurrentBeanType(), beanMetaDataManager.getBeanMetaData( valueContext.getCurrentBeanType() ), valueContext.getPropertyPath() ); } return newValueContext; }
private <T> void assertDefaultGroupSequenceIsExpandable(ValueContext<T, ?> valueContext, ValidationOrder validationOrder) { BeanMetaData<T> beanMetaData = beanMetaDataManager.getBeanMetaData( valueContext.getCurrentBeanType() ); if ( beanMetaData.defaultGroupSequenceIsRedefined() ) { validationOrder.assertDefaultGroupSequenceIsExpandable( beanMetaData.getDefaultGroupSequence( valueContext.getCurrentBean() ) ); } }
private void validateConstraintsForNonDefaultGroup(ValidationContext<?> validationContext, ValueContext<?, Object> valueContext) { BeanMetaData<?> beanMetaData = beanMetaDataManager.getBeanMetaData( valueContext.getCurrentBeanType() ); PathImpl currentPath = valueContext.getPropertyPath(); for ( MetaConstraint<?> metaConstraint : beanMetaData.getMetaConstraints() ) { validateConstraint( validationContext, valueContext, false, metaConstraint ); if ( shouldFailFast( validationContext ) ) { return; } // reset the path to the state before this call valueContext.setPropertyPath( currentPath ); } validationContext.markCurrentBeanAsProcessed( valueContext ); }
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 boolean validatePropertyTypeConstraint(ValidationContext<?> validationContext, ValueContext<?, Object> valueContext, boolean propertyPathComplete, MetaConstraint<?> metaConstraint) { boolean validationSuccessful; PropertyMetaData propertyMetaData = beanMetaDataManager.getBeanMetaData( valueContext.getCurrentBeanType() ) .getMetaDataFor( metaConstraint.getLocation().getPropertyName() ); if ( !propertyPathComplete ) { valueContext.appendNode( propertyMetaData ); } valueContext.setUnwrapMode( UnwrapMode.UNWRAP ); validationSuccessful = validateMetaConstraint( validationContext, valueContext, metaConstraint ); valueContext.setUnwrapMode( UnwrapMode.AUTOMATIC ); return validationSuccessful; }
List<MetaConstraint<?>> typeUseConstraints) { final int numberOfConstraintViolationsBefore = validationContext.getFailingConstraints().size(); final BeanMetaData<U> beanMetaData = beanMetaDataManager.getBeanMetaData( valueContext.getCurrentBeanType() ); final Map<Class<?>, Class<?>> validatedInterfaces = newHashMap();
private <U> void validateConstraintsForDefaultGroup(ValidationContext<?> validationContext, ValueContext<U, Object> valueContext) { final BeanMetaData<U> beanMetaData = beanMetaDataManager.getBeanMetaData( valueContext.getCurrentBeanType() ); final Map<Class<?>, Class<?>> validatedInterfaces = newHashMap();
BeanMetaData<?> beanMetaData = beanMetaDataManager.getBeanMetaData( valueContext.getCurrentBeanType() ); if ( beanMetaData.defaultGroupSequenceIsRedefined() ) { validationOrder.assertDefaultGroupSequenceIsExpandable( beanMetaData.getDefaultGroupSequence( null ) );
BeanMetaData<U> beanMetaData = beanMetaDataManager.getBeanMetaData( valueContext.getCurrentBeanType() ); if ( beanMetaData.defaultGroupSequenceIsRedefined() ) { validationOrder.assertDefaultGroupSequenceIsExpandable( beanMetaData.getDefaultGroupSequence( valueContext.getCurrentBean() ) );
private boolean validateConstraint(ValidationContext<?> validationContext, ValueContext<?, Object> valueContext, boolean propertyPathComplete, MetaConstraint<?> metaConstraint) { boolean validationSuccessful; if ( metaConstraint.getElementType() != ElementType.TYPE ) { PropertyMetaData propertyMetaData = beanMetaDataManager.getBeanMetaData( valueContext.getCurrentBeanType() ) .getMetaDataFor( metaConstraint.getLocation().getPropertyName() ); if ( !propertyPathComplete ) { valueContext.appendNode( propertyMetaData ); } if ( TYPE_USE.equals( metaConstraint.getElementType().name() ) ) { // TYPE_USE constraints always require UNWRAP valueContext.setUnwrapMode( UnwrapMode.UNWRAP ); } else { // set the unwrapping mode for this validation valueContext.setUnwrapMode( propertyMetaData.unwrapMode() ); } } else { valueContext.appendBeanNode(); } validationSuccessful = validateMetaConstraint( validationContext, valueContext, metaConstraint ); // reset the unwrapping mode valueContext.setUnwrapMode( UnwrapMode.AUTOMATIC ); return validationSuccessful; }