diff options
author | Kenn Hussey | 2015-04-23 20:34:22 +0000 |
---|---|---|
committer | Kenn Hussey | 2015-04-23 20:34:22 +0000 |
commit | 0a30e6334abd0f4b73afb1e91e5a6e9dbf8d86e0 (patch) | |
tree | 7afc059d1773a752cb6b4bbff344161bbc267466 | |
parent | db589f3113fdf762913471f60b65425b87fc1542 (diff) | |
download | org.eclipse.uml2-0a30e6334abd0f4b73afb1e91e5a6e9dbf8d86e0.tar.gz org.eclipse.uml2-0a30e6334abd0f4b73afb1e91e5a6e9dbf8d86e0.tar.xz org.eclipse.uml2-0a30e6334abd0f4b73afb1e91e5a6e9dbf8d86e0.zip |
[465214] Avoiding dangling references for activity nodes and groups.
3 files changed, 42 insertions, 3 deletions
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityGroupImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityGroupImpl.java index 905dc9bf1..c410d32b0 100644 --- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityGroupImpl.java +++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityGroupImpl.java @@ -8,7 +8,7 @@ * Contributors: * IBM - initial API and implementation * Kenn Hussey - 286329, 323181 - * Kenn Hussey (CEA) - 327039, 351774, 418466, 451350 + * Kenn Hussey (CEA) - 327039, 351774, 418466, 451350, 465214 * */ package org.eclipse.uml2.uml.internal.impl; @@ -323,6 +323,18 @@ public abstract class ActivityGroupImpl return super.eBasicRemoveFromContainer(msgs); } + @Override + public NotificationChain eBasicSetContainer(InternalEObject newContainer, + int newContainerFeatureID, NotificationChain msgs) { + InternalEObject eInternalContainer = eInternalContainer(); + if (eInternalContainer instanceof Activity) { + msgs = ((InternalEList<ActivityGroup>) ((Activity) eInternalContainer) + .getGroups()).basicRemove(this, msgs); + } + return super.eBasicSetContainer(newContainer, newContainerFeatureID, + msgs); + } + /** * <!-- begin-user-doc --> * <!-- end-user-doc --> diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityNodeImpl.java index 5b13cad07..a877b2cc7 100644 --- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityNodeImpl.java +++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityNodeImpl.java @@ -8,7 +8,7 @@ * Contributors: * IBM - initial API and implementation * Kenn Hussey - 323181 - * Kenn Hussey (CEA) - 327039, 351774, 418466, 451350 + * Kenn Hussey (CEA) - 327039, 351774, 418466, 451350, 465214 * */ package org.eclipse.uml2.uml.internal.impl; @@ -408,6 +408,18 @@ public abstract class ActivityNodeImpl return super.eBasicRemoveFromContainer(msgs); } + @Override + public NotificationChain eBasicSetContainer(InternalEObject newContainer, + int newContainerFeatureID, NotificationChain msgs) { + InternalEObject eInternalContainer = eInternalContainer(); + if (eInternalContainer instanceof Activity) { + msgs = ((InternalEList<ActivityNode>) ((Activity) eInternalContainer) + .getNodes()).basicRemove(this, msgs); + } + return super.eBasicSetContainer(newContainer, newContainerFeatureID, + msgs); + } + /** * <!-- begin-user-doc --> * <!-- end-user-doc --> diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuredActivityNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuredActivityNodeImpl.java index 89306bd51..48a38bcec 100644 --- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuredActivityNodeImpl.java +++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuredActivityNodeImpl.java @@ -9,7 +9,7 @@ * IBM - initial API and implementation * Kenn Hussey (Embarcadero Technologies) - 204200 * Kenn Hussey - 286329, 323181 - * Kenn Hussey (CEA) - 327039, 351774, 418466, 451350 + * Kenn Hussey (CEA) - 327039, 351774, 418466, 451350, 465214 * */ package org.eclipse.uml2.uml.internal.impl; @@ -1021,6 +1021,21 @@ public class StructuredActivityNodeImpl return super.eBasicRemoveFromContainer(msgs); } + @Override + public NotificationChain eBasicSetContainer(InternalEObject newContainer, + int newContainerFeatureID, NotificationChain msgs) { + InternalEObject eInternalContainer = eInternalContainer(); + if (eInternalContainer instanceof Activity) { + Activity activity = (Activity) eInternalContainer; + msgs = ((InternalEList<ActivityGroup>) activity.getGroups()) + .basicRemove(this, msgs); + msgs = ((InternalEList<ActivityNode>) activity.getNodes()) + .basicRemove(this, msgs); + } + return super.eBasicSetContainer(newContainer, newContainerFeatureID, + msgs); + } + /** * <!-- begin-user-doc --> * <!-- end-user-doc --> |