From 1efc9fe04e152ddea3eb25e4c56af3fd7e133be9 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Thu, 16 Oct 2025 16:35:27 +0200 Subject: [PATCH] Return early for Date to BsonDateTime conversion Add missing return statement to return value early instead of falling back to Codec based conversion. Closes: #5072 --- .../org/springframework/data/mongodb/util/BsonUtils.java | 4 ++-- .../data/mongodb/util/json/BsonUtilsTest.java | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/BsonUtils.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/BsonUtils.java index 7a70ac044..e1d55aed5 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/BsonUtils.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/BsonUtils.java @@ -332,7 +332,7 @@ public class BsonUtils { * @throws IllegalArgumentException if {@literal source} does not correspond to a {@link BsonValue} type. * @since 4.2 */ - @SuppressWarnings("unchecked") + @SuppressWarnings({ "unchecked", "rawtypes" }) public static BsonValue simpleToBsonValue(Object source, CodecRegistry codecRegistry) { if (source instanceof BsonValue bsonValue) { @@ -376,7 +376,7 @@ public class BsonUtils { } if (source instanceof Date date) { - new BsonDateTime(date.getTime()); + return new BsonDateTime(date.getTime()); } try { diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/util/json/BsonUtilsTest.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/util/json/BsonUtilsTest.java index 1dc7030e7..db8385ba9 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/util/json/BsonUtilsTest.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/util/json/BsonUtilsTest.java @@ -33,6 +33,7 @@ import java.util.Map.Entry; import java.util.stream.Stream; import org.bson.BsonArray; +import org.bson.BsonDateTime; import org.bson.BsonDouble; import org.bson.BsonInt32; import org.bson.BsonInt64; @@ -150,6 +151,13 @@ class BsonUtilsTest { .isEqualTo(new Document("value", source).toBsonDocument().get("value")); } + @Test // GH-5072 + void convertsJavaDateToBsonDateTime() { + + Date source = new Date(); + assertThat(BsonUtils.simpleToBsonValue(source)).isEqualTo(new BsonDateTime(source.getTime())); + } + @ParameterizedTest // GH-4432 @MethodSource("collectionLikeInstances") void convertsCollectionLikeToBsonArray(Object source) {