From 56b0c45b4f1f90ae5203c2a55f7423d0bc03d6bc Mon Sep 17 00:00:00 2001 From: Greg Watson Date: Mon, 30 Mar 2015 21:44:25 -0400 Subject: [PATCH] Bug 463530 - Avoid ConcurrentModificationException in listener list Change-Id: I82c876b1162acfc6b464e535c6c54469c87bb114 Signed-off-by: Greg Watson --- .../remote/internal/core/RemoteConnection.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnection.java b/bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnection.java index 08edbe688e7..8a84bdc4e28 100644 --- a/bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnection.java +++ b/bundles/org.eclipse.remote.core/src/org/eclipse/remote/internal/core/RemoteConnection.java @@ -10,12 +10,11 @@ *******************************************************************************/ package org.eclipse.remote.internal.core; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.ListenerList; import org.eclipse.equinox.security.storage.ISecurePreferences; import org.eclipse.equinox.security.storage.StorageException; import org.eclipse.remote.core.IRemoteConnection; @@ -42,7 +41,7 @@ public class RemoteConnection implements IRemoteConnection { private final Map servicesMap = new HashMap<>(); - private final List fListeners = new ArrayList<>(); + private final ListenerList fListeners = new ListenerList(); final static String EMPTY_STRING = ""; //$NON-NLS-1$ @@ -244,7 +243,8 @@ public class RemoteConnection implements IRemoteConnection { * (non-Javadoc) * * @see - * org.eclipse.remote.core.IRemoteConnection#removeConnectionChangeListener(org.eclipse.remote.core.IRemoteConnectionChangeListener + * org.eclipse.remote.core.IRemoteConnection#removeConnectionChangeListener(org.eclipse.remote.core. + * IRemoteConnectionChangeListener * ) */ @Override @@ -260,8 +260,8 @@ public class RemoteConnection implements IRemoteConnection { @Override public void fireConnectionChangeEvent(final int type) { RemoteConnectionChangeEvent event = new RemoteConnectionChangeEvent(this, type); - for (IRemoteConnectionChangeListener listener : fListeners) { - listener.connectionChanged(event); + for (Object listener : fListeners.getListeners()) { + ((IRemoteConnectionChangeListener) listener).connectionChanged(event); } // fire to the global listeners too connectionType.getRemoteServicesManager().fireRemoteConnectionChangeEvent(event);