+++ /dev/null
-/*
- * Copyright (c) 2024 PANTHEON.tech, s.r.o. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.restconf.api;
-
-import static java.util.Objects.requireNonNull;
-
-import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.opendaylight.restconf.api.query.PrettyPrintParam;
-import org.opendaylight.restconf.api.query.RestconfQueryParam;
-import org.opendaylight.yangtools.concepts.Immutable;
-
-/**
- * The set of {@link RestconfQueryParam}s governing output formatting.
- *
- * @param prettyPrint the {@link PrettyPrintParam} parameter
- */
-@NonNullByDefault
-public record FormatParameters(PrettyPrintParam prettyPrint) implements Immutable {
- public static final FormatParameters COMPACT = new FormatParameters(PrettyPrintParam.FALSE);
- public static final FormatParameters PRETTY = new FormatParameters(PrettyPrintParam.TRUE);
-
- /**
- * Return the {@link PrettyPrintParam} parameter.
- */
- public FormatParameters {
- requireNonNull(prettyPrint);
- }
-}
import java.io.IOException;
import java.io.OutputStream;
import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
import org.opendaylight.yangtools.concepts.Immutable;
/**
* A body which is capable of being formatted to an {@link OutputStream} in either JSON or XML format using particular
- * {@link FormatParameters}.
+ * {@link PrettyPrintParam}.
*/
@NonNullByDefault
public abstract class FormattableBody implements Immutable {
/**
* Write the content of this body as a JSON document.
*
- * @param format {@link FormatParameters}
+ * @param prettyPrint a {@link PrettyPrintParam}
* @param out output stream
* @throws IOException if an IO error occurs.
*/
- public abstract void formatToJSON(FormatParameters format, OutputStream out) throws IOException;
+ public abstract void formatToJSON(PrettyPrintParam prettyPrint, OutputStream out) throws IOException;
/**
* Write the content of this body as an XML document.
*
- * @param format {@link FormatParameters}
+ * @param prettyPrint a {@link PrettyPrintParam}
* @param out output stream
* @throws IOException if an IO error occurs.
*/
- public abstract void formatToXML(FormatParameters format, OutputStream out) throws IOException;
+ public abstract void formatToXML(PrettyPrintParam prettyPrint, OutputStream out) throws IOException;
protected abstract ToStringHelper addToStringAttributes(ToStringHelper helper);
import javax.ws.rs.container.AsyncResponse;
import javax.ws.rs.core.Response;
import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.restconf.api.FormatParameters;
import org.opendaylight.restconf.api.FormattableBody;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
/**
* A {@link JaxRsRestconfCallback} producing a {@link FormattableBody}.
*/
final class FormattableBodyCallback extends JaxRsRestconfCallback<FormattableBody> {
- private final @NonNull FormatParameters format;
+ private final @NonNull PrettyPrintParam prettyPrint;
- FormattableBodyCallback(final AsyncResponse ar, final FormatParameters format) {
+ FormattableBodyCallback(final AsyncResponse ar, final PrettyPrintParam prettyPrint) {
super(ar);
- this.format = requireNonNull(format);
+ this.prettyPrint = requireNonNull(prettyPrint);
}
@Override
Response transform(final FormattableBody result) throws RestconfDocumentedException {
- return Response.ok().entity(new JaxRsFormattableBody(result, format)).build();
+ return Response.ok().entity(new JaxRsFormattableBody(result, prettyPrint)).build();
}
}
import static java.util.Objects.requireNonNull;
import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.opendaylight.restconf.api.FormatParameters;
import org.opendaylight.restconf.api.FormattableBody;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
/**
- * A bridge capturing a {@link FormattableBody} and {@link FormatParameters}./
+ * A bridge capturing a {@link FormattableBody} and {@link PrettyPrintParam}.
*/
@NonNullByDefault
-record JaxRsFormattableBody(FormattableBody body, FormatParameters format) {
+record JaxRsFormattableBody(FormattableBody body, PrettyPrintParam prettyPrint) {
JaxRsFormattableBody {
requireNonNull(body);
- requireNonNull(format);
+ requireNonNull(prettyPrint);
}
}
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.MessageBodyWriter;
import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.opendaylight.restconf.api.FormatParameters;
import org.opendaylight.restconf.api.FormattableBody;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
abstract sealed class JaxRsFormattableBodyWriter implements MessageBodyWriter<JaxRsFormattableBody>
permits JsonJaxRsFormattableBodyWriter, XmlJaxRsFormattableBodyWriter {
public final void writeTo(final JaxRsFormattableBody entity, final Class<?> type, final Type genericType,
final Annotation[] annotations, final MediaType mediaType, final MultivaluedMap<String, Object> httpHeaders,
final OutputStream entityStream) throws IOException {
- writeTo(entity.body(), entity.format(), requireNonNull(entityStream));
+ writeTo(entity.body(), entity.prettyPrint(), requireNonNull(entityStream));
}
@NonNullByDefault
- abstract void writeTo(FormattableBody body, FormatParameters format, OutputStream out) throws IOException;
+ abstract void writeTo(FormattableBody body, PrettyPrintParam prettyPrint, OutputStream out) throws IOException;
}
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.restconf.api.ApiPath;
-import org.opendaylight.restconf.api.FormatParameters;
import org.opendaylight.restconf.api.HttpStatusCode;
import org.opendaylight.restconf.api.MediaTypes;
import org.opendaylight.restconf.api.QueryParameters;
@Suspended final AsyncResponse ar) {
try (var jsonBody = new JsonChildBody(body)) {
final var request = requestOf(uriInfo);
- completeDataPOST(server.dataPOST(request, jsonBody), request.format(), uriInfo, ar);
+ completeDataPOST(server.dataPOST(request, jsonBody), request.prettyPrint(), uriInfo, ar);
}
}
public void postDataJSON(@Encoded @PathParam("identifier") final ApiPath identifier, final InputStream body,
@Context final UriInfo uriInfo, @Suspended final AsyncResponse ar) {
final var request = requestOf(uriInfo);
- completeDataPOST(server.dataPOST(request, identifier, new JsonDataPostBody(body)), request.format(), uriInfo,
- ar);
+ completeDataPOST(server.dataPOST(request, identifier, new JsonDataPostBody(body)), request.prettyPrint(),
+ uriInfo, ar);
}
/**
public void postDataXML(final InputStream body, @Context final UriInfo uriInfo, @Suspended final AsyncResponse ar) {
try (var xmlBody = new XmlChildBody(body)) {
final var request = requestOf(uriInfo);
- completeDataPOST(server.dataPOST(request, xmlBody), request.format(), uriInfo, ar);
+ completeDataPOST(server.dataPOST(request, xmlBody), request.prettyPrint(), uriInfo, ar);
}
}
public void postDataXML(@Encoded @PathParam("identifier") final ApiPath identifier, final InputStream body,
@Context final UriInfo uriInfo, @Suspended final AsyncResponse ar) {
final var request = requestOf(uriInfo);
- completeDataPOST(server.dataPOST(request, identifier, new XmlDataPostBody(body)), request.format(), uriInfo,
- ar);
+ completeDataPOST(server.dataPOST(request, identifier, new XmlDataPostBody(body)), request.prettyPrint(),
+ uriInfo, ar);
}
private static void completeDataPOST(final RestconfFuture<? extends DataPostResult> future,
- final FormatParameters format, final UriInfo uriInfo, final AsyncResponse ar) {
+ final PrettyPrintParam prettyPrint, final UriInfo uriInfo, final AsyncResponse ar) {
future.addCallback(new JaxRsRestconfCallback<DataPostResult>(ar) {
@Override
Response transform(final DataPostResult result) {
if (result instanceof InvokeResult invokeOperation) {
final var output = invokeOperation.output();
return output == null ? Response.noContent().build()
- : Response.ok().entity(new JaxRsFormattableBody(output, format)).build();
+ : Response.ok().entity(new JaxRsFormattableBody(output, prettyPrint)).build();
}
LOG.error("Unhandled result {}", result);
return Response.serverError().build();
MediaTypes.APPLICATION_YANG_DATA_JSON, MediaType.APPLICATION_JSON
})
public void operationsGET(@Suspended final AsyncResponse ar) {
- server.operationsGET(emptyRequest).addCallback(new FormattableBodyCallback(ar, emptyRequest.format()));
+ server.operationsGET(emptyRequest).addCallback(new FormattableBodyCallback(ar, prettyPrint));
}
/**
})
public void operationsGET(@PathParam("operation") final ApiPath operation, @Suspended final AsyncResponse ar) {
server.operationsGET(emptyRequest, operation)
- .addCallback(new FormattableBodyCallback(ar, emptyRequest.format()));
+ .addCallback(new FormattableBodyCallback(ar, prettyPrint));
}
/**
MediaType.TEXT_XML
})
public void yangLibraryVersionGET(@Suspended final AsyncResponse ar) {
- server.yangLibraryVersionGET(emptyRequest).addCallback(new FormattableBodyCallback(ar, emptyRequest.format()));
+ server.yangLibraryVersionGET(emptyRequest).addCallback(new FormattableBodyCallback(ar, prettyPrint));
}
// FIXME: References to these resources are generated by our yang-library implementation. That means:
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.Provider;
-import org.opendaylight.restconf.api.FormatParameters;
import org.opendaylight.restconf.api.FormattableBody;
import org.opendaylight.restconf.api.MediaTypes;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
@Provider
@Produces({ MediaTypes.APPLICATION_YANG_DATA_JSON, MediaType.APPLICATION_JSON })
public final class JsonJaxRsFormattableBodyWriter extends JaxRsFormattableBodyWriter {
@Override
- void writeTo(final FormattableBody body, final FormatParameters format, final OutputStream out) throws IOException {
- body.formatToJSON(format, out);
+ void writeTo(final FormattableBody body, final PrettyPrintParam prettyPrint, final OutputStream out)
+ throws IOException {
+ body.formatToJSON(prettyPrint, out);
}
}
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.Provider;
-import org.opendaylight.restconf.api.FormatParameters;
import org.opendaylight.restconf.api.FormattableBody;
import org.opendaylight.restconf.api.MediaTypes;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
@Provider
@Produces({ MediaTypes.APPLICATION_YANG_DATA_XML, MediaType.APPLICATION_XML, MediaType.TEXT_XML })
public final class XmlJaxRsFormattableBodyWriter extends JaxRsFormattableBodyWriter {
@Override
- void writeTo(final FormattableBody body, final FormatParameters format, final OutputStream out) throws IOException {
- body.formatToXML(format, out);
+ void writeTo(final FormattableBody body, final PrettyPrintParam prettyPrint, final OutputStream out)
+ throws IOException {
+ body.formatToXML(prettyPrint, out);
}
}
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.MessageBodyWriter;
import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.opendaylight.restconf.api.FormatParameters;
+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;
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.format(), requireNonNull(entityStream));
+ context.prettyPrint(), requireNonNull(entityStream));
}
@NonNullByDefault
abstract void writeData(SchemaInferenceStack stack, NormalizedNode data, WriterParameters writerParameters,
- FormatParameters format, OutputStream out) throws IOException;
+ PrettyPrintParam prettyPrint, OutputStream out) throws IOException;
}
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.Provider;
import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.restconf.api.FormatParameters;
import org.opendaylight.restconf.api.MediaTypes;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
import org.opendaylight.restconf.nb.rfc8040.jersey.providers.api.RestconfNormalizedNodeWriter;
import org.opendaylight.restconf.nb.rfc8040.legacy.WriterParameters;
import org.opendaylight.restconf.server.spi.FormattableBodySupport;
public final class JsonNormalizedNodeBodyWriter extends AbstractNormalizedNodeBodyWriter {
@Override
void writeData(final SchemaInferenceStack stack, final NormalizedNode data, final WriterParameters writerParameters,
- final FormatParameters format, final OutputStream out) throws IOException {
+ final PrettyPrintParam prettyPrint, final OutputStream out) throws IOException {
if (!stack.isEmpty()) {
stack.exit();
}
.build()
: data;
- try (var jsonWriter = FormattableBodySupport.createJsonWriter(out, format)) {
+ try (var jsonWriter = FormattableBodySupport.createJsonWriter(out, prettyPrint)) {
jsonWriter.beginObject();
final var nnWriter = createNormalizedNodeWriter(stack.toInference(), jsonWriter, writerParameters, null);
import javax.xml.XMLConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
-import org.opendaylight.restconf.api.FormatParameters;
import org.opendaylight.restconf.api.MediaTypes;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
import org.opendaylight.restconf.nb.rfc8040.jersey.providers.api.RestconfNormalizedNodeWriter;
import org.opendaylight.restconf.nb.rfc8040.legacy.WriterParameters;
import org.opendaylight.restconf.server.spi.FormattableBodySupport;
public final class XmlNormalizedNodeBodyWriter extends AbstractNormalizedNodeBodyWriter {
@Override
void writeData(final SchemaInferenceStack stack, final NormalizedNode data, final WriterParameters writerParameters,
- final FormatParameters format, final OutputStream out) throws IOException {
+ final PrettyPrintParam prettyPrint, final OutputStream out) throws IOException {
final boolean isRoot;
if (!stack.isEmpty()) {
stack.exit();
isRoot = true;
}
- final var xmlWriter = FormattableBodySupport.createXmlWriter(out, format);
+ final var xmlWriter = FormattableBodySupport.createXmlWriter(out, prettyPrint);
final var nnWriter = createNormalizedNodeWriter(xmlWriter, stack.toInference(), writerParameters);
if (data instanceof MapEntryNode mapEntry) {
// Restconf allows returning one list item. We need to wrap it
import static java.util.Objects.requireNonNull;
import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.opendaylight.restconf.api.FormatParameters;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.Inference;
Inference inference,
NormalizedNode data,
WriterParameters writerParameters,
- FormatParameters format) {
+ PrettyPrintParam prettyPrint) {
public NormalizedNodePayload {
requireNonNull(inference);
requireNonNull(data);
requireNonNull(writerParameters);
- requireNonNull(format);
+ requireNonNull(prettyPrint);
}
}
RestconfFuture<DataGetResult> dataGET(final ServerRequest request, final Data path, final DataGetParams params) {
final var inference = path.inference();
final var fields = params.fields();
- return completeDataGET(request.format(), inference,
+ return completeDataGET(request.prettyPrint(), inference,
fields == null ? WriterParameters.of(params.depth())
: new WriterParameters(params.depth(),
translateFieldsParam(inference.modelContext(), path.schema(), fields)),
node = readData(params.content(), path.instance(), params.withDefaults());
}
- return completeDataGET(request.format(), inference, WriterParameters.of(params.depth()), node, null);
+ return completeDataGET(request.prettyPrint(), inference, WriterParameters.of(params.depth()), node, null);
}
@Override
import org.opendaylight.mdsal.dom.spi.SimpleDOMActionResult;
import org.opendaylight.netconf.dom.api.NetconfDataTreeService;
import org.opendaylight.restconf.api.ApiPath;
-import org.opendaylight.restconf.api.FormatParameters;
import org.opendaylight.restconf.api.FormattableBody;
import org.opendaylight.restconf.api.query.ContentParam;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
import org.opendaylight.restconf.api.query.WithDefaultsParam;
import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
import org.opendaylight.restconf.common.errors.RestconfError;
abstract @NonNull RestconfFuture<DataGetResult> dataGET(ServerRequest request, Data path, DataGetParams params);
- static final @NonNull RestconfFuture<DataGetResult> completeDataGET(final FormatParameters format,
+ static final @NonNull RestconfFuture<DataGetResult> completeDataGET(final PrettyPrintParam prettyPrint,
final Inference inference, final WriterParameters writerParams, final @Nullable NormalizedNode node,
final @Nullable ConfigurationMetadata metadata) {
if (node == null) {
ErrorType.PROTOCOL, ErrorTag.DATA_MISSING));
}
- final var payload = new NormalizedNodePayload(inference, node, writerParams, format);
+ final var payload = new NormalizedNodePayload(inference, node, writerParams, prettyPrint);
return RestconfFuture.of(metadata == null ? new DataGetResult(payload)
: new DataGetResult(payload, metadata.entityTag(), metadata.lastModified()));
}
import java.io.IOException;
import java.io.OutputStream;
import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.opendaylight.restconf.api.FormatParameters;
import org.opendaylight.restconf.api.FormattableBody;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
/**
* A {@link FormattableBody} which has an attached {@link DatabindContext}.
}
@Override
- public final void formatToJSON(final FormatParameters format, final OutputStream out) throws IOException {
- formatToJSON(databind, format, out);
+ public final void formatToJSON(final PrettyPrintParam prettyPrint, final OutputStream out) throws IOException {
+ formatToJSON(databind, prettyPrint, out);
}
- protected abstract void formatToJSON(DatabindContext databind, FormatParameters format, OutputStream out)
+ protected abstract void formatToJSON(DatabindContext databind, PrettyPrintParam prettyPrint, OutputStream out)
throws IOException;
@Override
- public final void formatToXML(final FormatParameters format, final OutputStream out) throws IOException {
- formatToXML(databind, format, out);
+ public final void formatToXML(final PrettyPrintParam prettyPrint, final OutputStream out) throws IOException {
+ formatToXML(databind, prettyPrint, out);
}
- protected abstract void formatToXML(DatabindContext databind, FormatParameters format, OutputStream out)
+ protected abstract void formatToXML(DatabindContext databind, PrettyPrintParam prettyPrint, OutputStream out)
throws IOException;
}
import static java.util.Objects.requireNonNull;
import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.opendaylight.restconf.api.FormatParameters;
import org.opendaylight.restconf.api.QueryParameters;
import org.opendaylight.restconf.api.query.PrettyPrintParam;
* HTTP transport layer. This includes:
* <ul>
* <li>HTTP request {@link #queryParameters() query parameters},</li>
- * <li>{@link #format() format parameters}, including those affected by query parameters<li>
+ * <li>{@link #prettyPrint() pretty printing}, including affected by query parameters<li>
* </ul>
* It notably does <b>not</b> hold the HTTP request path, nor the request body. Those are passed as separate arguments
* to server methods as implementations of those methods are expected to act on them.
*/
@NonNullByDefault
-public record ServerRequest(QueryParameters queryParameters, FormatParameters format) {
+public record ServerRequest(QueryParameters queryParameters, PrettyPrintParam prettyPrint) {
// TODO: this is where a binding to security principal and access control should be:
// - we would like to be able to have java.security.Principal#name() for logging purposes
// - we need to have a NACM-capable interface, through which we can check permissions (such as data PUT) and
// establish output filters (i.e. excluding paths inaccessible path to user from a data GET a ContainerNode)
public ServerRequest {
requireNonNull(queryParameters);
- requireNonNull(format);
- }
-
- private ServerRequest(final QueryParameters queryParameters, final PrettyPrintParam prettyPrint) {
- this(queryParameters, prettyPrint.value() ? FormatParameters.PRETTY : FormatParameters.COMPACT);
+ requireNonNull(prettyPrint);
}
public static ServerRequest of(final QueryParameters queryParameters, final PrettyPrintParam defaultPrettyPrint) {
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.opendaylight.restconf.api.FormatParameters;
import org.opendaylight.restconf.api.FormattableBody;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
import org.opendaylight.yangtools.yang.data.codec.gson.JsonWriterFactory;
/**
// Hidden on purpose
}
- public static JsonWriter createJsonWriter(final OutputStream out, final FormatParameters format) {
+ public static JsonWriter createJsonWriter(final OutputStream out, final PrettyPrintParam prettyPrint) {
final var ret = JsonWriterFactory.createJsonWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8));
- ret.setIndent(format.prettyPrint().value() ? PRETTY_PRINT_INDENT : "");
+ ret.setIndent(prettyPrint.value() ? PRETTY_PRINT_INDENT : "");
return ret;
}
- public static XMLStreamWriter createXmlWriter(final OutputStream out, final FormatParameters format)
+ public static XMLStreamWriter createXmlWriter(final OutputStream out, final PrettyPrintParam prettyPrint)
throws IOException {
final var xmlWriter = createXmlWriter(out);
- return format.prettyPrint().value() ? new IndentingXMLStreamWriter(xmlWriter) : xmlWriter;
+ return prettyPrint.value() ? new IndentingXMLStreamWriter(xmlWriter) : xmlWriter;
}
private static XMLStreamWriter createXmlWriter(final OutputStream out) throws IOException {
import java.io.OutputStream;
import javax.xml.stream.XMLStreamException;
import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.opendaylight.restconf.api.FormatParameters;
import org.opendaylight.restconf.api.FormattableBody;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
import org.opendaylight.restconf.server.api.DatabindContext;
import org.opendaylight.restconf.server.api.DatabindFormattableBody;
import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
}
@Override
- protected void formatToJSON(final DatabindContext databind, final FormatParameters format, final OutputStream out)
- throws IOException {
+ protected void formatToJSON(final DatabindContext databind, final PrettyPrintParam prettyPrint,
+ final OutputStream out) throws IOException {
writeTo(JSONNormalizedNodeStreamWriter.createExclusiveWriter(databind.jsonCodecs(), parent, null,
- FormattableBodySupport.createJsonWriter(out, format)));
+ FormattableBodySupport.createJsonWriter(out, prettyPrint)));
}
@Override
- protected void formatToXML(final DatabindContext databind, final FormatParameters format, final OutputStream out)
- throws IOException {
- final var xmlWriter = FormattableBodySupport.createXmlWriter(out, format);
+ protected void formatToXML(final DatabindContext databind, final PrettyPrintParam prettyPrint,
+ final OutputStream out) throws IOException {
+ final var xmlWriter = FormattableBodySupport.createXmlWriter(out, prettyPrint);
writeTo(XMLStreamNormalizedNodeStreamWriter.create(xmlWriter, parent));
try {
xmlWriter.close();
import javax.xml.stream.XMLStreamWriter;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.opendaylight.restconf.api.FormatParameters;
import org.opendaylight.restconf.api.FormattableBody;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
import org.opendaylight.restconf.server.api.DatabindPath.OperationPath;
import org.opendaylight.restconf.server.api.DatabindPathFormattableBody;
import org.opendaylight.yangtools.yang.common.QName;
}
@Override
- public void formatToJSON(final FormatParameters format, final OutputStream out) throws IOException {
+ public void formatToJSON(final PrettyPrintParam prettyPrint, final OutputStream out) throws IOException {
final var stack = prepareStack();
// RpcDefinition/ActionDefinition is not supported as initial codec in JSONStreamWriter, so we need to emit
// initial output declaration
- try (var jsonWriter = FormattableBodySupport.createJsonWriter(out, format)) {
+ try (var jsonWriter = FormattableBodySupport.createJsonWriter(out, prettyPrint)) {
final var module = stack.currentModule();
jsonWriter.beginObject().name(module.argument().getLocalName() + ":output").beginObject();
}
@Override
- public void formatToXML(final FormatParameters format, final OutputStream out) throws IOException {
+ public void formatToXML(final PrettyPrintParam prettyPrint, final OutputStream out) throws IOException {
final var stack = prepareStack();
// RpcDefinition/ActionDefinition is not supported as initial codec in XMLStreamWriter, so we need to emit
// initial output declaration.
- final var xmlWriter = FormattableBodySupport.createXmlWriter(out, format);
+ final var xmlWriter = FormattableBodySupport.createXmlWriter(out, prettyPrint);
final var nnWriter = NormalizedNodeWriter.forStreamWriter(
XMLStreamNormalizedNodeStreamWriter.create(xmlWriter, stack.toInference()));
import java.io.Writer;
import java.nio.charset.StandardCharsets;
import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.restconf.api.FormatParameters;
import org.opendaylight.restconf.api.FormattableBody;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
}
@Override
- public final void formatToJSON(final FormatParameters format, final OutputStream out) throws IOException {
+ public final void formatToJSON(final PrettyPrintParam prettyPrint, final OutputStream out) throws IOException {
try (var writer = new OutputStreamWriter(out, StandardCharsets.UTF_8)) {
formatToJSON(writer);
}
abstract void formatToJSON(@NonNull Writer out) throws IOException;
@Override
- public final void formatToXML(final FormatParameters format, final OutputStream out) throws IOException {
+ public final void formatToXML(final PrettyPrintParam prettyPrint, final OutputStream out) throws IOException {
try (var writer = new OutputStreamWriter(out, StandardCharsets.UTF_8)) {
formatToXML(writer);
}
import javax.xml.XMLConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
-import org.opendaylight.restconf.api.FormatParameters;
import org.opendaylight.restconf.api.FormattableBody;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
import org.opendaylight.restconf.common.errors.RestconfError;
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;
}
@Override
- public void formatToJSON(final FormatParameters format, final OutputStream out) throws IOException {
- try (var writer = FormattableBodySupport.createJsonWriter(out, format)) {
+ public void formatToJSON(final PrettyPrintParam prettyPrint, final OutputStream out) throws IOException {
+ try (var writer = FormattableBodySupport.createJsonWriter(out, prettyPrint)) {
writer.beginObject().name("ietf-yang-patch:yang-patch-status")
.beginObject().name("patch-id").value(status.patchId());
}
@Override
- public void formatToXML(final FormatParameters format, final OutputStream out) throws IOException {
- final var writer = FormattableBodySupport.createXmlWriter(out, format);
+ public void formatToXML(final PrettyPrintParam prettyPrint, final OutputStream out) throws IOException {
+ final var writer = FormattableBodySupport.createXmlWriter(out, prettyPrint);
try {
formatToXML(writer);
} catch (XMLStreamException e) {
import org.opendaylight.mdsal.dom.api.DOMRpcService;
import org.opendaylight.mdsal.dom.spi.FixedDOMSchemaService;
import org.opendaylight.restconf.api.ApiPath;
-import org.opendaylight.restconf.api.FormatParameters;
import org.opendaylight.restconf.api.FormattableBody;
import org.opendaylight.restconf.api.query.PrettyPrintParam;
import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
static final void assertJson(final String expectedJson, final OperationOutputBody payload) {
final var baos = new ByteArrayOutputStream();
try {
- payload.formatToJSON(FormatParameters.COMPACT, baos);
+ payload.formatToJSON(PrettyPrintParam.FALSE, baos);
} catch (IOException e) {
throw new AssertionError(e);
}
static final void assertXml(final String expectedXml, final OperationOutputBody payload) {
final var baos = new ByteArrayOutputStream();
try {
- payload.formatToXML(FormatParameters.COMPACT, baos);
+ payload.formatToXML(PrettyPrintParam.FALSE, baos);
} catch (IOException e) {
throw new AssertionError(e);
}
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.restconf.api.FormatParameters;
import org.opendaylight.restconf.api.query.PrettyPrintParam;
import org.opendaylight.restconf.server.api.DatabindContext;
import org.opendaylight.yangtools.yang.common.Decimal64;
@FunctionalInterface
public interface FormatMethod {
- void invoke(@NonNull FormatParameters format, @NonNull OutputStream out) throws IOException;
+ void invoke(@NonNull PrettyPrintParam prettyPrint, @NonNull OutputStream out) throws IOException;
}
// container jukebox
final boolean prettyPrint) {
final var baos = new ByteArrayOutputStream();
try {
- formatMethod.invoke(new FormatParameters(PrettyPrintParam.of(prettyPrint)), baos);
+ formatMethod.invoke(PrettyPrintParam.of(prettyPrint), baos);
} catch (IOException e) {
throw new AssertionError(e);
}
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
-import org.opendaylight.restconf.api.FormatParameters;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
import org.opendaylight.restconf.nb.rfc8040.AbstractInstanceIdentifierTest;
import org.opendaylight.restconf.nb.rfc8040.legacy.NormalizedNodePayload;
import org.opendaylight.restconf.nb.rfc8040.legacy.WriterParameters;
final NormalizedNodePayload nodePayload = new NormalizedNodePayload(Inference.ofDataTreePath(schemaContext),
ImmutableNodes.newContainerBuilder().withNodeIdentifier(new NodeIdentifier(SchemaContext.NAME)).build(),
- WriterParameters.EMPTY, FormatParameters.COMPACT);
+ WriterParameters.EMPTY, PrettyPrintParam.FALSE);
final ByteArrayOutputStream output = new ByteArrayOutputStream();
final XmlNormalizedNodeBodyWriter xmlWriter = new XmlNormalizedNodeBodyWriter();
.withNodeIdentifier(new NodeIdentifier(
QName.create("bar:module", "2016-09-29", "foo-bar-container")))
.build())
- .build(), WriterParameters.EMPTY, FormatParameters.COMPACT);
+ .build(), WriterParameters.EMPTY, PrettyPrintParam.FALSE);
final ByteArrayOutputStream output = new ByteArrayOutputStream();
final XmlNormalizedNodeBodyWriter xmlWriter = new XmlNormalizedNodeBodyWriter();