Skip to content

Commit

Permalink
GH-423 Lazy load jakarta validator (#423)
Browse files Browse the repository at this point in the history
  • Loading branch information
Rollczi authored Sep 8, 2024
1 parent a61e9c2 commit c20b5c0
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public void handle(Invocation<SENDER> invocation, JakartaRawResult result, Resul
}

private String getInterpolatedMessage(ConstraintViolation<Object> violation, Locale locale) {
return settings.validatorFactory.getMessageInterpolator().interpolate(
return settings.getOrCreateValidatorFactory().getMessageInterpolator().interpolate(
violation.getMessageTemplate(), new JakartaConstraintViolationContext(violation), locale);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,13 @@
import jakarta.validation.ValidatorFactory;

import java.lang.annotation.Annotation;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.function.Function;

public class JakartaSettings<SENDER> {

Function<Invocation<SENDER>, Locale> localeProvider = ignored -> Locale.getDefault();
ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
private ValidatorFactory validatorFactory;

private InvokedMessage<SENDER, ?, JakartaViolation<?, ?>> defaultViolationMessage =
(invocation, violation) -> String.format("%s - %s", violation.getFormattedParameterName(), violation.getMessage());
Expand All @@ -33,6 +31,14 @@ public JakartaSettings<SENDER> validatorFactory(ValidatorFactory validatorFactor
return this;
}

ValidatorFactory getOrCreateValidatorFactory() {
if (validatorFactory == null) {
validatorFactory = Validation.buildDefaultValidatorFactory();
}

return validatorFactory;
}

/**
* It is not recommended to use this method. Use {@link #violationMessage(Class, InvokedMessage)} instead.
* If you want to join all violations into one message, then implement your ResultHandler for JakartaRawResult type.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public void extend(LiteCommandsBuilder<SENDER, ?, ?> builder, LiteCommandsIntern
builder
.result(JakartaRawResult.class, new JakartaRawResultHandler<>(settings, internal.getSchematicGenerator()))
.annotations(configuration -> configuration
.methodValidator(new JakartaMethodValidator<>(settings.validatorFactory.getValidator())));
.methodValidator(new JakartaMethodValidator<>(settings.getOrCreateValidatorFactory().getValidator())));
}

}

0 comments on commit c20b5c0

Please sign in to comment.