Do not consider query depth in initial namespace 90/87390/4
authorwsx25289 <10200860@zte.com.cn>
Mon, 3 Feb 2020 10:57:49 +0000 (05:57 -0500)
committerRobert Varga <nite@hq.sk>
Tue, 7 Apr 2020 04:35:30 +0000 (04:35 +0000)
Initial namespace is independent of the maximum depth requested
by the user. This is a mixup with path depth introduced in the
previous fix for NETCONF-497.

Change-Id: I90fdcc60b2be0891082333490d77d681ecc4fc4a
Signed-off-by: Wsx25289 <10200860@zte.com.cn>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/NormalizedNodeJsonBodyWriter.java
restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/services/impl/JSONRestconfServiceRfc8040ImplTest.java

index 1272a0fee43726a0738b723b293b5460ebb130b5..67fea4db2f9cb68f8d4943f2e71c051f46dfe1d1 100644 (file)
@@ -42,10 +42,8 @@ import org.opendaylight.yangtools.yang.data.codec.gson.JSONNormalizedNodeStreamW
 import org.opendaylight.yangtools.yang.data.codec.gson.JsonWriterFactory;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 
@@ -167,21 +165,17 @@ public class NormalizedNodeJsonBodyWriter implements MessageBodyWriter<Normalize
         final JSONCodecFactory codecs = getCodecFactory(context);
 
         final NormalizedNodeStreamWriter streamWriter = JSONNormalizedNodeStreamWriter.createNestedWriter(
-                codecs, path, initialNamespaceFor(schema, depth), jsonWriter);
+                codecs, path, initialNamespaceFor(schema), jsonWriter);
 
         return ParameterAwareNormalizedNodeWriter.forStreamWriter(streamWriter, depth, fields);
     }
 
-    private static URI initialNamespaceFor(final SchemaNode schema, final Integer depth) {
+    private static URI initialNamespaceFor(final SchemaNode schema) {
         if (schema instanceof RpcDefinition) {
             return schema.getQName().getNamespace();
         }
         // For top-level elements we always want to use namespace prefix, hence use a null initial namespace
-        if (depth == null || depth == 0 || schema instanceof SchemaContext) {
-            return null;
-        }
-        return schema instanceof DataSchemaNode && !((DataSchemaNode)schema).isAugmenting()
-                ? schema.getQName().getNamespace() : null;
+        return null;
     }
 
     private static JsonWriter createJsonWriter(final OutputStream entityStream, final boolean prettyPrint) {
index c15d545c890175b04dd6fa7f2d4db33bfe7c1359..a29f9a1cdf2585fd18c9dcc4a879965cab3c3c13 100644 (file)
@@ -565,7 +565,6 @@ public class JSONRestconfServiceRfc8040ImplTest {
         assertNotNull("Returned null response", jsonResp);
         assertThat("Top level module has incorrect format", jsonResp, containsString("\"ietf-interfaces:interface\""));
         assertThat("Missing \"name\"", jsonResp, containsString("\"name\":\"eth0\""));
-        assertThat("Missing \"name\"", jsonResp, containsString("\"name\":\"eth0\""));
         assertThat("Missing \"type\"", jsonResp, containsString("\"type\":\"ethernetCsmacd\""));
         assertThat("Missing \"enabled\"", jsonResp, containsString("\"enabled\":true"));
         assertThat("Missing \"description\"", jsonResp, containsString("\"description\":\"eth interface\""));