This refactors XMLStreamWriterUtils, so that it can be a proper
SchemaContextProvider. This allows us to propagate this property
through SchemaAwareXMLStreamNormalizedNodeStreamWriter the same
way.
Change-Id: Ibe0832e76d3e66ca27f8d345f7fd6f890b92f35e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit
9c73f586bfae63818e0ded04dd8282d4c7c8e468)
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-final class SchemaAwareXMLStreamNormalizedNodeStreamWriter extends XMLStreamNormalizedNodeStreamWriter<SchemaNode> {
+final class SchemaAwareXMLStreamNormalizedNodeStreamWriter extends XMLStreamNormalizedNodeStreamWriter<SchemaNode>
+ implements SchemaContextProvider {
private final SchemaTracker tracker;
- private final XMLStreamWriterUtils streamUtils;
+ private final SchemaAwareXMLStreamWriterUtils streamUtils;
private SchemaAwareXMLStreamNormalizedNodeStreamWriter(final XMLStreamWriter writer, final SchemaContext context,
final SchemaPath path) {
super(writer);
this.tracker = SchemaTracker.create(context, path);
- this.streamUtils = XMLStreamWriterUtils.create(context);
+ this.streamUtils = new SchemaAwareXMLStreamWriterUtils(context);
}
static NormalizedNodeStreamWriter newInstance(final XMLStreamWriter writer, final SchemaContext context,
final AnyXmlSchemaNode schema = tracker.anyxmlNode(name);
anyxmlNode(schema.getQName(), value);
}
+
+ @Override
+ public SchemaContext getSchemaContext() {
+ return streamUtils.getSchemaContext();
+ }
}
import javax.xml.stream.XMLStreamWriter;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition;
import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil;
-final class SchemaAwareXMLStreamWriterUtils extends XMLStreamWriterUtils {
+final class SchemaAwareXMLStreamWriterUtils extends XMLStreamWriterUtils implements SchemaContextProvider {
private final SchemaContext schemaContext;
SchemaAwareXMLStreamWriterUtils(final SchemaContext schemaContext) {
writer.writeCharacters(serializedValue);
}
+
+ @Override
+ public SchemaContext getSchemaContext() {
+ return schemaContext;
+ }
}
import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.TypedDataSchemaNode;
abstract class XMLStreamWriterUtils {
private static final Logger LOG = LoggerFactory.getLogger(XMLStreamWriterUtils.class);
- static XMLStreamWriterUtils create(final SchemaContext schemaContext) {
- return schemaContext == null ? SchemalessXMLStreamWriterUtils.INSTANCE
- : new SchemaAwareXMLStreamWriterUtils(schemaContext);
- }
-
@VisibleForTesting
static void writeAttribute(final XMLStreamWriter writer, final Entry<QName, String> attribute,
final RandomPrefix randomPrefix) throws XMLStreamException {