diff --git a/pom.xml b/pom.xml index 87a56d1644..0dd58364db 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-commons - 2.2.0.BUILD-SNAPSHOT + 2.2.0.DATACMNS-1396-SNAPSHOT Spring Data Core diff --git a/src/main/java/org/springframework/data/convert/CustomConversions.java b/src/main/java/org/springframework/data/convert/CustomConversions.java index 25023bffcd..2321e9b9e6 100644 --- a/src/main/java/org/springframework/data/convert/CustomConversions.java +++ b/src/main/java/org/springframework/data/convert/CustomConversions.java @@ -393,7 +393,10 @@ public Class computeIfAbsent(Class sourceType, Function computeIfAbsent(Class sourceType, Class targetType, Function> mappingFunction) { - TargetTypes targetTypes = customReadTargetTypes.computeIfAbsent(sourceType, TargetTypes::new); + TargetTypes targetTypes = customReadTargetTypes.get(sourceType); + if (targetTypes == null) { + targetTypes = customReadTargetTypes.computeIfAbsent(sourceType, TargetTypes::new); + } return targetTypes.computeIfAbsent(targetType, mappingFunction); } diff --git a/src/main/java/org/springframework/data/convert/DefaultTypeMapper.java b/src/main/java/org/springframework/data/convert/DefaultTypeMapper.java index 2a59aea096..8065323ff4 100644 --- a/src/main/java/org/springframework/data/convert/DefaultTypeMapper.java +++ b/src/main/java/org/springframework/data/convert/DefaultTypeMapper.java @@ -127,7 +127,14 @@ public TypeInformation readType(S source) { */ @Nullable private TypeInformation getFromCacheOrCreate(Alias alias) { - return typeCache.computeIfAbsent(alias, getAlias).orElse(null); + + Optional> typeInformation = typeCache.get(alias); + + if (typeInformation == null) { + typeInformation = typeCache.computeIfAbsent(alias, getAlias); + } + + return typeInformation.orElse(null); } /*