Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Barbin2015-09-11 13:39:04 +0000
committerFlorian Barbin2015-09-11 13:51:33 +0000
commit5bfa08e83edfe8f27b63605dd9f274697172b4db (patch)
tree5c1057d072d886f26fad73a285cbf7c9e966f031
parentc519ba977db3dc4fb31e1270883cabb4e650b2e6 (diff)
downloadorg.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.java18
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;
}

Back to the top