From 5e3369d645636ecfa072a8c9e7d706f1de6c720b Mon Sep 17 00:00:00 2001 From: Lars Aaberg Date: Tue, 25 Aug 2026 21:30:31 +0200 Subject: [PATCH 1/2] #385 - added null check on SqlTimeConverter --- .../sql2o/converters/SqlTimeConverter.java | 5 +++ .../converters/SqlTimeConverterTest.java | 45 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 core/src/test/java/org/sql2o/converters/SqlTimeConverterTest.java diff --git a/core/src/main/java/org/sql2o/converters/SqlTimeConverter.java b/core/src/main/java/org/sql2o/converters/SqlTimeConverter.java index 887a519a..b7e6fdaf 100644 --- a/core/src/main/java/org/sql2o/converters/SqlTimeConverter.java +++ b/core/src/main/java/org/sql2o/converters/SqlTimeConverter.java @@ -3,6 +3,11 @@ public class SqlTimeConverter extends ConverterBase{ @Override public java.sql.Time convert(Object val) throws ConverterException { + + if (val == null) { + return null; + } + if (val instanceof java.sql.Time) { return (java.sql.Time) val; } diff --git a/core/src/test/java/org/sql2o/converters/SqlTimeConverterTest.java b/core/src/test/java/org/sql2o/converters/SqlTimeConverterTest.java new file mode 100644 index 00000000..e47d0b16 --- /dev/null +++ b/core/src/test/java/org/sql2o/converters/SqlTimeConverterTest.java @@ -0,0 +1,45 @@ +package org.sql2o.converters; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.time.OffsetTime; +import java.time.ZoneOffset; +import java.util.Date; +import java.util.stream.Stream; + +class SqlTimeConverterTest { + + @ParameterizedTest + @MethodSource("supportedValues") + void convert_supportedValues_returnsSqlTime(Object value, java.sql.Time expected) throws ConverterException { + final var converter = new SqlTimeConverter(); + + assertEquals(expected, converter.convert(value)); + } + + private static Stream supportedValues() { + final var expected = java.sql.Time.valueOf("01:02:03"); + return Stream.of( + Arguments.of(null, null), + Arguments.of(expected, expected), + Arguments.of(new Date(expected.getTime()), expected), + Arguments.of(OffsetTime.of(1, 2, 3, 0, ZoneOffset.UTC), expected), + Arguments.of(expected.getTime(), expected), + Arguments.of("01:02:03", expected) + ); + } + + @Test + void convert_unsupportedValue_throwsConverterException() { + final var converter = new SqlTimeConverter(); + + assertThrows(ConverterException.class, () -> converter.convert(new Object())); + } +} From 9ad7f8a09f311650bb9a9fdff80f9c819ffe4f37 Mon Sep 17 00:00:00 2001 From: Lars Aaberg Date: Tue, 25 Aug 2026 21:41:13 +0200 Subject: [PATCH 2/2] Removed unused import --- .../src/test/java/org/sql2o/converters/SqlTimeConverterTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/core/src/test/java/org/sql2o/converters/SqlTimeConverterTest.java b/core/src/test/java/org/sql2o/converters/SqlTimeConverterTest.java index e47d0b16..7470a5f2 100644 --- a/core/src/test/java/org/sql2o/converters/SqlTimeConverterTest.java +++ b/core/src/test/java/org/sql2o/converters/SqlTimeConverterTest.java @@ -5,7 +5,6 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows;