From 7ab2428c646e4c2f4a5b91e3d9278f9e594f043e Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Mon, 4 Apr 2022 13:59:02 +0200 Subject: [PATCH] Make sure to initialize PropvertyValueConversions in Converter setup. Closes #4014 Original pull request: #4015. --- .../core/convert/MongoCustomConversions.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java index 02d91fa08..2e7f58a82 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java @@ -156,7 +156,8 @@ public class MongoCustomConversions extends org.springframework.data.convert.Cus private boolean useNativeDriverJavaTimeCodecs = false; private final List customConverters = new ArrayList<>(); - private PropertyValueConversions propertyValueConversions = new SimplePropertyValueConversions(); + private PropertyValueConversions propertyValueConversions = PropertyValueConversions.simple(it -> {}); + private PropertyValueConversions internallyCreatedValueConversion = propertyValueConversions; /** * Create a {@link MongoConverterConfigurationAdapter} using the provided {@code converters} and our own codecs for @@ -317,7 +318,7 @@ public class MongoCustomConversions extends org.springframework.data.convert.Cus PropertyValueConversions valueConversions() { if (this.propertyValueConversions == null) { - this.propertyValueConversions = new SimplePropertyValueConversions(); + this.propertyValueConversions = PropertyValueConversions.simple(it -> {}); } return this.propertyValueConversions; @@ -325,6 +326,10 @@ public class MongoCustomConversions extends org.springframework.data.convert.Cus ConverterConfiguration createConverterConfiguration() { + if(isLocallyCreatedPropertyValueConversion() && propertyValueConversions instanceof SimplePropertyValueConversions svc) { + svc.init(); + } + if (!useNativeDriverJavaTimeCodecs) { return new ConverterConfiguration(STORE_CONVERSIONS, this.customConverters, convertiblePair -> true, this.propertyValueConversions); @@ -381,5 +386,9 @@ public class MongoCustomConversions extends org.springframework.data.convert.Cus return DateToUtcLocalDateTimeConverter.INSTANCE.convert(source).toLocalDate(); } } + + private boolean isLocallyCreatedPropertyValueConversion() { + return propertyValueConversions == internallyCreatedValueConversion; + } } }