diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-07-11 19:02:09 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-07-11 19:02:09 +0530 |
| commit | e9a60e8c9c81f68fcf6318d5455f0fd012028549 (patch) | |
| tree | f9a1f1b880b95dfa4b640d4c62520368a842a226 /src | |
| parent | c46d6063db71cd34ec6d8c70cdf5cad857f532ba (diff) | |
| parent | 5451e77260d7bc91c686103b0878e18f6ebc9343 (diff) | |
Merge branch 'work'
Diffstat (limited to 'src')
2 files changed, 20 insertions, 6 deletions
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java index 05ff88e9..4585aca6 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java @@ -568,7 +568,12 @@ public class GlusterDataModelManager { Cluster cluster = model.getCluster(); cluster.removeServer(server); - for (ClusterListener listener : listeners) { + // can't use an iterator here. The method AbstractList.Itr#next checks for concurrent modification. + // Since listeners can end up creating new views, which add themselves as listeners, the listeners + // list can be concurrently modified which can result in an exception while using iterator. + // Hence we use List#get instead of the iterator + for(int i = 0; i < listeners.size(); i++) { + ClusterListener listener = listeners.get(i); listener.serverRemoved(server); } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java index f684a0f7..b60bc37b 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java @@ -39,12 +39,12 @@ import com.gluster.storage.management.core.model.DefaultClusterListener; import com.gluster.storage.management.core.model.Entity; import com.gluster.storage.management.core.model.Event; import com.gluster.storage.management.core.model.GlusterDataModel; +import com.gluster.storage.management.core.model.GlusterServer; import com.gluster.storage.management.core.model.Volume; import com.gluster.storage.management.gui.toolbar.GlusterToolbarManager; public class NavigationView extends ViewPart implements ISelectionListener { public static final String ID = NavigationView.class.getName(); - private GlusterDataModel model; private TreeViewer treeViewer; private IAdapterFactory adapterFactory = new ClusterAdapterFactory(); private GlusterToolbarManager toolbarManager; @@ -65,7 +65,7 @@ public class NavigationView extends ViewPart implements ISelectionListener { } private void createNavigationTree(Composite parent) { - model = GlusterDataModelManager.getInstance().getModel(); + GlusterDataModel model = GlusterDataModelManager.getInstance().getModel(); Platform.getAdapterManager().registerAdapters(adapterFactory, Entity.class); treeViewer = new TreeViewer(parent, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL); @@ -95,12 +95,21 @@ public class NavigationView extends ViewPart implements ISelectionListener { } } + @Override public void volumeDeleted(Volume volume) { super.volumeDeleted(volume); if(volume == entity) { - // volume deleted was deleted. selected the root element in the tree. - treeViewer.setSelection(new StructuredSelection(GlusterDataModelManager.getInstance().getModel() - .getCluster())); + // volume selected was deleted. select the root element in the tree. + selectEntity(GlusterDataModelManager.getInstance().getModel().getCluster()); + } + } + + @Override + public void serverRemoved(GlusterServer server) { + super.serverRemoved(server); + if(server == entity) { + // server selected was removed. select the root element in the tree. + selectEntity(GlusterDataModelManager.getInstance().getModel().getCluster()); } }; }; |
