X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fimpl%2Fschema%2Ftree%2FTreeNodeUtils.java;h=fe5f4db0bb9d914ed43ea7edf90b69e9ca3070f6;hb=36d479c1091b5a224bc9e13db657d8fce2017f88;hp=2df4ffd581c2adfb3d78a0f98744c4deea9aac7c;hpb=0beea48f5324488ddbb3c311f9c4f934c22fbcc4;p=yangtools.git diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/TreeNodeUtils.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/TreeNodeUtils.java index 2df4ffd581..fe5f4db0bb 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/TreeNodeUtils.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/TreeNodeUtils.java @@ -7,19 +7,18 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema.tree; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.google.common.collect.Iterables; + import java.util.AbstractMap.SimpleEntry; -import java.util.ArrayList; import java.util.Iterator; -import java.util.List; import java.util.Map; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument; - -import com.google.common.base.Optional; -import com.google.common.base.Preconditions; -import com.google.common.base.Predicate; -import com.google.common.base.Predicates; import org.opendaylight.yangtools.yang.data.api.schema.tree.StoreTreeNode; /** @@ -39,7 +38,7 @@ public final class TreeNodeUtils { */ public static > Optional findNode(final T tree, final InstanceIdentifier path) { Optional current = Optional. of(tree); - Iterator pathIter = path.getPath().iterator(); + Iterator pathIter = path.getPathArguments().iterator(); while (current.isPresent() && pathIter.hasNext()) { current = current.get().getChild(pathIter.next()); } @@ -48,12 +47,16 @@ public final class TreeNodeUtils { public static > T findNodeChecked(final T tree, final InstanceIdentifier path) { T current = tree; - List nested = new ArrayList<>(path.getPath().size()); - for(PathArgument pathArg : path.getPath()) { + + int i = 1; + for(PathArgument pathArg : path.getPathArguments()) { Optional potential = current.getChild(pathArg); - nested.add(pathArg); - Preconditions.checkArgument(potential.isPresent(),"Child %s is not present in tree.",nested); + if (!potential.isPresent()) { + throw new IllegalArgumentException(String.format("Child %s is not present in tree.", + Iterables.toString(Iterables.limit(path.getPathArguments(), i)))); + } current = potential.get(); + ++i; } return current; } @@ -75,14 +78,14 @@ public final class TreeNodeUtils { Optional current = Optional. of(tree); int nesting = 0; - Iterator pathIter = path.getPath().iterator(); + Iterator pathIter = path.getPathArguments().iterator(); while (current.isPresent() && pathIter.hasNext() && !predicate.apply(current.get())) { parent = current; current = current.get().getChild(pathIter.next()); nesting++; } if(current.isPresent()) { - final InstanceIdentifier currentPath = new InstanceIdentifier(path.getPath().subList(0, nesting)); + final InstanceIdentifier currentPath = InstanceIdentifier.create(path.getPath().subList(0, nesting)); return new SimpleEntry(currentPath,current.get()); } @@ -93,7 +96,7 @@ public final class TreeNodeUtils { * present. At any rate we check state just to be on the safe side. */ Preconditions.checkState(nesting > 0); - final InstanceIdentifier parentPath = new InstanceIdentifier(path.getPath().subList(0, nesting - 1)); + final InstanceIdentifier parentPath = InstanceIdentifier.create(path.getPath().subList(0, nesting - 1)); return new SimpleEntry(parentPath,parent.get()); }