diff --git a/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/CallGraph.java b/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/CallGraph.java index af56ad6..1e5e8f7 100644 --- a/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/CallGraph.java +++ b/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/CallGraph.java @@ -80,9 +80,18 @@ } public Set getRootNodes() { - Set roots = new HashSet<>(getNodes()); - for (Node n : getNodes()) { - roots.removeAll(n.getSuccessors()); // Remove all child nodes of each node in the graph + Set roots = new HashSet<>(); + for (Node node : getNodes()) { + if (node instanceof StatefulObjectNode) { + StatefulObjectNode statefulObjectNode = (StatefulObjectNode) node; + if (statefulObjectNode.getResource().getResourceHierarchy().getParent() == null) { + roots.add(node); + } + } else { + if (node.getIndegree() == 0) { + roots.add(node); + } + } } return roots; }