X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fsal%2Fyang-prototype%2Fyang%2Fyang-model-util%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fyang%2Fmodel%2Futil%2FDataNodeIterator.java;h=7c26531f37efbddd520b31623539d011511719f7;hb=ff1b4a79cca00743a00c3b0b1100bd0ab2b2fb31;hp=ded4a75179113327683a084bf15425b7b3f91d8d;hpb=f9de1cd89c17888a2bd02486d5f7519f0b391bba;p=controller.git diff --git a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/DataNodeIterator.java b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/DataNodeIterator.java index ded4a75179..7c26531f37 100644 --- a/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/DataNodeIterator.java +++ b/opendaylight/sal/yang-prototype/yang/yang-model-util/src/main/java/org/opendaylight/controller/yang/model/util/DataNodeIterator.java @@ -8,59 +8,65 @@ import java.util.Set; import org.opendaylight.controller.yang.model.api.ContainerSchemaNode; import org.opendaylight.controller.yang.model.api.DataNodeContainer; import org.opendaylight.controller.yang.model.api.DataSchemaNode; +import org.opendaylight.controller.yang.model.api.GroupingDefinition; import org.opendaylight.controller.yang.model.api.LeafListSchemaNode; import org.opendaylight.controller.yang.model.api.LeafSchemaNode; import org.opendaylight.controller.yang.model.api.ListSchemaNode; public class DataNodeIterator implements Iterator { - + private final DataNodeContainer container; - private final List allLists; - private final List allContainers; - private final List allLeafs; - private final List allLeafLists; - private final List allChilds; - + private List allLists; + private List allContainers; + private List allLeafs; + private List allLeafLists; + private List allChilds; + public DataNodeIterator(final DataNodeContainer container) { if (container == null) { - throw new IllegalArgumentException("Data Node Container MUST be specified!"); + throw new IllegalArgumentException("Data Node Container MUST be specified and cannot be NULL!"); } - + + init(); + this.container = container; + traverse(this.container); + } + + private void init() { this.allContainers = new ArrayList(); this.allLists = new ArrayList(); this.allLeafs = new ArrayList(); this.allLeafLists = new ArrayList(); this.allChilds = new ArrayList(); - - this.container = container; - - traverse(this.container); } - + public List allContainers() { return allContainers; } - + public List allLists() { return allLists; } - + public List allLeafs() { return allLeafs; } - + public List allLeafLists() { return allLeafLists; } - + private void traverse(final DataNodeContainer dataNode) { - if (!containChildDataNodeContainer(dataNode)) { + if (dataNode == null) { return; } final Set childs = dataNode.getChildNodes(); if (childs != null) { for (DataSchemaNode childNode : childs) { + if (childNode.isAugmenting()) { + continue; + } allChilds.add(childNode); if (childNode instanceof ContainerSchemaNode) { final ContainerSchemaNode container = (ContainerSchemaNode) childNode; @@ -79,38 +85,20 @@ public class DataNodeIterator implements Iterator { } } } - } - /** - * Returns true if and only if the child node contain at least - * one child container schema node or child list schema node, otherwise will - * always returns false - * - * @param container - * @return true if and only if the child node contain at least - * one child container schema node or child list schema node, - * otherwise will always returns false - */ - private boolean containChildDataNodeContainer( - final DataNodeContainer container) { - if (container != null) { - final Set childs = container.getChildNodes(); - if ((childs != null) && (childs.size() > 0)) { - for (final DataSchemaNode childNode : childs) { - if (childNode instanceof DataNodeContainer) { - return true; - } - } + final Set groupings = dataNode.getGroupings(); + if(groupings != null) { + for(GroupingDefinition grouping : groupings) { + traverse(grouping); } } - return false; } - + @Override public boolean hasNext() { if (container.getChildNodes() != null) { Set childs = container.getChildNodes(); - + if ((childs != null) && !childs.isEmpty()) { return childs.iterator().hasNext(); }