import java.util.Optional;
import java.util.Set;
import javax.xml.stream.XMLStreamReader;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.AnyXmlNode;
import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+import org.opendaylight.yangtools.yang.data.api.schema.OpaqueAnydataNode;
import org.opendaylight.yangtools.yang.data.api.schema.OrderedLeafSetNode;
import org.opendaylight.yangtools.yang.data.api.schema.OrderedMapNode;
import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListEntryNode;
*/
@Beta
public class NormalizedNodeWriter implements Closeable, Flushable {
- private final NormalizedNodeStreamWriter writer;
+ private static final Logger LOG = LoggerFactory.getLogger(NormalizedNodeWriter.class);
+
+ private final @NonNull NormalizedNodeStreamWriter writer;
+ private final @Nullable OpaqueAnydataExtension opaqueAnydataExt;
protected NormalizedNodeWriter(final NormalizedNodeStreamWriter writer) {
this.writer = requireNonNull(writer);
+ opaqueAnydataExt = writer.getExtensions().getInstance(OpaqueAnydataExtension.class);
}
protected final NormalizedNodeStreamWriter getWriter() {
writer.domSourceValue(anyXmlNode.getValue());
writer.endNode();
return true;
+ } else if (node instanceof OpaqueAnydataNode) {
+ return writeAnydata((OpaqueAnydataNode) node);
}
-
return false;
}
+ private boolean writeAnydata(final OpaqueAnydataNode node) throws IOException {
+ if (opaqueAnydataExt == null) {
+ LOG.debug("Writer {} cannot support anydata node {}", writer, node);
+ return false;
+ }
+
+ opaqueAnydataExt.streamOpaqueAnydataNode(node.getIdentifier(), node.getValue());
+ writer.endNode();
+ return true;
+ }
+
/**
* Emit events for all children and then emit an endNode() event.
*