*/
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.NonNull;
import org.opendaylight.restconf.server.api.PatchStatusContext;
abstract class AbstractPatchStatusBodyWriter implements MessageBodyWriter<PatchStatusContext> {
final MediaType mediaType) {
return type.equals(PatchStatusContext.class);
}
+
+ @Override
+ public final void writeTo(final PatchStatusContext body, final Class<?> type, final Type genericType,
+ final Annotation[] annotations, final MediaType mediaType, final MultivaluedMap<String, Object> httpHeaders,
+ final OutputStream entityStream) throws IOException {
+ writeTo(requireNonNull(body), requireNonNull(entityStream));
+ }
+
+ abstract void writeTo(@NonNull PatchStatusContext body, @NonNull OutputStream out) throws IOException;
}
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import java.io.OutputStream;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
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 org.opendaylight.restconf.api.MediaTypes;
import org.opendaylight.restconf.api.query.PrettyPrintParam;
@Produces(MediaTypes.APPLICATION_YANG_DATA_JSON)
public class JsonPatchStatusBodyWriter 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 {
- final var jsonWriter = FormattableBodySupport.createJsonWriter(entityStream, () -> PrettyPrintParam.FALSE);
+ void writeTo(final PatchStatusContext body, final OutputStream out) throws IOException {
+ final var jsonWriter = FormattableBodySupport.createJsonWriter(out, () -> PrettyPrintParam.FALSE);
jsonWriter.beginObject().name("ietf-yang-patch:yang-patch-status")
- .beginObject().name("patch-id").value(patchStatusContext.patchId());
+ .beginObject().name("patch-id").value(body.patchId());
- if (patchStatusContext.ok()) {
+ if (body.ok()) {
reportSuccess(jsonWriter);
} else {
- final var globalErrors = patchStatusContext.globalErrors();
+ final var globalErrors = body.globalErrors();
if (globalErrors != null) {
- reportErrors(patchStatusContext.databind(), globalErrors, jsonWriter);
+ reportErrors(body.databind(), globalErrors, jsonWriter);
} else {
jsonWriter.name("edit-status").beginObject()
.name("edit").beginArray();
- for (var editStatus : patchStatusContext.editCollection()) {
+ for (var editStatus : body.editCollection()) {
jsonWriter.beginObject().name("edit-id").value(editStatus.getEditId());
final var editErrors = editStatus.getEditErrors();
if (editErrors != null) {
- reportErrors(patchStatusContext.databind(), editErrors, jsonWriter);
+ reportErrors(body.databind(), editErrors, jsonWriter);
} else if (editStatus.isOk()) {
reportSuccess(jsonWriter);
}
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;
}
@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.databind(), 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());
final var editErrors = patchStatusEntity.getEditErrors();
if (editErrors != null) {
- reportErrors(context.databind(), editErrors, writer);
+ reportErrors(body.databind(), editErrors, writer);
} else if (patchStatusEntity.isOk()) {
writer.writeEmptyElement("ok");
}