1
7 package org.hibernate.validator.internal.engine.constraintvalidation;
8
9 import java.lang.annotation.Annotation;
10 import java.lang.invoke.MethodHandles;
11 import java.lang.reflect.Type;
12 import java.util.Collection;
13
14 import javax.validation.ConstraintValidator;
15
16 import org.hibernate.validator.internal.engine.validationcontext.ValidationContext;
17 import org.hibernate.validator.internal.engine.valuecontext.ValueContext;
18 import org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl;
19 import org.hibernate.validator.internal.util.logging.Log;
20 import org.hibernate.validator.internal.util.logging.LoggerFactory;
21
22
32 class SimpleConstraintTree<B extends Annotation> extends ConstraintTree<B> {
33
34 private static final Log LOG = LoggerFactory.make( MethodHandles.lookup() );
35
36 public SimpleConstraintTree(ConstraintValidatorManager constraintValidatorManager, ConstraintDescriptorImpl<B> descriptor, Type validatedValueType) {
37 super( constraintValidatorManager, descriptor, validatedValueType );
38 }
39
40 @Override
41 protected void validateConstraints(ValidationContext<?> validationContext,
42 ValueContext<?, ?> valueContext,
43 Collection<ConstraintValidatorContextImpl> violatedConstraintValidatorContexts) {
44
45 if ( LOG.isTraceEnabled() ) {
46 LOG.tracef(
47 "Validating value %s against constraint defined by %s.",
48 valueContext.getCurrentValidatedValue(),
49 descriptor
50 );
51 }
52
53
54 ConstraintValidator<B, ?> validator = getInitializedConstraintValidator( validationContext, valueContext );
55
56
57 ConstraintValidatorContextImpl constraintValidatorContext = validationContext.createConstraintValidatorContextFor(
58 descriptor, valueContext.getPropertyPath()
59 );
60
61
62 if ( validateSingleConstraint( valueContext, constraintValidatorContext, validator ).isPresent() ) {
63 violatedConstraintValidatorContexts.add( constraintValidatorContext );
64 }
65 }
66 }
67