diff options
author | Ed Willink | 2016-11-15 09:48:06 +0000 |
---|---|---|
committer | Ed Willink | 2016-11-15 09:48:06 +0000 |
commit | 38583a64d19ca5ba0a8e5edb2f6d100bccd0fc9a (patch) | |
tree | beff53d4a6a5944fabc8f017a9b514582bdb134c | |
parent | e1aa8b8697b6334d222f4bb3191b743aae7bfebc (diff) | |
download | org.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.java | 22 |
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); + } // } } } |