Skip to content

Commit 2d5ab7b

Browse files
janhickenmartin-fleck-at
authored andcommitted
Make concurrently used caches thread-safe
The thread safety is achieved by using `Collections.synchronizedMap()`. This fixes #56
1 parent 48fc6db commit 2d5ab7b

2 files changed

Lines changed: 4 additions & 2 deletions

File tree

src/main/java/org/eclipse/emfcloud/jackson/databind/property/EObjectPropertyMap.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import static org.eclipse.emfcloud.jackson.annotations.JsonAnnotations.getElementName;
1919
import static org.eclipse.emfcloud.jackson.module.EMFModule.Feature.OPTION_USE_ID;
2020

21+
import java.util.Collections;
2122
import java.util.HashMap;
2223
import java.util.Iterator;
2324
import java.util.LinkedHashSet;
@@ -56,7 +57,7 @@ public final class EObjectPropertyMap {
5657

5758
public static class Builder {
5859

59-
private final Map<EClass, EObjectPropertyMap> cache = new WeakHashMap<>();
60+
private final Map<EClass, EObjectPropertyMap> cache = Collections.synchronizedMap(new WeakHashMap<>());
6061

6162
private final EcoreIdentityInfo identityInfo;
6263
private final EcoreTypeInfo typeInfo;

src/main/java/org/eclipse/emfcloud/jackson/databind/type/EcoreTypeFactory.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import static org.eclipse.emf.ecore.EcorePackage.Literals.EJAVA_OBJECT;
1717

1818
import java.util.Collection;
19+
import java.util.Collections;
1920
import java.util.Map;
2021
import java.util.Objects;
2122
import java.util.WeakHashMap;
@@ -34,7 +35,7 @@
3435

3536
public class EcoreTypeFactory {
3637

37-
private final Map<Pair<EClass, EStructuralFeature>, JavaType> cache = new WeakHashMap<>();
38+
private final Map<Pair<EClass, EStructuralFeature>, JavaType> cache = Collections.synchronizedMap(new WeakHashMap<>());
3839

3940
private static class Pair<A, B> {
4041
private final A a;

0 commit comments

Comments
 (0)