X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-rest-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frest%2Fimpl%2FNormalizedNodeXmlBodyWriter.java;h=f61ec4e1c0941abef0fee706962b6a732af9c858;hb=d8d8f731bbe6c58fcbd0e616734e2e230aaf4ab4;hp=c8c702295d845059aa1498cb68e1d66f5ee4427f;hpb=4fc158fdb5e38ad492c1bccc6b1e70f0c0255560;p=controller.git diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/NormalizedNodeXmlBodyWriter.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/NormalizedNodeXmlBodyWriter.java index c8c702295d..f61ec4e1c0 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/NormalizedNodeXmlBodyWriter.java +++ b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/NormalizedNodeXmlBodyWriter.java @@ -8,7 +8,6 @@ package org.opendaylight.controller.sal.rest.impl; import com.google.common.base.Throwables; -import com.google.common.collect.Iterables; import java.io.IOException; import java.io.OutputStream; import java.lang.annotation.Annotation; @@ -37,9 +36,9 @@ import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStre import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter; import org.opendaylight.yangtools.yang.data.impl.codec.xml.XMLStreamNormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; +import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; -import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil; @Provider @Produces({ Draft02.MediaTypes.API + RestconfService.XML, Draft02.MediaTypes.DATA + RestconfService.XML, @@ -70,7 +69,7 @@ public class NormalizedNodeXmlBodyWriter implements MessageBodyWriter httpHeaders, final OutputStream entityStream) throws IOException, WebApplicationException { - final InstanceIdentifierContext pathContext = t.getInstanceIdentifierContext(); + final InstanceIdentifierContext pathContext = t.getInstanceIdentifierContext(); if (t.getData() == null) { return; } @@ -86,29 +85,21 @@ public class NormalizedNodeXmlBodyWriter implements MessageBodyWriter data = t.getData(); SchemaPath schemaPath = pathContext.getSchemaNode().getPath(); - // The utility method requires the path to be size of 2 - boolean isRpc = false; - if(Iterables.size(schemaPath.getPathFromRoot()) > 1) { - isRpc = SchemaContextUtil.getRpcDataSchema(t.getInstanceIdentifierContext().getSchemaContext(), schemaPath) != null; - } - boolean isDataRoot = false; if (SchemaPath.ROOT.equals(schemaPath)) { isDataRoot = true; - // The rpc definitions required the schema path to point to the output container, not the parent (rpc itself) + } else if (pathContext.getSchemaNode() instanceof RpcDefinition) { + isDataRoot = true; + schemaPath = ((RpcDefinition) pathContext.getSchemaNode()).getOutput().getPath(); } else { - if(!isRpc) { - schemaPath = schemaPath.getParent(); - } + schemaPath = schemaPath.getParent(); } final NormalizedNodeStreamWriter jsonWriter = XMLStreamNormalizedNodeStreamWriter.create(xmlWriter, pathContext.getSchemaContext(), schemaPath); final NormalizedNodeWriter nnWriter = NormalizedNodeWriter.forStreamWriter(jsonWriter); if (isDataRoot) { - writeRootElement(xmlWriter, nnWriter, (ContainerNode) data, SchemaContext.NAME); - } else if(isRpc) { - writeRootElement(xmlWriter, nnWriter, (ContainerNode) data, schemaPath.getLastComponent()); + writeRootElement(xmlWriter, nnWriter, (ContainerNode) data); } else { if (data instanceof MapEntryNode) { // Restconf allows returning one list item. We need to wrap it @@ -120,9 +111,10 @@ public class NormalizedNodeXmlBodyWriter implements MessageBodyWriter child : data.getValue()) { nnWriter.write(child);