Add SchemaNodeIdentifier-based lookup in NormalizedNodes 09/87809/3
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 17 Feb 2020 12:16:33 +0000 (13:16 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 17 Feb 2020 13:59:33 +0000 (14:59 +0100)
SchemaPath is ugly and does not really work, add an alternative
which works on well-defined SchemaNodeIdentifier.Descendant.

JIRA: YANGTOOLS-1083
Change-Id: I4ce5ccd6cebaecbc7620aebf226c9d68f1112a85
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodes.java

index 3b92321f54d18394750167cdf8982e6848a91674..2cb149e1a6f4f751099eb3ce9869bdd2c123788e 100644 (file)
@@ -25,6 +25,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdent
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Descendant;
 
 /**
  * A set of utility methods for interacting with {@link NormalizedNode} objects.
@@ -82,6 +83,11 @@ public final class NormalizedNodes {
             NodeIdentifier::new));
     }
 
+    public static Optional<NormalizedNode<?, ?>> findNode(final NormalizedNode<?, ?> parent, final Descendant path) {
+        return findNode(Optional.ofNullable(parent),
+            Iterables.transform(path.getNodeIdentifiers(), NodeIdentifier::new));
+    }
+
     public static Optional<NormalizedNode<?, ?>> findNode(final NormalizedNode<?, ?> parent,
             final PathArgument... relativePath) {
         return findNode(parent, Arrays.asList(relativePath));