Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Seidewitz2015-04-30 16:14:49 +0000
committerEd Seidewitz2015-04-30 16:40:15 +0000
commitcc88d6908ec79067b10a704693a92eb145984079 (patch)
treea3cd1b3a73005ea0b62d24fc6c05c4a9dac1a112 /plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus
parent439f2a027864d060fbe25a5886e2704741bcf525 (diff)
downloadorg.eclipse.papyrus-cc88d6908ec79067b10a704693a92eb145984079.tar.gz
org.eclipse.papyrus-cc88d6908ec79067b10a704693a92eb145984079.tar.xz
org.eclipse.papyrus-cc88d6908ec79067b10a704693a92eb145984079.zip
Fixed mapping of stubs definitions.
Change-Id: I114ea1382e904103464451bcb271876f72317678 Signed-off-by: Ed Seidewitz <ed-s@modeldriven.com>
Diffstat (limited to 'plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus')
-rw-r--r--plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/AlfMapper.java2
-rw-r--r--plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/ModelMerge.java83
2 files changed, 55 insertions, 30 deletions
diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/AlfMapper.java b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/AlfMapper.java
index ed372f6e406..5c3ec87cca3 100644
--- a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/AlfMapper.java
+++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/AlfMapper.java
@@ -183,7 +183,7 @@ public class AlfMapper {
new BasicEList<PackageableElement>(model.getPackagedElements());
for (PackageableElement member : elements) {
String name = member.getName();
- if (name.length() < 3 || !name.substring(0, 2).equals("$$")) {
+ if (name != null && (name.length() < 3 || !name.substring(0, 2).equals("$$"))) {
merge.update(contextElement, member);
elements.remove(member);
break;
diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/ModelMerge.java b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/ModelMerge.java
index ea2c12143e3..47656f48ef2 100644
--- a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/ModelMerge.java
+++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/src/org/eclipse/papyrus/uml/alf/ModelMerge.java
@@ -60,8 +60,10 @@ public class ModelMerge {
updateStereotypes(targetPackage, sourcePackage);
setList(targetPackage.getOwnedComments(), sourcePackage.getOwnedComments());
targetPackage.setVisibility(sourcePackage.getVisibility());
- targetPackage.setName(sourcePackage.getName());
- this.updateCollection(targetPackage.getPackagedElements(), sourcePackage.getPackagedElements());
+ targetPackage.setName(nameOf(sourcePackage));
+ if (notStub(sourcePackage)) {
+ this.updateCollection(targetPackage.getPackagedElements(), sourcePackage.getPackagedElements());
+ }
} else if (source instanceof Activity && target instanceof Activity) {
// NOTE: Need to check for Activity before Class, since an Activity is a kind of Class.
Activity sourceActivity = (Activity) source;
@@ -76,49 +78,58 @@ public class ModelMerge {
} else if (source instanceof Class && target instanceof Class) {
Class sourceClass = (Class) source;
Class targetClass = (Class) target;
- // NOTE: Save this in case it is moved as an owned behavior from the source.
- Behavior sourceClassifierBehavior = sourceClass.getClassifierBehavior();
this.updateClassifier(targetClass, sourceClass);
- this.updateCollection(targetClass.getOwnedAttributes(), sourceClass.getOwnedAttributes());
- this.updateCollection(targetClass.getOwnedOperations(), sourceClass.getOwnedOperations());
- this.updateCollection(targetClass.getOwnedReceptions(), sourceClass.getOwnedReceptions());
- this.updateCollection(targetClass.getOwnedBehaviors(), sourceClass.getOwnedBehaviors());
- this.updateCollection(targetClass.getNestedClassifiers(), sourceClass.getNestedClassifiers());
- if (sourceClass.isActive()) {
- targetClass.setIsActive(true);
- // NOTE: Must use replacement, if any, or source classifier
- // behavior will be moved to the target owned behaviors.
- Behavior targetClassifierBehavior =
- (Behavior) this.getReplacement(sourceClassifierBehavior);
- if (targetClassifierBehavior == null) {
- targetClassifierBehavior = sourceClassifierBehavior;
+ targetClass.setIsActive(sourceClass.isActive());
+ if (notStub(sourceClass)) {
+ // NOTE: Save this in case it is moved as an owned behavior from the source.
+ Behavior sourceClassifierBehavior = sourceClass.getClassifierBehavior();
+ this.updateCollection(targetClass.getOwnedAttributes(), sourceClass.getOwnedAttributes());
+ this.updateCollection(targetClass.getOwnedOperations(), sourceClass.getOwnedOperations());
+ this.updateCollection(targetClass.getOwnedReceptions(), sourceClass.getOwnedReceptions());
+ this.updateCollection(targetClass.getOwnedBehaviors(), sourceClass.getOwnedBehaviors());
+ this.updateCollection(targetClass.getNestedClassifiers(), sourceClass.getNestedClassifiers());
+ if (sourceClass.isActive()) {
+ // NOTE: Must use replacement, if any, or source classifier
+ // behavior will be moved to the target owned behaviors.
+ Behavior targetClassifierBehavior =
+ (Behavior) this.getReplacement(sourceClassifierBehavior);
+ if (targetClassifierBehavior == null) {
+ targetClassifierBehavior = sourceClassifierBehavior;
+ }
+ targetClass.setClassifierBehavior(targetClassifierBehavior);
+ } else {
+ targetClass.setClassifierBehavior(null);
}
- targetClass.setClassifierBehavior(targetClassifierBehavior);
- } else {
- targetClass.setIsActive(false);
- targetClass.setClassifierBehavior(null);
- }
+ }
} else if (source instanceof Enumeration && target instanceof Enumeration) {
// NOTE: Need to check for Enumeration before DataType, since an Enumeration is a kind of DataType.
Enumeration sourceEnumeration = (Enumeration) source;
Enumeration targetEnumeration = (Enumeration) target;
this.updateClassifier(targetEnumeration, sourceEnumeration);
- this.updateCollection(targetEnumeration.getOwnedLiterals(), sourceEnumeration.getOwnedLiterals());
+ if (notStub(sourceEnumeration)) {
+ this.updateCollection(targetEnumeration.getOwnedLiterals(), sourceEnumeration.getOwnedLiterals());
+ }
} else if (source instanceof DataType && target instanceof DataType) {
DataType sourceType = (DataType) source;
DataType targetType = (DataType) target;
this.updateClassifier(targetType, sourceType);
- this.updateCollection(targetType.getOwnedAttributes(), sourceType.getOwnedAttributes());
+ if (notStub(sourceType)) {
+ this.updateCollection(targetType.getOwnedAttributes(), sourceType.getOwnedAttributes());
+ }
} else if (source instanceof Signal && target instanceof Signal) {
Signal sourceSignal = (Signal) source;
Signal targetSignal = (Signal) target;
this.updateClassifier(targetSignal, sourceSignal);
- this.updateCollection(targetSignal.getOwnedAttributes(), sourceSignal.getOwnedAttributes());
+ if (notStub(sourceSignal)) {
+ this.updateCollection(targetSignal.getOwnedAttributes(), sourceSignal.getOwnedAttributes());
+ }
} else if (source instanceof Association && target instanceof Association) {
Association sourceAssociation = (Association) source;
Association targetAssociation = (Association) target;
this.updateClassifier(targetAssociation, sourceAssociation);
- this.updateCollection(targetAssociation.getOwnedEnds(), sourceAssociation.getOwnedEnds());
+ if (notStub(sourceAssociation)) {
+ this.updateCollection(targetAssociation.getOwnedEnds(), sourceAssociation.getOwnedEnds());
+ }
} else if (source instanceof Property && target instanceof Property) {
this.addReplacement(source, target);
Property sourceProperty = (Property) source;
@@ -153,7 +164,7 @@ public class ModelMerge {
updateStereotypes(targetReception, sourceReception);
targetReception.setVisibility(sourceReception.getVisibility());
targetReception.setIsAbstract(sourceReception.isAbstract());
- targetReception.setName(sourceReception.getName());
+ targetReception.setName(nameOf(sourceReception)); // nameOf used in case the reception was mapped from a stub SignalReceptionDefinition.
targetReception.setSignal(sourceReception.getSignal());
}
}
@@ -215,7 +226,7 @@ public class ModelMerge {
setList(target.getOwnedComments(), source.getOwnedComments());
setList(target.getGeneralizations(), source.getGeneralizations());
setList(target.getTemplateBindings(), source.getTemplateBindings());
- target.setName(source.getName());
+ target.setName(nameOf(source));
target.setVisibility(source.getVisibility());
target.setIsAbstract(source.isAbstract());
target.setOwnedTemplateSignature(source.getOwnedTemplateSignature());
@@ -248,6 +259,7 @@ public class ModelMerge {
// System.out.println("[updateAll] targetElement=" + targetElement);
this.update(targetElement, sourceElement);
} else {
+ sourceElement.setName(nameOf(sourceElement));
targetCollection.add(sourceElement);
updateAllStereotypes(sourceElement);
}
@@ -258,7 +270,7 @@ public class ModelMerge {
protected static <T extends NamedElement> T findTargetElement(
List<T> collection, T sourceElement) {
java.lang.Class<? extends NamedElement> kind = sourceElement.getClass();
- String name = sourceElement.getName();
+ String name = nameOf(sourceElement);
// System.out.println("[findTargetElement] kind=" + kind.getSimpleName() + " name=" + name + " count=" + count);
for (T targetElement : collection) {
// System.out.println("[findTargetElement] n= " + n + " targetElement=" + targetElement);
@@ -273,6 +285,19 @@ public class ModelMerge {
return null;
}
+ protected static String nameOf(NamedElement element) {
+ String name = element.getName();
+ return isStubName(name)? name.substring(0, name.length() - 5): name;
+ }
+
+ protected static boolean notStub(NamedElement element) {
+ return !isStubName(element.getName());
+ }
+
+ protected static boolean isStubName(String name) {
+ return name != null && name.endsWith("$stub");
+ }
+
protected void clearReplacements() {
this.originalElements.clear();
this.replacementElements.clear();

Back to the top