Fix over-eager disposal of entity on deletion, which was disposing it before notifying listeners it had changed. Now we dispose only after listeners have been notified, so they can actually access the old data, such as its FQN.

Change-Id: I005907bc2d832cb5e07b914fc8267a391ef53a05
diff --git a/plugins/org.eclipse.tigerstripe.workbench.base/src/java/org/eclipse/tigerstripe/workbench/internal/core/model/ArtifactManagerImpl.java b/plugins/org.eclipse.tigerstripe.workbench.base/src/java/org/eclipse/tigerstripe/workbench/internal/core/model/ArtifactManagerImpl.java
index b4e763b..53ee322 100644
--- a/plugins/org.eclipse.tigerstripe.workbench.base/src/java/org/eclipse/tigerstripe/workbench/internal/core/model/ArtifactManagerImpl.java
+++ b/plugins/org.eclipse.tigerstripe.workbench.base/src/java/org/eclipse/tigerstripe/workbench/internal/core/model/ArtifactManagerImpl.java
@@ -509,14 +509,18 @@
             if (artifact instanceof IRelationship) {
                 getRelationshipCache().removeRelationship((IRelationship) artifact, ignoreProjects);
             }
-            if (dispose) {
-                artifact.dispose();
-            }
+
         } finally {
             mgrChanged = true;
             writeLock.unlock();
         }
-        notifyArtifactRemoved(artifact);
+        try {
+            notifyArtifactRemoved(artifact);
+        } finally {
+            if (dispose) {
+                artifact.dispose();
+            }
+        }
     }
 
     private void removeFromExtractedMap(IAbstractArtifact artifact) {