From b74089cc3b251161c5c810ee928d50d988ffbae5 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Thu, 12 Mar 2020 14:33:01 +0100 Subject: [PATCH] DATAREST-1489 - Fixed caches in PersistentEntitiesResourceMappings. We now consistently use ConcurrentReferenceHashMap for all caches to make PersistentEntitiesResourceMappings thread-safe. --- .../core/mapping/PersistentEntitiesResourceMappings.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/mapping/PersistentEntitiesResourceMappings.java b/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/mapping/PersistentEntitiesResourceMappings.java index af611bb09..a6ef045ea 100644 --- a/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/mapping/PersistentEntitiesResourceMappings.java +++ b/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/mapping/PersistentEntitiesResourceMappings.java @@ -21,7 +21,6 @@ import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; import org.springframework.data.mapping.PersistentEntity; import org.springframework.data.mapping.PersistentProperty; @@ -42,9 +41,9 @@ public class PersistentEntitiesResourceMappings implements ResourceMappings { private final SearchResourceMappings searchResourceMappings = new SearchResourceMappings( Collections. emptyList()); - private final Map, ResourceMetadata> cache = new ConcurrentHashMap<>(); + private final Map, ResourceMetadata> cache = new ConcurrentReferenceHashMap<>(); private final Map, MappingResourceMetadata> mappingCache = new ConcurrentReferenceHashMap<>(); - private final Map, ResourceMapping> propertyCache = new HashMap, ResourceMapping>(); + private final Map, ResourceMapping> propertyCache = new ConcurrentReferenceHashMap, ResourceMapping>(); /** * Creates a new {@link PersistentEntitiesResourceMappings} from the given {@link PersistentEntities}.