X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-codec-xml%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fcodec%2Fxml%2FSchemaAwareXMLStreamNormalizedNodeStreamWriter.java;fp=yang%2Fyang-data-codec-xml%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fcodec%2Fxml%2FSchemaAwareXMLStreamNormalizedNodeStreamWriter.java;h=a4510dc8a3b3cf4c9b132a329eab9d4d859c888a;hb=f70dc9104d008928804c36233cf940010372c02c;hp=a13a1646e6e18c4a4c2b62799520bb04c64d5762;hpb=726ca9b2d502ea846ba2be5c8605afd78e28f1a6;p=yangtools.git diff --git a/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemaAwareXMLStreamNormalizedNodeStreamWriter.java b/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemaAwareXMLStreamNormalizedNodeStreamWriter.java index a13a1646e6..a4510dc8a3 100644 --- a/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemaAwareXMLStreamNormalizedNodeStreamWriter.java +++ b/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemaAwareXMLStreamNormalizedNodeStreamWriter.java @@ -8,13 +8,17 @@ */ package org.opendaylight.yangtools.yang.data.codec.xml; +import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkState; import static java.util.Objects.requireNonNull; import java.io.IOException; +import java.util.Optional; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; import javax.xml.transform.dom.DOMSource; +import org.opendaylight.yangtools.rfc7952.model.api.AnnotationSchemaNode; +import org.opendaylight.yangtools.yang.common.QName; 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; @@ -47,6 +51,20 @@ final class SchemaAwareXMLStreamNormalizedNodeStreamWriter extends XMLStreamNorm return streamUtils.encodeValue(xmlWriter, schemaNode, value, schemaNode.getQName().getModule()); } + @Override + String encodeAnnotationValue(final ValueWriter xmlWriter, final QName qname, final Object value) + throws XMLStreamException { + final Optional optAnnotation = AnnotationSchemaNode.find(streamUtils.getSchemaContext(), + qname); + if (optAnnotation.isPresent()) { + return streamUtils.encodeValue(xmlWriter, optAnnotation.get(), value, qname.getModule()); + } + + checkArgument(!qname.getRevision().isPresent(), "Failed to find bound annotation %s", qname); + checkArgument(value instanceof String, "Invalid non-string value %s for unbound annotation %s", value, qname); + return (String) value; + } + @Override void startList(final NodeIdentifier name) { tracker.startList(name);