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);
}
/*