[470704] Does the outline page Leak? OutOfMemoryError in
SetupFactoryImpl.createVariableTask (393)
https://bugs.eclipse.org/bugs/show_bug.cgi?id=470704
diff --git a/plugins/org.eclipse.oomph.setup.editor/src/org/eclipse/oomph/setup/presentation/SetupEditor.java b/plugins/org.eclipse.oomph.setup.editor/src/org/eclipse/oomph/setup/presentation/SetupEditor.java
index 66d4e2a..754fd97 100644
--- a/plugins/org.eclipse.oomph.setup.editor/src/org/eclipse/oomph/setup/presentation/SetupEditor.java
+++ b/plugins/org.eclipse.oomph.setup.editor/src/org/eclipse/oomph/setup/presentation/SetupEditor.java
@@ -55,6 +55,7 @@
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.common.ui.MarkerHelper;
import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
import org.eclipse.emf.common.ui.viewer.ColumnViewerInformationControlToolTipSupport;
@@ -1975,6 +1976,8 @@
private Map<Object, Set<Object>> inverseCopyMap = new HashMap<Object, Set<Object>>();
+ private List<Notifier> notifiers = new ArrayList<Notifier>();
+
private Map<Object, Object> parents = new HashMap<Object, Object>();
private AdapterFactoryEditingDomain.EditingDomainProvider editingDomainProvider = new AdapterFactoryEditingDomain.EditingDomainProvider(editingDomain);
@@ -2186,6 +2189,14 @@
if (labelProvider != null)
{
copyMap.clear();
+ inverseCopyMap.clear();
+
+ for (Notifier notifier : notifiers)
+ {
+ notifier.eAdapters().clear();
+ }
+
+ notifiers.clear();
try
{
@@ -2369,10 +2380,13 @@
{
for (EObject eObject : setupTaskPerformer.getCopyMap().values())
{
+ notifiers.add(eObject);
+
Resource resource = ((InternalEObject)eObject).eDirectResource();
if (resource != null && !resource.eAdapters().contains(editingDomainProvider))
{
resource.eAdapters().add(editingDomainProvider);
+ notifiers.add(resource);
}
}