X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fnetconf-cli%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fcli%2Freader%2Fimpl%2FAnyXmlReader.java;h=a8d2590f562edc1cddc1965efe9726c3d9015d32;hp=2ce2f6448b2f5bcad5ee36bd91b9dae25932d278;hb=c31a6fcf9fb070d4419ca4c32d8b531fdcb5030d;hpb=492324f1b08f853084217c3fa8b628f551bb81ad diff --git a/opendaylight/netconf/netconf-cli/src/main/java/org/opendaylight/controller/netconf/cli/reader/impl/AnyXmlReader.java b/opendaylight/netconf/netconf-cli/src/main/java/org/opendaylight/controller/netconf/cli/reader/impl/AnyXmlReader.java index 2ce2f6448b..a8d2590f56 100644 --- a/opendaylight/netconf/netconf-cli/src/main/java/org/opendaylight/controller/netconf/cli/reader/impl/AnyXmlReader.java +++ b/opendaylight/netconf/netconf-cli/src/main/java/org/opendaylight/controller/netconf/cli/reader/impl/AnyXmlReader.java @@ -21,9 +21,13 @@ import org.opendaylight.controller.netconf.cli.io.ConsoleIO; import org.opendaylight.controller.netconf.cli.reader.AbstractReader; import org.opendaylight.controller.netconf.cli.reader.ReadingException; import org.opendaylight.controller.netconf.util.xml.XmlUtil; -import org.opendaylight.yangtools.yang.data.api.Node; -import org.opendaylight.yangtools.yang.data.impl.NodeFactory; -import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlDocumentUtils; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; +import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; +import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; +import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder; +import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils; +import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser.DomToNormalizedNodeParserFactory; import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.w3c.dom.Document; @@ -40,32 +44,38 @@ public class AnyXmlReader extends AbstractReader { } @Override - protected List> readWithContext(final AnyXmlSchemaNode schemaNode) throws IOException, ReadingException { + protected List> readWithContext(final AnyXmlSchemaNode schemaNode) throws IOException, ReadingException { console.writeLn(listType(schemaNode) + " " + schemaNode.getQName().getLocalName()); final String rawValue = console.read(); - Node newNode = null; + DataContainerChild newNode = null; if (!isSkipInput(rawValue)) { - final Optional> value = tryParse(rawValue); + final Optional> value = tryParse(rawValue, schemaNode); if (value.isPresent()) { - newNode = NodeFactory.createImmutableCompositeNode(schemaNode.getQName(), null, - Collections.> singletonList(value.get())); + newNode = ImmutableContainerNodeBuilder.create() + .withNodeIdentifier(new NodeIdentifier(schemaNode.getQName())) + .withChild(value.get()).build(); } else { - newNode = NodeFactory.createImmutableSimpleNode(schemaNode.getQName(), null, rawValue); + newNode = ImmutableLeafNodeBuilder.create().withNodeIdentifier(new NodeIdentifier(schemaNode.getQName())).withValue(rawValue).build(); } } - final List> newNodes = new ArrayList<>(); + final List> newNodes = new ArrayList<>(); newNodes.add(newNode); return newNodes; } - private Optional> tryParse(final String rawValue) { + private Optional> tryParse(final String rawValue, final AnyXmlSchemaNode schemaNode) { try { final Document dom = XmlUtil.readXmlToDocument(rawValue); - return Optional.> of(XmlDocumentUtils.toDomNode(dom)); + return Optional.> of( + DomToNormalizedNodeParserFactory. + getInstance(DomUtils.defaultValueCodecProvider(), getSchemaContext()). + getAnyXmlNodeParser(). + parse(Collections.singletonList(dom.getDocumentElement()), schemaNode) + ); } catch (SAXException | IOException e) { // TODO log return Optional.absent();