package org.opendaylight.netconf.mdsal.connector.ops.get;
import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
import com.google.common.collect.Iterables;
import java.io.IOException;
+import java.util.Optional;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
+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.stream.NormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter;
protected Node transformNormalizedNode(final Document document, final NormalizedNode<?, ?> data,
final YangInstanceIdentifier dataRoot) {
+
final DOMResult result = new DOMResult(document.createElement(XmlNetconfConstants.DATA_KEY));
final XMLStreamWriter xmlWriter = getXmlStreamWriter(result);
final NormalizedNodeWriter nnWriter = NormalizedNodeWriter.forStreamWriter(nnStreamWriter, true);
- writeRootElement(xmlWriter, nnWriter, (ContainerNode) data);
+ if (data instanceof ContainerNode) {
+ writeRootElement(xmlWriter, nnWriter, (ContainerNode) data);
+ } else if (data instanceof MapNode) {
+ writeRootElement(xmlWriter, nnWriter, (MapNode) data);
+ } else {
+ throw new IllegalArgumentException("Unable to transform node of type: " + data.getClass().toString()
+ + " offending node: " + data.toString());
+ }
+
return result.getNode();
}
}
}
+ private static void writeRootElement(final XMLStreamWriter xmlWriter, final NormalizedNodeWriter nnWriter,
+ final MapNode data) {
+ try {
+ if (data.getNodeType().equals(SchemaContext.NAME)) {
+ for (final MapEntryNode child : data.getValue()) {
+ nnWriter.write(child);
+ }
+ } else {
+ nnWriter.write(data);
+ }
+ nnWriter.flush();
+ xmlWriter.flush();
+ } catch (XMLStreamException | IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
protected Element serializeNodeWithParentStructure(final Document document, final YangInstanceIdentifier dataRoot,
final NormalizedNode<?, ?> node) {
if (!dataRoot.equals(ROOT)) {
final Optional<XmlElement> filterElement = operationElement.getOnlyChildElementOptionally(FILTER);
if (filterElement.isPresent()) {
if (filterElement.get().getChildElements().size() == 0) {
- return Optional.absent();
+ return Optional.empty();
}
return Optional.of(getInstanceIdentifierFromFilter(filterElement.get()));
}
private static Optional<Datastore> parseSource(final XmlElement xml) throws DocumentedException {
final Optional<XmlElement> sourceElement = xml.getOnlyChildElementOptionally(XmlNetconfConstants.SOURCE_KEY,
XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0);
-
return sourceElement.isPresent()
? Optional.of(Datastore.valueOf(sourceElement.get().getOnlyChildElement().getName()))
- : Optional.absent();
+ : Optional.empty();
}
private static void validateInputRpc(final XmlElement xml, final String operationName) throws