Integrate RestconfNormalizedNodeWriter
[netconf.git] / restconf / restconf-nb / src / main / java / org / opendaylight / restconf / nb / rfc8040 / jersey / providers / AbstractNormalizedNodeBodyWriter.java
index fcdd638ee20e04df11a416abd425903886a28ac6..8bf81af721114a881f095d49cc5e92af1fa1c631 100644 (file)
@@ -7,11 +7,21 @@
  */
 package org.opendaylight.restconf.nb.rfc8040.jersey.providers;
 
+import static java.util.Objects.requireNonNull;
+
+import java.io.IOException;
+import java.io.OutputStream;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.ext.MessageBodyWriter;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
 import org.opendaylight.restconf.nb.rfc8040.legacy.NormalizedNodePayload;
+import org.opendaylight.restconf.nb.rfc8040.legacy.WriterParameters;
+import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
 
 abstract class AbstractNormalizedNodeBodyWriter implements MessageBodyWriter<NormalizedNodePayload> {
     @Override
@@ -19,4 +29,16 @@ abstract class AbstractNormalizedNodeBodyWriter implements MessageBodyWriter<Nor
             final MediaType mediaType) {
         return type.equals(NormalizedNodePayload.class);
     }
+
+    @Override
+    public final void writeTo(final NormalizedNodePayload context, final Class<?> type, final Type genericType,
+            final Annotation[] annotations, final MediaType mediaType, final MultivaluedMap<String, Object> httpHeaders,
+            final OutputStream entityStream) throws IOException {
+        writeData(context.inference().toSchemaInferenceStack(), context.data(), context.writerParameters(),
+            context.prettyPrint(), requireNonNull(entityStream));
+    }
+
+    @NonNullByDefault
+    abstract void writeData(SchemaInferenceStack stack, NormalizedNode data, WriterParameters writerParameters,
+        PrettyPrintParam prettyPrint, OutputStream out) throws IOException;
 }