X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-model-util%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fmodel%2Futil%2FDataNodeIterator.java;h=b3fcbed4f0f426530542e0914bd4fe5b5408204e;hb=20520b4759e5c5dc4e30033eb0a6aa6cd4d3e20e;hp=ed1db9a31505fc3ca961704e002862268975ca9f;hpb=f75b7abb9dcc2ba02a14a316212da1c1b434a9b3;p=yangtools.git diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/DataNodeIterator.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/DataNodeIterator.java index ed1db9a315..b3fcbed4f0 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/DataNodeIterator.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/DataNodeIterator.java @@ -8,12 +8,12 @@ package org.opendaylight.yangtools.yang.model.util; import java.util.ArrayList; +import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Set; - import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; -import org.opendaylight.yangtools.yang.model.api.ChoiceNode; +import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -24,12 +24,21 @@ import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; +/** + * DataNodeIterator is iterator, which walks down whole YANG DataNodeContainer + * and walks all instances of {@link DataSchemaNode} present in subtree. + * + * Iterator instance is eagerly created, walking happens on initialization. + * + * Iteration is not ordered. + * + */ public class DataNodeIterator implements Iterator { private final DataNodeContainer container; private final List allLists; private final List allContainers; - private final List allChoices; + private final List allChoices; private final List allChilds; private final List allGroupings; private final List> allTypedefs; @@ -50,22 +59,47 @@ public class DataNodeIterator implements Iterator { traverse(this.container); } + /** + * Returns list all containers present in subtree. + * + * @return Returns list all containers present in subtree. + */ public List allContainers() { return allContainers; } + /** + * Returns list all lists present in subtree. + * + * @return Returns list all containers present in subtree. + */ public List allLists() { return allLists; } - public List allChoices() { + /** + * Returns list all choices present in subtree. + * + * @return Returns list all containers present in subtree. + */ + public List allChoices() { return allChoices; } + /** + * Returns list all groupings present in subtree. + * + * @return Returns list all containers present in subtree. + */ public List allGroupings() { return allGroupings; } + /** + * Returns list all typedefs present in subtree. + * + * @return Returns list all containers present in subtree. + */ public List> allTypedefs() { return allTypedefs; } @@ -75,7 +109,7 @@ public class DataNodeIterator implements Iterator { return; } - final Set childNodes = dataNode.getChildNodes(); + final Iterable childNodes = dataNode.getChildNodes(); if (childNodes != null) { for (DataSchemaNode childNode : childNodes) { if (childNode.isAugmenting()) { @@ -90,8 +124,8 @@ public class DataNodeIterator implements Iterator { final ListSchemaNode list = (ListSchemaNode) childNode; allLists.add(list); traverse(list); - } else if (childNode instanceof ChoiceNode) { - final ChoiceNode choiceNode = (ChoiceNode) childNode; + } else if (childNode instanceof ChoiceSchemaNode) { + final ChoiceSchemaNode choiceNode = (ChoiceSchemaNode) childNode; allChoices.add(choiceNode); final Set cases = choiceNode.getCases(); if (cases != null) { @@ -109,7 +143,7 @@ public class DataNodeIterator implements Iterator { } - private void traverseModule(DataNodeContainer dataNode) { + private void traverseModule(final DataNodeContainer dataNode) { final Module module; if (dataNode instanceof Module) { module = (Module) dataNode; @@ -136,7 +170,7 @@ public class DataNodeIterator implements Iterator { } } - private void traverseGroupings(DataNodeContainer dataNode) { + private void traverseGroupings(final DataNodeContainer dataNode) { final Set groupings = dataNode.getGroupings(); if (groupings != null) { for (GroupingDefinition grouping : groupings) { @@ -149,7 +183,7 @@ public class DataNodeIterator implements Iterator { @Override public boolean hasNext() { if (container.getChildNodes() != null) { - final Set childNodes = container.getChildNodes(); + final Collection childNodes = container.getChildNodes(); if ((childNodes != null) && !childNodes.isEmpty()) { return childNodes.iterator().hasNext();