Refactor ClassLoaderScopeWekaMap

This commit is contained in:
Luca Abbati 2019-07-18 15:34:26 +02:00
parent e3a6d40e77
commit 35b928be7c
No known key found for this signature in database
GPG Key ID: 74DBB952D9BA17F2
1 changed files with 8 additions and 4 deletions

View File

@ -15,18 +15,22 @@ public class ClassLoaderScopedWeakMap {
* Gets the element registered at the specified key or register as new one retrieved by the
* provided supplier.
*/
public Object getOrCreate(ClassLoader classLoader, Object key, Supplier valueSupplier) {
Map<Object, Object> classLoaderMap = map.get(classLoader);
if (classLoaderMap == null) {
public synchronized Object getOrCreate(
ClassLoader classLoader, Object key, Supplier valueSupplier) {
Map<Object, Object> classLoaderMap;
if (!map.containsKey(classLoader)) {
classLoaderMap = new ConcurrentHashMap<>();
map.put(classLoader, classLoaderMap);
} else {
classLoaderMap = map.get(classLoader);
}
if (classLoaderMap.containsKey(key)) {
return classLoaderMap.get(key);
}
Object value = valueSupplier.get();
final Object value = valueSupplier.get();
classLoaderMap.put(key, value);
return value;
}