Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Willink2016-11-15 09:48:06 +0000
committerEd Willink2016-11-15 09:48:06 +0000
commit38583a64d19ca5ba0a8e5edb2f6d100bccd0fc9a (patch)
treebeff53d4a6a5944fabc8f017a9b514582bdb134c
parente1aa8b8697b6334d222f4bb3191b743aae7bfebc (diff)
downloadorg.eclipse.qvtd-38583a64d19ca5ba0a8e5edb2f6d100bccd0fc9a.tar.gz
org.eclipse.qvtd-38583a64d19ca5ba0a8e5edb2f6d100bccd0fc9a.tar.xz
org.eclipse.qvtd-38583a64d19ca5ba0a8e5edb2f6d100bccd0fc9a.zip
[507414] Use declared rather than actual containment
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/ClassRelationships.java22
1 files changed, 14 insertions, 8 deletions
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/ClassRelationships.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/ClassRelationships.java
index 29d414349..529db8891 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/ClassRelationships.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtp2qvts/ClassRelationships.java
@@ -89,7 +89,7 @@ public class ClassRelationships
initializeMaps(metamodelManager.getASResourceSet());
}
- private void addContainerClassForTypeAndSubtypes(@NonNull CompleteClass containerClass, @NonNull Property containmentProperty, @NonNull CompleteClass type) {
+ private void addContainerClassForType(@NonNull CompleteClass containerClass, @NonNull Property containmentProperty, @NonNull CompleteClass type) {
Set<@NonNull ContainerClass> detailedContainerClasses = class2detailedContainerClasses.get(type);
Set<@NonNull CompleteClass> containerClasses = class2containerClasses.get(type);
if (detailedContainerClasses == null) {
@@ -104,19 +104,25 @@ public class ClassRelationships
detailedContainerClasses.add(new ContainerClass(containerClass, containmentProperty));
containerClasses.add(containerClass);
- for (@NonNull CompleteClass subType : getDirectSubClasses(type)) {
- addContainerClassForTypeAndSubtypes(containerClass, containmentProperty, subType);
- }
+ // for (@NonNull CompleteClass subType : getDirectSubClasses(type)) {
+ // addContainerClassForTypeAndSubtypes(containerClass, containmentProperty, subType);
+ // }
}
- private void computeClass2ContainerClasses(@NonNull CompleteClass aClass) {
+ private void computeClass2ContainerClasses(@NonNull CompleteClass containerCompleteClass) {
- for (@NonNull Property property : aClass.getProperties(FeatureFilter.SELECT_NON_STATIC)) {
+ for (@NonNull Property property : containerCompleteClass.getProperties(FeatureFilter.SELECT_NON_STATIC)) {
if (property.isIsComposite()) {
Type propType = getType(property);
// if (propType instanceof org.eclipse.ocl.pivot.Class) {
- CompleteClass completeClass = getCompleteClass(propType);
- addContainerClassForTypeAndSubtypes(aClass, property, completeClass);
+ CompleteClass containedCompleteClass = getCompleteClass(propType);
+ for (@NonNull CompleteClass superContainedCompleteClass : getAllSuperClasses(containedCompleteClass)) {
+ addContainerClassForType(containerCompleteClass, property, superContainedCompleteClass);
+ }
+ addContainerClassForType(containerCompleteClass, property, containedCompleteClass);
+ for (@NonNull CompleteClass subContainedCompleteClass : getAllSubClasses(containedCompleteClass)) {
+ addContainerClassForType(containerCompleteClass, property, subContainedCompleteClass);
+ }
// }
}
}

Back to the top