Bump MRI upstreams
[netconf.git] / restconf / restconf-nb-rfc8040 / src / main / java / org / opendaylight / restconf / nb / rfc8040 / jersey / providers / NormalizedNodeJsonBodyWriter.java
index 67fea4db2f9cb68f8d4943f2e71c051f46dfe1d1..0a040f44fb0037bff91d00901c89296e716a900f 100644 (file)
@@ -14,9 +14,9 @@ import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
-import java.net.URI;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import javax.ws.rs.Produces;
 import javax.ws.rs.WebApplicationException;
@@ -26,11 +26,10 @@ import javax.ws.rs.ext.MessageBodyWriter;
 import javax.ws.rs.ext.Provider;
 import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
 import org.opendaylight.restconf.common.context.NormalizedNodeContext;
-import org.opendaylight.restconf.nb.rfc8040.Rfc8040;
+import org.opendaylight.restconf.nb.rfc8040.MediaTypes;
 import org.opendaylight.restconf.nb.rfc8040.jersey.providers.api.RestconfNormalizedNodeWriter;
-import org.opendaylight.restconf.nb.rfc8040.utils.RestconfConstants;
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
+import org.opendaylight.yangtools.yang.common.XMLNamespace;
 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;
@@ -48,7 +47,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 
 @Provider
-@Produces({ Rfc8040.MediaTypes.DATA + RestconfConstants.JSON, MediaType.APPLICATION_JSON })
+@Produces({ MediaTypes.APPLICATION_YANG_DATA_JSON, MediaType.APPLICATION_JSON })
 public class NormalizedNodeJsonBodyWriter implements MessageBodyWriter<NormalizedNodeContext> {
 
     private static final int DEFAULT_INDENT_SPACES_NUM = 2;
@@ -78,7 +77,7 @@ public class NormalizedNodeJsonBodyWriter implements MessageBodyWriter<Normalize
                         final MediaType mediaType,
                         final MultivaluedMap<String, Object> httpHeaders,
                         final OutputStream entityStream) throws IOException, WebApplicationException {
-        final NormalizedNode<?, ?> data = context.getData();
+        final NormalizedNode data = context.getData();
         if (data == null) {
             return;
         }
@@ -95,10 +94,16 @@ public class NormalizedNodeJsonBodyWriter implements MessageBodyWriter<Normalize
             jsonWriter.endObject();
             jsonWriter.flush();
         }
+
+        if (httpHeaders != null) {
+            for (final Map.Entry<String, Object> entry : context.getNewHeaders().entrySet()) {
+                httpHeaders.add(entry.getKey(), entry.getValue());
+            }
+        }
     }
 
     private static void writeNormalizedNode(final JsonWriter jsonWriter,
-            final SchemaPath path, final InstanceIdentifierContext<SchemaNode> context, final NormalizedNode<?, ?> data,
+            final SchemaPath path, final InstanceIdentifierContext<SchemaNode> context, final NormalizedNode data,
             final Integer depth, final List<Set<QName>> fields) throws IOException {
         final RestconfNormalizedNodeWriter nnWriter;
 
@@ -113,7 +118,8 @@ public class NormalizedNodeJsonBodyWriter implements MessageBodyWriter<Normalize
                     jsonWriter,
                     depth,
                     fields);
-            final Module module = context.getSchemaContext().findModule(data.getNodeType().getModule()).get();
+            final Module module = context.getSchemaContext().findModule(data.getIdentifier().getNodeType().getModule())
+                .get();
             jsonWriter.name(module.getName() + ":output");
             jsonWriter.beginObject();
             writeChildren(nnWriter, (ContainerNode) data);
@@ -125,7 +131,8 @@ public class NormalizedNodeJsonBodyWriter implements MessageBodyWriter<Normalize
              */
             nnWriter = createNormalizedNodeWriter(context,
                 ((ActionDefinition) context.getSchemaNode()).getOutput().getPath(), jsonWriter, depth, fields);
-            final Module module = context.getSchemaContext().findModule(data.getNodeType().getModule()).get();
+            final Module module = context.getSchemaContext().findModule(data.getIdentifier().getNodeType().getModule())
+                .get();
             jsonWriter.name(module.getName() + ":output");
             jsonWriter.beginObject();
             writeChildren(nnWriter, (ContainerNode) data);
@@ -140,8 +147,9 @@ public class NormalizedNodeJsonBodyWriter implements MessageBodyWriter<Normalize
             if (data instanceof MapEntryNode) {
                 // Restconf allows returning one list item. We need to wrap it
                 // in map node in order to serialize it properly
-                nnWriter.write(
-                        ImmutableNodes.mapNodeBuilder(data.getNodeType()).withChild((MapEntryNode) data).build());
+                nnWriter.write(ImmutableNodes.mapNodeBuilder(data.getIdentifier().getNodeType())
+                    .withChild((MapEntryNode) data)
+                    .build());
             } else {
                 nnWriter.write(data);
             }
@@ -150,9 +158,9 @@ public class NormalizedNodeJsonBodyWriter implements MessageBodyWriter<Normalize
         nnWriter.flush();
     }
 
-    private static void writeChildren(final RestconfNormalizedNodeWriter nnWriter,
-                                      final ContainerNode data) throws IOException {
-        for (final DataContainerChild<? extends PathArgument, ?> child : data.getValue()) {
+    private static void writeChildren(final RestconfNormalizedNodeWriter nnWriter, final ContainerNode data)
+            throws IOException {
+        for (final DataContainerChild child : data.body()) {
             nnWriter.write(child);
         }
     }
@@ -170,7 +178,7 @@ public class NormalizedNodeJsonBodyWriter implements MessageBodyWriter<Normalize
         return ParameterAwareNormalizedNodeWriter.forStreamWriter(streamWriter, depth, fields);
     }
 
-    private static URI initialNamespaceFor(final SchemaNode schema) {
+    private static XMLNamespace initialNamespaceFor(final SchemaNode schema) {
         if (schema instanceof RpcDefinition) {
             return schema.getQName().getNamespace();
         }