Merge "BUG-461 Test transformation of rpc input using XmlDocumentUtils"
[yangtools.git] / code-generator / binding-type-provider / src / main / java / org / opendaylight / yangtools / sal / binding / yang / types / GroupingDefinitionDependencySort.java
index 2936e31e269658f60751025d8c2eb69a2a625457..b697bf99121377d019080e166d98652283ab86e5 100644 (file)
@@ -7,6 +7,9 @@
  */
 package org.opendaylight.yangtools.sal.binding.yang.types;
 
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
@@ -14,6 +17,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
@@ -24,9 +28,6 @@ import org.opendaylight.yangtools.yang.model.api.UsesNode;
 import org.opendaylight.yangtools.yang.parser.util.TopologicalSort;
 import org.opendaylight.yangtools.yang.parser.util.TopologicalSort.Node;
 
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
 public class GroupingDefinitionDependencySort {
 
     /**
@@ -131,16 +132,21 @@ public class GroupingDefinitionDependencySort {
      *            data node container which can contain some uses of grouping
      * @return set of uses nodes which were find in <code>container</code>.
      */
-    private Set<UsesNode> getAllUsesNodes(DataNodeContainer container) {
+    private Set<UsesNode> getAllUsesNodes(final DataNodeContainer container) {
         Set<UsesNode> ret = new HashSet<>();
-        ret.addAll(container.getUses());
+        Set<UsesNode> usesNodes = container.getUses();
+        ret.addAll(usesNodes);
 
+        for (UsesNode usesNode : usesNodes) {
+            for (AugmentationSchema augment : usesNode.getAugmentations()) {
+                ret.addAll(getAllUsesNodes(augment));
+            }
+        }
         Set<GroupingDefinition> groupings = container.getGroupings();
         for (GroupingDefinition groupingDefinition : groupings) {
             ret.addAll(getAllUsesNodes(groupingDefinition));
         }
-        Set<DataSchemaNode> childNodes = container.getChildNodes();
-        for (DataSchemaNode childNode : childNodes) {
+        for (DataSchemaNode childNode : container.getChildNodes()) {
             if (childNode instanceof DataNodeContainer) {
                 ret.addAll(getAllUsesNodes((DataNodeContainer) childNode));
             } else if (childNode instanceof ChoiceNode) {