From 9d4eabd9b1ecdeeb9a34e9bf2fc8ae49cb1a6384 Mon Sep 17 00:00:00 2001
From: Andreas Bayha <bayha@fortiss.org>
Date: Mon, 22 Aug 2022 13:38:22 +0200
Subject: [PATCH] Kernel: Improved comments and added util

Fixed review comments.

Issue-ref: 4244
Issue-URL: af3#4244

Signed-off-by: Andreas Bayha <bayha@fortiss.org>
---
 .../org/fortiss/tooling/ext/variability/util/.ratings  |  2 +-
 .../tooling/ext/variability/util/VariabilityUtils.java | 10 ++++------
 2 files changed, 5 insertions(+), 7 deletions(-)

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 0c3df2c12..0ec993944 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 8ac97aafc..ccbcc8a13 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;
 	}
 
 	/**
-- 
GitLab