diff --git a/org.fortiss.tooling.ext.variability/src/org/fortiss/tooling/ext/variability/util/.ratings b/org.fortiss.tooling.ext.variability/src/org/fortiss/tooling/ext/variability/util/.ratings index 0c3df2c12b978b5506f351260e984d6f502cd383..0ec993944fdf47adb9be164462cefd6e2502d016 100644 --- a/org.fortiss.tooling.ext.variability/src/org/fortiss/tooling/ext/variability/util/.ratings +++ b/org.fortiss.tooling.ext.variability/src/org/fortiss/tooling/ext/variability/util/.ratings @@ -1 +1 @@ -VariabilityUtils.java 8ac97aafcbc2409ee39a5d9ee85f234a49bb2079 RED +VariabilityUtils.java ccbcc8a13557a107608130e25880f9523b84cfba YELLOW diff --git a/org.fortiss.tooling.ext.variability/src/org/fortiss/tooling/ext/variability/util/VariabilityUtils.java b/org.fortiss.tooling.ext.variability/src/org/fortiss/tooling/ext/variability/util/VariabilityUtils.java index 8ac97aafcbc2409ee39a5d9ee85f234a49bb2079..ccbcc8a13557a107608130e25880f9523b84cfba 100644 --- a/org.fortiss.tooling.ext.variability/src/org/fortiss/tooling/ext/variability/util/VariabilityUtils.java +++ b/org.fortiss.tooling.ext.variability/src/org/fortiss/tooling/ext/variability/util/VariabilityUtils.java @@ -16,6 +16,7 @@ package org.fortiss.tooling.ext.variability.util; import static org.fortiss.tooling.ext.variability.model.VariabilityModelElementFactory.createOptionalVariationPointSpecification; +import static org.fortiss.tooling.kernel.utils.EcoreUtils.getFirstChildWithType; import static org.fortiss.tooling.kernel.utils.EcoreUtils.pickFirstInstanceOf; import org.eclipse.emf.ecore.EObject; @@ -71,17 +72,14 @@ public class VariabilityUtils { return true; } - // TODO (TM): Use the methods provided by the `EcoreUtils`. `isAncestor()` can replace the - // check whether the `eContainer` is `null` and `getFirstChildWithType()` can be used to see - // whether any `AbstractFeatureModel` is present. - - // Check whether the root container contains any AbstractFeatureModel + // Find the root container (usually a FileProject) EObject topLevelElem = element; while(topLevelElem.eContainer() != null) { topLevelElem = topLevelElem.eContainer(); } - return topLevelElem.eContents().stream().anyMatch(c -> c instanceof AbstractFeatureModel); + // Check whether this root container contains any AbstractFeatureModel. + return getFirstChildWithType(topLevelElem, AbstractFeatureModel.class) != null; } /**