Skip to content

Commit c5fdd19

Browse files
marko-bekhtagsmet
authored andcommitted
HV-1526 Move creation of ConstraintValidatorContextImpl into ValidationContext
- As we want to encapsulate the ValidationContext specifics and for example not expose the getParameterNames() method, ConstraintValidatorContextImpl can be created inside the context and returned from it. - This also allows to remove unnecessarily exposed getters of clock provider and constraint validator payload
1 parent 1dd038f commit c5fdd19

File tree

3 files changed

+21
-27
lines changed

3 files changed

+21
-27
lines changed

engine/src/main/java/org/hibernate/validator/internal/engine/ValidationContext.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,15 @@
3232

3333
import org.hibernate.validator.constraintvalidation.HibernateConstraintValidatorInitializationContext;
3434
import org.hibernate.validator.internal.engine.ValidatorFactoryImpl.ValidatorFactoryScopedContext;
35+
import org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorContextImpl;
3536
import org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager;
3637
import org.hibernate.validator.internal.engine.constraintvalidation.ConstraintViolationCreationContext;
3738
import org.hibernate.validator.internal.engine.path.PathImpl;
3839
import org.hibernate.validator.internal.metadata.BeanMetaDataManager;
3940
import org.hibernate.validator.internal.metadata.aggregated.BeanMetaData;
4041
import org.hibernate.validator.internal.metadata.aggregated.ExecutableMetaData;
4142
import org.hibernate.validator.internal.metadata.core.MetaConstraint;
43+
import org.hibernate.validator.internal.metadata.descriptor.ConstraintDescriptorImpl;
4244
import org.hibernate.validator.internal.metadata.facets.Validatable;
4345
import org.hibernate.validator.internal.util.ExecutableParameterNameProvider;
4446
import org.hibernate.validator.internal.util.logging.Log;
@@ -258,14 +260,6 @@ public List<String> getParameterNames() {
258260
return validatorScopedContext.getParameterNameProvider().getParameterNames( executable );
259261
}
260262

261-
public ClockProvider getClockProvider() {
262-
return validatorScopedContext.getClockProvider();
263-
}
264-
265-
public Object getConstraintValidatorPayload() {
266-
return validatorScopedContext.getConstraintValidatorPayload();
267-
}
268-
269263
public HibernateConstraintValidatorInitializationContext getConstraintValidatorInitializationContext() {
270264
return constraintValidatorInitializationContext;
271265
}
@@ -402,6 +396,16 @@ public void setValidatedProperty(String validatedProperty) {
402396
this.validatedProperty = validatedProperty;
403397
}
404398

399+
public ConstraintValidatorContextImpl createConstraintValidatorContextFor(ConstraintDescriptorImpl<?> constraintDescriptor, PathImpl path) {
400+
return new ConstraintValidatorContextImpl(
401+
getParameterNames(),
402+
validatorScopedContext.getClockProvider(),
403+
path,
404+
constraintDescriptor,
405+
validatorScopedContext.getConstraintValidatorPayload()
406+
);
407+
}
408+
405409
@Override
406410
public String toString() {
407411
final StringBuilder sb = new StringBuilder();

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

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,8 @@ protected <T> void validateConstraints(ValidationContext<T> validationContext,
8888
ConstraintValidator<B, ?> validator = getInitializedConstraintValidator( validationContext, valueContext );
8989

9090
// create a constraint validator context
91-
ConstraintValidatorContextImpl constraintValidatorContext = new ConstraintValidatorContextImpl(
92-
validationContext.getParameterNames(),
93-
validationContext.getClockProvider(),
94-
valueContext.getPropertyPath(),
95-
descriptor,
96-
validationContext.getConstraintValidatorPayload()
91+
ConstraintValidatorContextImpl constraintValidatorContext = validationContext.createConstraintValidatorContextFor(
92+
descriptor, valueContext.getPropertyPath()
9793
);
9894

9995
// validate
@@ -170,13 +166,11 @@ private <T> void prepareFinalConstraintViolations(ValidationContext<T> validatio
170166
// If not we create a violation
171167
// using the error message in the annotation declaration at top level.
172168
if ( !localConstraintValidatorContext.isPresent() ) {
173-
violatedConstraintValidatorContexts.add( new ConstraintValidatorContextImpl(
174-
validationContext.getParameterNames(),
175-
validationContext.getClockProvider(),
176-
valueContext.getPropertyPath(),
177-
descriptor,
178-
validationContext.getConstraintValidatorPayload()
179-
) );
169+
violatedConstraintValidatorContexts.add(
170+
validationContext.createConstraintValidatorContextFor(
171+
descriptor, valueContext.getPropertyPath()
172+
)
173+
);
180174
}
181175
}
182176

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,8 @@ protected <T> void validateConstraints(ValidationContext<T> validationContext,
5454
ConstraintValidator<B, ?> validator = getInitializedConstraintValidator( validationContext, valueContext );
5555

5656
// create a constraint validator context
57-
ConstraintValidatorContextImpl constraintValidatorContext = new ConstraintValidatorContextImpl(
58-
validationContext.getParameterNames(),
59-
validationContext.getClockProvider(),
60-
valueContext.getPropertyPath(),
61-
descriptor,
62-
validationContext.getConstraintValidatorPayload()
57+
ConstraintValidatorContextImpl constraintValidatorContext = validationContext.createConstraintValidatorContextFor(
58+
descriptor, valueContext.getPropertyPath()
6359
);
6460

6561
// validate

0 commit comments

Comments
 (0)