Bug 489619 - bindAttribute did not work in case of copy&paste
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultPasteBPMNElementFeature.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultPasteBPMNElementFeature.java
index f7e0086..cc4f633 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultPasteBPMNElementFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultPasteBPMNElementFeature.java
@@ -37,6 +37,8 @@
import org.eclipse.bpmn2.di.BPMNDiagram;
import org.eclipse.bpmn2.di.BPMNEdge;
import org.eclipse.bpmn2.di.BPMNShape;
+import org.eclipse.bpmn2.modeler.core.adapters.ExtendedPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.core.adapters.FeatureDescriptor;
import org.eclipse.bpmn2.modeler.core.di.DIUtils;
import org.eclipse.bpmn2.modeler.core.model.Bpmn2ModelerFactory;
import org.eclipse.bpmn2.modeler.core.utils.AnchorUtil;
@@ -284,6 +286,9 @@
public <T extends EObject> T copyEObject(T eObject) {
Copier copier = new Copier() {
+
+ private static final long serialVersionUID = 1L;
+
@Override
protected EObject createCopy(EObject eObject) {
EClass eClass = getTarget(eObject.eClass());
@@ -307,6 +312,15 @@
if (name==null || name.isEmpty())
t.eSet(f, null);
}
+
+ // add metadata to the ExtendedPropertiesAdapter for extension features
+ ExtendedPropertiesAdapter<T> oldAdapter = ExtendedPropertiesAdapter.adapt(eObject);
+ ExtendedPropertiesAdapter<T> newAdapter = ExtendedPropertiesAdapter.adapt(result);
+ for (EStructuralFeature oldFeature : oldAdapter.getExtensionFeatures()) {
+ FeatureDescriptor fd = newAdapter.getFeatureDescriptor(oldFeature);
+ fd.setProperty(ExtendedPropertiesAdapter.IS_EXTENSION_FEATURE, Boolean.TRUE);
+ }
+
return t;
}