Skip to content

Commit c004195

Browse files
marko-bekhtagsmet
authored andcommitted
HV-1526 Combine creation and addition of constraint violations in ValidationContext
As now we don't create violations unless we need them, these operations can be combined. Another benefit is that ValidationContext exposes less public methods.
1 parent 6d56faa commit c004195

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -294,15 +294,11 @@ public void markCurrentBeanAsProcessed(ValueContext<?, ?> valueContext) {
294294
markCurrentBeanAsProcessedForCurrentPath( valueContext.getCurrentBean(), valueContext.getPropertyPath() );
295295
}
296296

297-
public void addConstraintFailure(ConstraintViolation<T> failingConstraintViolation) {
298-
this.failingConstraintViolations.add( failingConstraintViolation );
299-
}
300-
301297
public Set<ConstraintViolation<T>> getFailingConstraints() {
302298
return failingConstraintViolations;
303299
}
304300

305-
public ConstraintViolation<T> createConstraintViolation(
301+
public void addConstraintFailure(
306302
ValueContext<?, ?> localContext,
307303
ConstraintViolationCreationContext constraintViolationCreationContext,
308304
ConstraintDescriptor<?> descriptor
@@ -318,10 +314,10 @@ public ConstraintViolation<T> createConstraintViolation(
318314
// at this point we make a copy of the path to avoid side effects
319315
Path path = PathImpl.createCopy( constraintViolationCreationContext.getPath() );
320316
Object dynamicPayload = constraintViolationCreationContext.getDynamicPayload();
321-
317+
ConstraintViolation<T> violation;
322318
switch ( validationOperation ) {
323319
case PARAMETER_VALIDATION:
324-
return ConstraintViolationImpl.forParameterValidation(
320+
violation = ConstraintViolationImpl.forParameterValidation(
325321
messageTemplate,
326322
constraintViolationCreationContext.getMessageParameters(),
327323
constraintViolationCreationContext.getExpressionVariables(),
@@ -336,8 +332,9 @@ public ConstraintViolation<T> createConstraintViolation(
336332
executableParameters,
337333
dynamicPayload
338334
);
335+
break;
339336
case RETURN_VALUE_VALIDATION:
340-
return ConstraintViolationImpl.forReturnValueValidation(
337+
violation = ConstraintViolationImpl.forReturnValueValidation(
341338
messageTemplate,
342339
constraintViolationCreationContext.getMessageParameters(),
343340
constraintViolationCreationContext.getExpressionVariables(),
@@ -352,8 +349,9 @@ public ConstraintViolation<T> createConstraintViolation(
352349
executableReturnValue,
353350
dynamicPayload
354351
);
352+
break;
355353
default:
356-
return ConstraintViolationImpl.forBeanValidation(
354+
violation = ConstraintViolationImpl.forBeanValidation(
357355
messageTemplate,
358356
constraintViolationCreationContext.getMessageParameters(),
359357
constraintViolationCreationContext.getExpressionVariables(),
@@ -368,6 +366,8 @@ public ConstraintViolation<T> createConstraintViolation(
368366
dynamicPayload
369367
);
370368
}
369+
370+
this.failingConstraintViolations.add( violation );
371371
}
372372

373373
public boolean hasMetaConstraintBeenProcessed(Object bean, Path path, MetaConstraint<?> metaConstraint) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public final <T> boolean validateConstraints(ValidationContext<T> validationCont
7575
for ( ConstraintValidatorContextImpl constraintValidatorContext : violatedConstraintValidatorContexts ) {
7676
for ( ConstraintViolationCreationContext constraintViolationCreationContext : constraintValidatorContext.getConstraintViolationCreationContexts() ) {
7777
validationContext.addConstraintFailure(
78-
validationContext.createConstraintViolation( valueContext, constraintViolationCreationContext, constraintValidatorContext.getConstraintDescriptor() )
78+
valueContext, constraintViolationCreationContext, constraintValidatorContext.getConstraintDescriptor()
7979
);
8080
}
8181
}

0 commit comments

Comments
 (0)