org.hibernate.validator.internal.constraintvalidators.hv.ScriptAssertValidator 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.constraintvalidators.hv;
import static org.hibernate.validator.internal.util.logging.Messages.MESSAGES;
import javax.validation.ConstraintValidatorContext;
import javax.validation.metadata.ConstraintDescriptor;
import org.hibernate.validator.constraints.ScriptAssert;
import org.hibernate.validator.constraintvalidation.HibernateConstraintValidatorContext;
import org.hibernate.validator.constraintvalidation.HibernateConstraintValidatorInitializationContext;
import org.hibernate.validator.internal.util.Contracts;
/**
* Validator for the {@link ScriptAssert} constraint annotation.
*
* @author Gunnar Morling
* @author Hardy Ferentschik
* @author Kevin Pollet <[email protected]> (C) 2011 SERLI
* @author Marko Bekhta
* @author Guillaume Smet
*/
public class ScriptAssertValidator extends AbstractScriptAssertValidator {
private String alias;
private String reportOn;
private String message;
@Override
public void initialize(ConstraintDescriptor constraintDescriptor, HibernateConstraintValidatorInitializationContext initializationContext) {
ScriptAssert constraintAnnotation = constraintDescriptor.getAnnotation();
validateParameters( constraintAnnotation );
initialize( constraintAnnotation.lang(), constraintAnnotation.script(), initializationContext );
this.alias = constraintAnnotation.alias();
this.reportOn = constraintAnnotation.reportOn();
this.message = constraintAnnotation.message();
}
@Override
public boolean isValid(Object value, ConstraintValidatorContext constraintValidatorContext) {
if ( constraintValidatorContext instanceof HibernateConstraintValidatorContext ) {
constraintValidatorContext.unwrap( HibernateConstraintValidatorContext.class ).addMessageParameter( "script", escapedScript );
}
boolean validationResult = scriptAssertContext.evaluateScriptAssertExpression( value, alias );
if ( !validationResult && !reportOn.isEmpty() ) {
constraintValidatorContext.disableDefaultConstraintViolation();
constraintValidatorContext.buildConstraintViolationWithTemplate( message ).addPropertyNode( reportOn ).addConstraintViolation();
}
return validationResult;
}
private void validateParameters(ScriptAssert constraintAnnotation) {
Contracts.assertNotEmpty( constraintAnnotation.script(), MESSAGES.parameterMustNotBeEmpty( "script" ) );
Contracts.assertNotEmpty( constraintAnnotation.lang(), MESSAGES.parameterMustNotBeEmpty( "lang" ) );
Contracts.assertNotEmpty( constraintAnnotation.alias(), MESSAGES.parameterMustNotBeEmpty( "alias" ) );
}
}