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.AnydataNode;
import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
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;
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;
- }
+ } else if (node instanceof AnydataNode) {
+ final AnydataExtension ext = writer.getExtensions().getInstance(AnydataExtension.class);
+ if (ext != null) {
+ final AnydataNode<?> anydata = (AnydataNode<?>) node;
+ final Class<?> model = anydata.getValueObjectModel();
+ if (ext.startAnydataNode(anydata.getIdentifier(), model)) {
+ writer.scalarValue(anydata.getValue());
+ writer.endNode();
+ return true;
+ }
- private boolean writeAnydata(final OpaqueAnydataNode node) throws IOException {
- if (opaqueAnydataExt == null) {
- LOG.debug("Writer {} cannot support anydata node {}", writer, node);
- return false;
+ LOG.debug("Writer {} does not support anydata in form of {}", writer, model);
+ } else {
+ LOG.debug("Writer {} does not support anydata", writer);
+ }
}
- opaqueAnydataExt.streamOpaqueAnydataNode(node.getIdentifier(), node.getValue());
- writer.endNode();
- return true;
+ return false;
}
/**