Skip to content

Commit 3b26aff

Browse files
mkurzgsmet
authored andcommitted
HV-1589 Caching of HibernateConstraintValidator is handled by ConstraintValidatorManager only
1 parent 36f7aa2 commit 3b26aff

File tree

1 file changed

+8
-1
lines changed
  • engine/src/main/java/org/hibernate/validator/internal/engine/constraintvalidation

1 file changed

+8
-1
lines changed

engine/src/main/java/org/hibernate/validator/internal/engine/constraintvalidation/ConstraintTree.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import javax.validation.ConstraintViolation;
2121
import javax.validation.ValidationException;
2222

23+
import org.hibernate.validator.constraintvalidation.HibernateConstraintValidator;
2324
import org.hibernate.validator.internal.engine.ValidationContext;
2425
import org.hibernate.validator.internal.engine.ValueContext;
2526
import org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl;
@@ -120,7 +121,13 @@ private ValidationException getExceptionForNullValidator(Type validatedValueType
120121
validator = constraintValidatorForDefaultConstraintValidatorFactory;
121122
if ( validator == null ) {
122123
validator = getInitializedConstraintValidator( validationContext );
123-
constraintValidatorForDefaultConstraintValidatorFactory = validator;
124+
125+
// HibernateConstraintValidator instances should not be cached within this constraint tree instance, only ConstraintValidatorManager
126+
// should handle their caching. That's because the HibernateConstraintValidatorInitializationContext influences their caching behaviour.
127+
// (HibernateConstraintValidatorInitializationContext could have changed during a ValidatorFactory lifetime - via usingContext())
128+
if ( !( validator instanceof HibernateConstraintValidator ) ) {
129+
constraintValidatorForDefaultConstraintValidatorFactory = validator;
130+
}
124131
}
125132
}
126133
}

0 commit comments

Comments
 (0)