From b76a69fcd13c785fa013623595367ce2f053e248 Mon Sep 17 00:00:00 2001 From: MIURA Toru Date: Sat, 15 Dec 2018 21:33:28 +0900 Subject: [PATCH] Fix eclipse-ee4j#3997. Make SupplierFactoryBridge thread-safe. Signed-off-by: MIURA Toru --- .../jersey/inject/hk2/SupplierFactoryBridge.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/inject/hk2/src/main/java/org/glassfish/jersey/inject/hk2/SupplierFactoryBridge.java b/inject/hk2/src/main/java/org/glassfish/jersey/inject/hk2/SupplierFactoryBridge.java index b1950b109e..aa105d50fc 100644 --- a/inject/hk2/src/main/java/org/glassfish/jersey/inject/hk2/SupplierFactoryBridge.java +++ b/inject/hk2/src/main/java/org/glassfish/jersey/inject/hk2/SupplierFactoryBridge.java @@ -18,6 +18,7 @@ import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; +import java.util.Collections; import java.util.IdentityHashMap; import java.util.Map; import java.util.function.Supplier; @@ -42,15 +43,15 @@ */ public class SupplierFactoryBridge implements Factory { - private ServiceLocator locator; - private ParameterizedType beanType; - private String beanName; - private boolean disposable; + private final ServiceLocator locator; + private final ParameterizedType beanType; + private final String beanName; + private final boolean disposable; // This bridge can create multiple instances using the method 'provide' therefore must map created suppliers because of // 'dispose' invocation later on. // TODO: Key as a WeakReference - prevent objects in scope which never dispose the objects such as PerLookup. - private Map> disposableSuppliers = new IdentityHashMap<>(); + private Map> disposableSuppliers = Collections.synchronizedMap(new IdentityHashMap<>()); /** * Constructor for a new bridge.