diff --git a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchBarManager.java b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchBarManager.java index b5be2727799..ae22cc1e739 100644 --- a/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchBarManager.java +++ b/launchbar/org.eclipse.launchbar.core/src/org/eclipse/launchbar/core/internal/LaunchBarManager.java @@ -69,7 +69,8 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene private final Map descriptorTypeInfo = new HashMap<>(); private final Map> configProviders = new HashMap<>(); // Descriptors in MRU order, key is desc type id and desc name. - private final Map, ILaunchDescriptor> descriptors = new LinkedHashMap<>(); + private final Map, ILaunchDescriptor> descriptors = Collections + .synchronizedMap(new LinkedHashMap<>()); // Map of launch objects to launch descriptors private final Map objectDescriptorMap = new HashMap<>(); private ILaunchTargetManager launchTargetManager; @@ -307,9 +308,7 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene private void addDescriptor(Object launchObject, ILaunchDescriptor descriptor) throws CoreException { Pair descriptorId = getDescriptorId(descriptor); - synchronized (descriptors) { - descriptors.put(descriptorId, descriptor); - } + descriptors.put(descriptorId, descriptor); objectDescriptorMap.put(launchObject, descriptor); setActiveLaunchDescriptor(descriptor); } @@ -377,9 +376,7 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene ILaunchDescriptor descriptor = objectDescriptorMap.remove(launchObject); if (descriptor != null) { Pair descriptorId = getDescriptorId(descriptor); - synchronized (descriptors) { - descriptors.remove(descriptorId); - } + descriptors.remove(descriptorId); if (descriptor.equals(activeLaunchDesc)) { setActiveLaunchDescriptor(getLastUsedDescriptor()); } @@ -489,14 +486,8 @@ public class LaunchBarManager implements ILaunchBarManager, ILaunchTargetListene Activator.trace("resync for " + descriptor); //$NON-NLS-1$ return; } - if (descriptor != null) { - boolean isContained; - synchronized (descriptors) { - isContained = descriptors.containsValue(descriptor); - } - if (!isContained) { - throw new IllegalStateException(Messages.LaunchBarManager_1); - } + if (descriptor != null && !descriptors.containsValue(descriptor)) { + throw new IllegalStateException(Messages.LaunchBarManager_1); } if (descriptor == null) { // do not set to null unless no descriptors