Author: bbrodt
Date: 2010-08-16 16:55:22 -0400 (Mon, 16 Aug 2010)
New Revision: 24192
Modified:
trunk/bpel/plugins/org.eclipse.bpel.common.ui/src/org/eclipse/bpel/common/ui/editmodel/EditModel.java
Log:
https://jira.jboss.org/browse/JBIDE-6785
Prevent concurrent list modification exception
Modified:
trunk/bpel/plugins/org.eclipse.bpel.common.ui/src/org/eclipse/bpel/common/ui/editmodel/EditModel.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.common.ui/src/org/eclipse/bpel/common/ui/editmodel/EditModel.java 2010-08-16
20:54:28 UTC (rev 24191)
+++
trunk/bpel/plugins/org.eclipse.bpel.common.ui/src/org/eclipse/bpel/common/ui/editmodel/EditModel.java 2010-08-16
20:55:22 UTC (rev 24192)
@@ -129,25 +129,39 @@
}
protected void fireModelDeleted(ResourceInfo sr) {
- for (IEditModelListener next : updateListeners ) {
+ //
https://jira.jboss.org/browse/JBIDE-6785
+ // Prevent concurrent list modification exception:
+ // When a resource is deleted, the BPEL editor shuts itself down for no
+ // apparently good reason (I'm sure it's to avoid some other kinds of
disasters
+ // that it isn't equipped to deal with!) This causes the editor to remove itself
+ // from our update listeners list.
+ ArrayList<IEditModelListener> listeners = new
ArrayList<IEditModelListener>(updateListeners.size());
+ listeners.addAll(updateListeners);
+ for (IEditModelListener next : listeners ) {
next.modelDeleted(sr);
}
}
protected void fireModelReloaded(ResourceInfo sr) {
- for (IEditModelListener next : updateListeners ) {
+ ArrayList<IEditModelListener> listeners = new
ArrayList<IEditModelListener>(updateListeners.size());
+ listeners.addAll(updateListeners);
+ for (IEditModelListener next : listeners ) {
next.modelReloaded(sr);
}
}
protected void fireModelLocationChanged(ResourceInfo sr, IFile movedToFile) {
- for (IEditModelListener next : updateListeners ) {
+ ArrayList<IEditModelListener> listeners = new
ArrayList<IEditModelListener>(updateListeners.size());
+ listeners.addAll(updateListeners);
+ for (IEditModelListener next : listeners ) {
next.modelLocationChanged(sr,movedToFile);
}
}
protected void fireModelMarkersChanged (ResourceInfo sr, IMarkerDelta[] markerDelta ) {
- for (IEditModelListener next : updateListeners ) {
+ ArrayList<IEditModelListener> listeners = new
ArrayList<IEditModelListener>(updateListeners.size());
+ listeners.addAll(updateListeners);
+ for (IEditModelListener next : listeners ) {
next.modelMarkersChanged(sr,markerDelta );
}
}