diff options
| author | Florian Barbin | 2015-09-11 13:39:04 +0000 |
|---|---|---|
| committer | Florian Barbin | 2015-09-11 13:51:33 +0000 |
| commit | 5bfa08e83edfe8f27b63605dd9f274697172b4db (patch) | |
| tree | 5c1057d072d886f26fad73a285cbf7c9e966f031 | |
| parent | c519ba977db3dc4fb31e1270883cabb4e650b2e6 (diff) | |
| download | org.eclipse.sirius-5bfa08e83edfe8f27b63605dd9f274697172b4db.tar.gz org.eclipse.sirius-5bfa08e83edfe8f27b63605dd9f274697172b4db.tar.xz org.eclipse.sirius-5bfa08e83edfe8f27b63605dd9f274697172b4db.zip | |
[477191] Copies the custom features list in repair action
* We stored the same instance of EList when storing the custom features
value. That caused to lose the value at the restore time when calling
the eSet (EMF performs a clear before calling addAll).
Bug: 477191
Change-Id: Iad6bef526375ceefb687e00de623d21ffd0c08b2
Signed-off-by: Florian Barbin <florian.barbin@obeo.fr>
| -rw-r--r-- | plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/repair/AbstractDiagramElementState.java | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/repair/AbstractDiagramElementState.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/repair/AbstractDiagramElementState.java index c53f527dcf..dbc7585daa 100644 --- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/repair/AbstractDiagramElementState.java +++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/repair/AbstractDiagramElementState.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2008 THALES GLOBAL SERVICES. + * Copyright (c) 2007, 2015 THALES GLOBAL SERVICES. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -54,8 +54,8 @@ import com.google.common.collect.Lists; * * @param <D> * Type of diagram element. - * @author lgoubet <a - * href="mailto:laurent.goubet@obeo.fr">laurent.goubet@obeo.fr</a> + * @author lgoubet + * <a href="mailto:laurent.goubet@obeo.fr">laurent.goubet@obeo.fr</a> */ public abstract class AbstractDiagramElementState<D extends DDiagramElement> implements IDiagramElementState<D> { @@ -142,6 +142,7 @@ public abstract class AbstractDiagramElementState<D extends DDiagramElement> imp /** * {@inheritDoc} */ + @Override public void dispose() { nodes.clear(); edges.clear(); @@ -151,6 +152,7 @@ public abstract class AbstractDiagramElementState<D extends DDiagramElement> imp /** * {@inheritDoc} */ + @Override public void storeElementState(EObject target, DiagramElementMapping mapping, D element) { customizableToCustomizedFeatures.clear(); isVisible = element.isVisible(); @@ -197,6 +199,7 @@ public abstract class AbstractDiagramElementState<D extends DDiagramElement> imp // after restore. Predicate<Object> predicate = new Predicate<Object>() { + @Override public boolean apply(Object input) { if (input instanceof CollapseFilter) { if (((CollapseFilter) input).eIsSet(DiagramPackage.eINSTANCE.getCollapseFilter_Height()) && ((CollapseFilter) input).eIsSet(DiagramPackage.eINSTANCE.getCollapseFilter_Width())) { @@ -229,7 +232,12 @@ public abstract class AbstractDiagramElementState<D extends DDiagramElement> imp for (String featureName : customizable.getCustomFeatures()) { EStructuralFeature structuralFeature = customizable.eClass().getEStructuralFeature(featureName); if (structuralFeature != null) { - customFeatures.put(featureName, customizable.eGet(structuralFeature)); + Object value = customizable.eGet(structuralFeature); + if (value instanceof Collection<?>) { + value = Lists.newArrayList((Collection<?>) value); + } + customFeatures.put(featureName, value); + } } Identifier customizableIdentifier = Identifier.createCustomizableIdentifier(customizable); @@ -262,6 +270,7 @@ public abstract class AbstractDiagramElementState<D extends DDiagramElement> imp /** * {@inheritDoc} */ + @Override public void restoreElementState(final D element) { if (isHidden) { HideFilterHelper.INSTANCE.hide(element); @@ -392,6 +401,7 @@ public abstract class AbstractDiagramElementState<D extends DDiagramElement> imp /** * {@inheritDoc} */ + @Override public Identifier getIdentifier() { return identifier; } |
