1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-28 11:25:35 +02:00

Bug 463530 - Avoid ConcurrentModificationException in listener list

Change-Id: I82c876b1162acfc6b464e535c6c54469c87bb114
Signed-off-by: Greg Watson <g.watson@computer.org>
This commit is contained in:
Greg Watson 2015-03-30 21:44:25 -04:00
parent d36eb06f7c
commit 56b0c45b4f

View file

@ -10,12 +10,11 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.remote.internal.core; package org.eclipse.remote.internal.core;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import org.eclipse.core.runtime.IProgressMonitor; 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.ISecurePreferences;
import org.eclipse.equinox.security.storage.StorageException; import org.eclipse.equinox.security.storage.StorageException;
import org.eclipse.remote.core.IRemoteConnection; import org.eclipse.remote.core.IRemoteConnection;
@ -42,7 +41,7 @@ public class RemoteConnection implements IRemoteConnection {
private final Map<String, Object> servicesMap = new HashMap<>(); private final Map<String, Object> servicesMap = new HashMap<>();
private final List<IRemoteConnectionChangeListener> fListeners = new ArrayList<>(); private final ListenerList fListeners = new ListenerList();
final static String EMPTY_STRING = ""; //$NON-NLS-1$ final static String EMPTY_STRING = ""; //$NON-NLS-1$
@ -244,7 +243,8 @@ public class RemoteConnection implements IRemoteConnection {
* (non-Javadoc) * (non-Javadoc)
* *
* @see * @see
* org.eclipse.remote.core.IRemoteConnection#removeConnectionChangeListener(org.eclipse.remote.core.IRemoteConnectionChangeListener * org.eclipse.remote.core.IRemoteConnection#removeConnectionChangeListener(org.eclipse.remote.core.
* IRemoteConnectionChangeListener
* ) * )
*/ */
@Override @Override
@ -260,8 +260,8 @@ public class RemoteConnection implements IRemoteConnection {
@Override @Override
public void fireConnectionChangeEvent(final int type) { public void fireConnectionChangeEvent(final int type) {
RemoteConnectionChangeEvent event = new RemoteConnectionChangeEvent(this, type); RemoteConnectionChangeEvent event = new RemoteConnectionChangeEvent(this, type);
for (IRemoteConnectionChangeListener listener : fListeners) { for (Object listener : fListeners.getListeners()) {
listener.connectionChanged(event); ((IRemoteConnectionChangeListener) listener).connectionChanged(event);
} }
// fire to the global listeners too // fire to the global listeners too
connectionType.getRemoteServicesManager().fireRemoteConnectionChangeEvent(event); connectionType.getRemoteServicesManager().fireRemoteConnectionChangeEvent(event);