Centralize AbstractPatchStatusBodyWriter.writeBody()
[netconf.git] / restconf / restconf-nb / src / main / java / org / opendaylight / restconf / nb / rfc8040 / jersey / providers / XmlPatchStatusBodyWriter.java
index 2cf01f1d5adc24701b5ee7a240d4009f70c6b0d0..533519b745dc48d6e2697d8dc8153588f864a1b7 100644 (file)
@@ -9,23 +9,18 @@ package org.opendaylight.restconf.nb.rfc8040.jersey.providers;
 
 import java.io.IOException;
 import java.io.OutputStream;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
 import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.ext.Provider;
 import javax.xml.stream.XMLOutputFactory;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
+import org.opendaylight.restconf.api.MediaTypes;
 import org.opendaylight.restconf.common.errors.RestconfError;
-import org.opendaylight.restconf.common.patch.PatchStatusContext;
-import org.opendaylight.restconf.nb.rfc8040.MediaTypes;
+import org.opendaylight.restconf.server.api.DatabindContext;
+import org.opendaylight.restconf.server.api.PatchStatusContext;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.patch.rev170222.yang.patch.status.YangPatchStatus;
-import org.opendaylight.yangtools.yang.data.codec.xml.XmlCodecFactory;
-import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 
 @Provider
 @Produces(MediaTypes.APPLICATION_YANG_DATA_XML)
@@ -39,35 +34,31 @@ public class XmlPatchStatusBodyWriter extends AbstractPatchStatusBodyWriter {
     }
 
     @Override
-    public void writeTo(final PatchStatusContext patchStatusContext, final Class<?> type, final Type genericType,
-                        final Annotation[] annotations, final MediaType mediaType,
-                        final MultivaluedMap<String, Object> httpHeaders, final OutputStream entityStream)
-            throws IOException {
+    void writeTo(final PatchStatusContext body, final OutputStream out) throws IOException {
         try {
-            final XMLStreamWriter xmlWriter =
-                    XML_FACTORY.createXMLStreamWriter(entityStream, StandardCharsets.UTF_8.name());
-            writeDocument(xmlWriter, patchStatusContext);
+            final var xmlWriter = XML_FACTORY.createXMLStreamWriter(out, StandardCharsets.UTF_8.name());
+            writeDocument(xmlWriter, body);
         } catch (final XMLStreamException e) {
             throw new IOException("Failed to write body", e);
         }
     }
 
-    private static void writeDocument(final XMLStreamWriter writer, final PatchStatusContext context)
+    private static void writeDocument(final XMLStreamWriter writer, final PatchStatusContext body)
             throws XMLStreamException {
         writer.writeStartElement("", "yang-patch-status", XML_NAMESPACE);
         writer.writeStartElement("patch-id");
-        writer.writeCharacters(context.patchId());
+        writer.writeCharacters(body.patchId());
         writer.writeEndElement();
 
-        if (context.ok()) {
+        if (body.ok()) {
             writer.writeEmptyElement("ok");
         } else {
-            final var globalErrors = context.globalErrors();
+            final var globalErrors = body.globalErrors();
             if (globalErrors != null) {
-                reportErrors(context.context(), globalErrors, writer);
+                reportErrors(body.databind(), globalErrors, writer);
             } else {
                 writer.writeStartElement("edit-status");
-                for (var patchStatusEntity : context.editCollection()) {
+                for (var patchStatusEntity : body.editCollection()) {
                     writer.writeStartElement("edit");
                     writer.writeStartElement("edit-id");
                     writer.writeCharacters(patchStatusEntity.getEditId());
@@ -75,7 +66,7 @@ public class XmlPatchStatusBodyWriter extends AbstractPatchStatusBodyWriter {
 
                     final var editErrors = patchStatusEntity.getEditErrors();
                     if (editErrors != null) {
-                        reportErrors(context.context(), editErrors, writer);
+                        reportErrors(body.databind(), editErrors, writer);
                     } else if (patchStatusEntity.isOk()) {
                         writer.writeEmptyElement("ok");
                     }
@@ -88,7 +79,7 @@ public class XmlPatchStatusBodyWriter extends AbstractPatchStatusBodyWriter {
         writer.flush();
     }
 
-    private static void reportErrors(final EffectiveModelContext modelContext, final List<RestconfError> errors,
+    private static void reportErrors(final DatabindContext databind, final List<RestconfError> errors,
             final XMLStreamWriter writer) throws XMLStreamException {
         writer.writeStartElement("errors");
 
@@ -105,8 +96,7 @@ public class XmlPatchStatusBodyWriter extends AbstractPatchStatusBodyWriter {
             final var errorPath = restconfError.getErrorPath();
             if (errorPath != null) {
                 writer.writeStartElement("error-path");
-                XmlCodecFactory.create(modelContext).instanceIdentifierCodec()
-                    .writeValue(writer, errorPath);
+                databind.xmlCodecs().instanceIdentifierCodec().writeValue(writer, errorPath);
                 writer.writeEndElement();
             }