Add convenience methods for XML codec
[yangtools.git] / data / yang-data-util / src / main / java / org / opendaylight / yangtools / yang / data / util / NormalizedNodeStreamWriterStack.java
index 686e0d8739bdbdd8c5a769f13d9386d8e6c9fde7..35b16a9e422178e8e3842681c27b35cc6a5dd73b 100644 (file)
@@ -22,6 +22,7 @@ import java.util.Set;
 import java.util.stream.Collectors;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
@@ -136,6 +137,23 @@ public final class NormalizedNodeStreamWriterStack implements LeafrefResolver {
         return new NormalizedNodeStreamWriterStack(SchemaInferenceStack.of(context, path));
     }
 
+    /**
+     * Create a new writer with the specified context and rooted in the specified {@link YangInstanceIdentifier}..
+     *
+     * @param context Associated {@link EffectiveModelContext}
+     * @param path Normalized path
+     * @return A new {@link NormalizedNodeStreamWriterStack}
+     * @throws NullPointerException if any argument is null
+     * @throws IllegalArgumentException if {@code path} does not point to a valid root
+     */
+    public static @NonNull NormalizedNodeStreamWriterStack of(final EffectiveModelContext context,
+            final YangInstanceIdentifier path) {
+        return new NormalizedNodeStreamWriterStack(DataSchemaContextTree.from(context)
+            .enterPath(path)
+            .orElseThrow()
+            .stack());
+    }
+
     /**
      * Create a new writer with the specified context and rooted in the specified schema path.
      *