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.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.codec.xml.XMLStreamNormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
final MediaType mediaType,
final MultivaluedMap<String, Object> httpHeaders,
final OutputStream entityStream) throws IOException, WebApplicationException {
- final InstanceIdentifierContext<?> pathContext = context.getInstanceIdentifierContext();
+ final InstanceIdentifierContext pathContext = context.getInstanceIdentifierContext();
if (context.getData() == null) {
return;
}
}
private static void writeNormalizedNode(final XMLStreamWriter xmlWriter, final SchemaPath path,
- final InstanceIdentifierContext<?> pathContext, final NormalizedNode data, final DepthParam depth,
+ final InstanceIdentifierContext pathContext, final NormalizedNode data, final DepthParam depth,
final List<Set<QName>> fields) throws IOException {
final RestconfNormalizedNodeWriter nnWriter;
final EffectiveModelContext schemaCtx = pathContext.getSchemaContext();
nnWriter.write(ImmutableNodes.mapNodeBuilder(data.getIdentifier().getNodeType())
.addChild((MapEntryNode) data)
.build());
- } else {
- if (isRoot && data instanceof ContainerNode && ((ContainerNode) data).isEmpty()) {
+ } else if (isRoot) {
+ if (data instanceof ContainerNode && ((ContainerNode) data).isEmpty()) {
writeEmptyDataNode(xmlWriter, data);
} else {
- nnWriter.write(data);
+ writeAndWrapInDataNode(xmlWriter, nnWriter, data);
}
+ } else {
+ nnWriter.write(data);
}
}
nnWriter.flush();
}
- private static void writeEmptyDataNode(final XMLStreamWriter xmlWriter, final NormalizedNode data)
- throws IOException {
+ private static RestconfNormalizedNodeWriter createNormalizedNodeWriter(final XMLStreamWriter xmlWriter,
+ final EffectiveModelContext schemaContext, final SchemaPath schemaPath, final DepthParam depth,
+ final List<Set<QName>> fields) {
+ return ParameterAwareNormalizedNodeWriter.forStreamWriter(
+ XMLStreamNormalizedNodeStreamWriter.create(xmlWriter, schemaContext, schemaPath), depth, fields);
+ }
+
+ private static void writeAndWrapInDataNode(final XMLStreamWriter xmlWriter,
+ final RestconfNormalizedNodeWriter nnWriter, final NormalizedNode data) throws IOException {
final QName nodeType = data.getIdentifier().getNodeType();
final String namespace = nodeType.getNamespace().toString();
try {
xmlWriter.writeStartElement(XMLConstants.DEFAULT_NS_PREFIX, nodeType.getLocalName(), namespace);
xmlWriter.writeDefaultNamespace(namespace);
+ nnWriter.write(data);
xmlWriter.writeEndElement();
xmlWriter.flush();
} catch (XMLStreamException e) {
}
}
- private static RestconfNormalizedNodeWriter createNormalizedNodeWriter(final XMLStreamWriter xmlWriter,
- final EffectiveModelContext schemaContext, final SchemaPath schemaPath, final DepthParam depth,
- final List<Set<QName>> fields) {
- final NormalizedNodeStreamWriter xmlStreamWriter = XMLStreamNormalizedNodeStreamWriter
- .create(xmlWriter, schemaContext, schemaPath);
- return ParameterAwareNormalizedNodeWriter.forStreamWriter(xmlStreamWriter, depth, fields);
+ private static void writeEmptyDataNode(final XMLStreamWriter xmlWriter, final NormalizedNode data)
+ throws IOException {
+ final QName nodeType = data.getIdentifier().getNodeType();
+ final String namespace = nodeType.getNamespace().toString();
+ try {
+ xmlWriter.writeStartElement(XMLConstants.DEFAULT_NS_PREFIX, nodeType.getLocalName(), namespace);
+ xmlWriter.writeDefaultNamespace(namespace);
+ xmlWriter.writeEndElement();
+ xmlWriter.flush();
+ } catch (XMLStreamException e) {
+ throw new IOException("Failed to write elements", e);
+ }
}
private static void writeElements(final XMLStreamWriter xmlWriter, final RestconfNormalizedNodeWriter nnWriter,
final ContainerNode data) throws IOException {
- final QName name = data.getIdentifier().getNodeType();
+ final QName nodeType = data.getIdentifier().getNodeType();
+ final String namespace = nodeType.getNamespace().toString();
try {
- xmlWriter.writeStartElement(XMLConstants.DEFAULT_NS_PREFIX,
- name.getLocalName(), name.getNamespace().toString());
- xmlWriter.writeDefaultNamespace(name.getNamespace().toString());
+ xmlWriter.writeStartElement(XMLConstants.DEFAULT_NS_PREFIX, nodeType.getLocalName(), namespace);
+ xmlWriter.writeDefaultNamespace(namespace);
for (final NormalizedNode child : data.body()) {
nnWriter.write(child);
}