From 992e03f1c81b2867e86c5cfa338f863131eecf92 Mon Sep 17 00:00:00 2001 From: Josiah Noel <32279667+SentryMan@users.noreply.github.com> Date: Mon, 28 Apr 2025 21:19:45 -0400 Subject: [PATCH] Fix Clock being null --- .../main/java/example/avaje/clock/Clocky.java | 9 +++++ .../java/example/avaje/clock/ClockTest.java | 40 +++++++++++++++++++ .../io/avaje/validation/core/DValidator.java | 2 +- 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 blackbox-test/src/main/java/example/avaje/clock/Clocky.java create mode 100644 blackbox-test/src/test/java/example/avaje/clock/ClockTest.java diff --git a/blackbox-test/src/main/java/example/avaje/clock/Clocky.java b/blackbox-test/src/main/java/example/avaje/clock/Clocky.java new file mode 100644 index 00000000..d00d2111 --- /dev/null +++ b/blackbox-test/src/main/java/example/avaje/clock/Clocky.java @@ -0,0 +1,9 @@ +package example.avaje.clock; + +import java.time.LocalDate; + +import io.avaje.validation.constraints.Future; +import io.avaje.validation.constraints.Valid; + +@Valid +public record Clocky(@Future LocalDate startDate) {} diff --git a/blackbox-test/src/test/java/example/avaje/clock/ClockTest.java b/blackbox-test/src/test/java/example/avaje/clock/ClockTest.java new file mode 100644 index 00000000..244f5a4e --- /dev/null +++ b/blackbox-test/src/test/java/example/avaje/clock/ClockTest.java @@ -0,0 +1,40 @@ +package example.avaje.clock; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.fail; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import org.junit.jupiter.api.Test; + +import io.avaje.validation.ConstraintViolation; +import io.avaje.validation.ConstraintViolationException; +import io.avaje.validation.Validator; + +class ClockTest { + + Validator validator = Validator.builder().build(); + + @Test + void valid() { + var ship = new Clocky(LocalDate.MIN); + assertThat(violations(ship)).hasSize(1); + } + + List violations(Object any) { + return violations(any, Locale.ENGLISH); + } + + List violations(Object any, Locale locale) { + try { + validator.validate(any, locale); + fail("not expected"); + return null; + } catch (ConstraintViolationException e) { + return new ArrayList<>(e.violations()); + } + } +} diff --git a/validator/src/main/java/io/avaje/validation/core/DValidator.java b/validator/src/main/java/io/avaje/validation/core/DValidator.java index 2f4bc5cf..cb4bec70 100644 --- a/validator/src/main/java/io/avaje/validation/core/DValidator.java +++ b/validator/src/main/java/io/avaje/validation/core/DValidator.java @@ -180,8 +180,8 @@ String interpolate(Message msg, Locale requestLocale) { /** Implementation of Validator.Builder. */ static final class DBuilder implements Validator.Builder { - private static final Validator DEFAULT = Validator.builder().build(); private static final Supplier DEFAULT_CLOCK = Clock::systemDefaultZone; + private static final Validator DEFAULT = Validator.builder().build(); private final List factories = new ArrayList<>(); private final List afactories = new ArrayList<>();