*/
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;
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;
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 {
/**
* 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) {