Eliminate FormatParameters 43/111343/1
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 9 Apr 2024 21:21:28 +0000 (23:21 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 9 Apr 2024 21:22:54 +0000 (23:22 +0200)
We are just dancing around the pretty-print parameter. Let's ditch the
wrapping and use the parameter all around.

JIRA: NETCONF-773
Change-Id: I469c2f364956506578655bdc40bcbd3004a1c96a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
25 files changed:
protocol/restconf-api/src/main/java/org/opendaylight/restconf/api/FormatParameters.java [deleted file]
protocol/restconf-api/src/main/java/org/opendaylight/restconf/api/FormattableBody.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/jaxrs/FormattableBodyCallback.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/jaxrs/JaxRsFormattableBody.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/jaxrs/JaxRsFormattableBodyWriter.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/jaxrs/JaxRsRestconf.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/jaxrs/JsonJaxRsFormattableBodyWriter.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/jaxrs/XmlJaxRsFormattableBodyWriter.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/AbstractNormalizedNodeBodyWriter.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/JsonNormalizedNodeBodyWriter.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/XmlNormalizedNodeBodyWriter.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/legacy/NormalizedNodePayload.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/MdsalRestconfStrategy.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/NetconfRestconfStrategy.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/transactions/RestconfStrategy.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/api/DatabindFormattableBody.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/api/ServerRequest.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/FormattableBodySupport.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/NormalizedFormattableBody.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/OperationOutputBody.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/OperationsBody.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/spi/YangPatchStatusBody.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/jaxrs/AbstractRestconfTest.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/AbstractJukeboxTest.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/XmlNormalizedNodeBodyWriterTest.java

diff --git a/protocol/restconf-api/src/main/java/org/opendaylight/restconf/api/FormatParameters.java b/protocol/restconf-api/src/main/java/org/opendaylight/restconf/api/FormatParameters.java
deleted file mode 100644 (file)
index 7a1738c..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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);
-    }
-}
index 870bcd2d28df8a9e3dbdedd95feb65c13d11092a..51529ee2d4ccf3218b96aeaf7491969107cc9b42 100644 (file)
@@ -12,31 +12,32 @@ import com.google.common.base.MoreObjects.ToStringHelper;
 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);
 
index 8d5aebb00be3ca6bc1ce35fa7fe5cc2abc4863ae..da864fb93a8773cfc047ef1555188edd20e1fd76 100644 (file)
@@ -12,23 +12,23 @@ import static java.util.Objects.requireNonNull;
 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();
     }
 }
index 2ebe205864ffcae6b637f616919a05e1ad392503..0f569d68e7d2f1201272fd19b08e3d4149c24302 100644 (file)
@@ -10,16 +10,16 @@ package org.opendaylight.restconf.nb.jaxrs;
 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);
     }
 }
index f92e09ba175f5b679612bdf57149cc41cd009337..0138f1c28bb9a0ccc341ad4e8bcf4df3f55a6b89 100644 (file)
@@ -17,8 +17,8 @@ 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.FormatParameters;
 import org.opendaylight.restconf.api.FormattableBody;
+import org.opendaylight.restconf.api.query.PrettyPrintParam;
 
 abstract sealed class JaxRsFormattableBodyWriter implements MessageBodyWriter<JaxRsFormattableBody>
         permits JsonJaxRsFormattableBodyWriter, XmlJaxRsFormattableBodyWriter {
@@ -32,9 +32,9 @@ abstract sealed class JaxRsFormattableBodyWriter implements MessageBodyWriter<Ja
     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;
 }
index 5a87e8e27e202594f28033c4df401ff85d782012..d018f0f79bae18840389b771daa66b970dab255b 100644 (file)
@@ -44,7 +44,6 @@ import javax.ws.rs.ext.ParamConverterProvider;
 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;
@@ -472,7 +471,7 @@ public final class JaxRsRestconf implements ParamConverterProvider {
             @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);
         }
     }
 
@@ -493,8 +492,8 @@ public final class JaxRsRestconf implements ParamConverterProvider {
     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);
     }
 
     /**
@@ -514,7 +513,7 @@ public final class JaxRsRestconf implements ParamConverterProvider {
     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);
         }
     }
 
@@ -536,12 +535,12 @@ public final class JaxRsRestconf implements ParamConverterProvider {
     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) {
@@ -556,7 +555,7 @@ public final class JaxRsRestconf implements ParamConverterProvider {
                 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();
@@ -670,7 +669,7 @@ public final class JaxRsRestconf implements ParamConverterProvider {
         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));
     }
 
     /**
@@ -687,7 +686,7 @@ public final class JaxRsRestconf implements ParamConverterProvider {
     })
     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));
     }
 
     /**
@@ -777,7 +776,7 @@ public final class JaxRsRestconf implements ParamConverterProvider {
         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:
index f012e0d0134a29a0480429469e11ba58fbe4b49d..9385a0c92dd3f877cebac8ea69a4ae653b089b6e 100644 (file)
@@ -12,15 +12,16 @@ import java.io.OutputStream;
 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);
     }
 }
index 5f047a31d6fc00a5888f13445d1e0f93c2f6445a..0802cc429954fe215517d7ac60d20dd4d3b2d21a 100644 (file)
@@ -12,15 +12,16 @@ import java.io.OutputStream;
 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);
     }
 }
index 872be8f01dfe18faaa228a0cc474d615e8227ae1..8bf81af721114a881f095d49cc5e92af1fa1c631 100644 (file)
@@ -17,7 +17,7 @@ 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.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;
@@ -35,10 +35,10 @@ abstract class AbstractNormalizedNodeBodyWriter implements MessageBodyWriter<Nor
             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;
 }
index bcb65ee12cf7cf49cf1ddadb1c1f733253045575..a7363fbef4835445f902275373588bed053a73d0 100644 (file)
@@ -14,8 +14,8 @@ import javax.ws.rs.Produces;
 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;
@@ -34,7 +34,7 @@ import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.Inference
 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();
         }
@@ -47,7 +47,7 @@ public final class JsonNormalizedNodeBodyWriter extends AbstractNormalizedNodeBo
                 .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);
index 40092e5637fb8efa4e3fb227a0c1dece42bbce87..439d01560a6e36dcfb03dbfd3c99e46e236a4b64 100644 (file)
@@ -15,8 +15,8 @@ import javax.ws.rs.ext.Provider;
 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;
@@ -35,7 +35,7 @@ import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.Inference
 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();
@@ -44,7 +44,7 @@ public final class XmlNormalizedNodeBodyWriter extends AbstractNormalizedNodeBod
             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
index c8c9d7221a11d4b6d6099a8eb723d8ce104be528..4e62f79e9b9377cfb2f3e5b76299b5c1c8ae9bc9 100644 (file)
@@ -10,7 +10,7 @@ package org.opendaylight.restconf.nb.rfc8040.legacy;
 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;
 
@@ -23,11 +23,11 @@ public record NormalizedNodePayload(
         Inference inference,
         NormalizedNode data,
         WriterParameters writerParameters,
-        FormatParameters format) {
+        PrettyPrintParam prettyPrint) {
     public NormalizedNodePayload {
         requireNonNull(inference);
         requireNonNull(data);
         requireNonNull(writerParameters);
-        requireNonNull(format);
+        requireNonNull(prettyPrint);
     }
 }
index 9c65daff0877c27ed9b91bf9e6de7917b7676c8a..9cf61e62fcb4eff8d2832b5a3affc23fadd617d8 100644 (file)
@@ -132,7 +132,7 @@ public final class MdsalRestconfStrategy extends RestconfStrategy {
     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)),
index 00adede4ea308f83a77624e3fed3e0cadcfe0213..e06d3ea265f4b6c2a59a52dac7f242bb1c89eac8 100644 (file)
@@ -125,7 +125,7 @@ public final class NetconfRestconfStrategy extends RestconfStrategy {
             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
index 7cad275e02443289850383813e0a7c2730694427..a091c955bf0debfed2cc55ad65743de47efb2b44 100644 (file)
@@ -50,9 +50,9 @@ import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
 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;
@@ -843,7 +843,7 @@ public abstract class RestconfStrategy {
 
     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) {
@@ -852,7 +852,7 @@ public abstract class RestconfStrategy {
                 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()));
     }
index d1aaf2d0902f70fa547bc3346ada517e9002be42..8d5308a0f983eb3374cc10b63260e57f26398819 100644 (file)
@@ -12,8 +12,8 @@ import static java.util.Objects.requireNonNull;
 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}.
@@ -27,18 +27,18 @@ public abstract class DatabindFormattableBody extends FormattableBody {
     }
 
     @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;
 }
index a6751899502fdde7741478eba86f753cea0f330d..4f28f44bf985be870f4d815089ce678ee7ba9c4a 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.restconf.server.api;
 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;
 
@@ -19,24 +18,20 @@ 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) {
index a42bedfebb94d4183977bdd8b457d50b03be7676..0dbb5218a0d05264218464d7279693f910492726 100644 (file)
@@ -18,8 +18,8 @@ import javax.xml.stream.XMLOutputFactory;
 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;
 
 /**
@@ -34,16 +34,16 @@ public final class FormattableBodySupport {
         // 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 {
index ae06d5e013f738ff620dcf4e8ec5e36b7e8a3267..9ccd06efb4bb1b54beedee402141abed3fc0ef4a 100644 (file)
@@ -15,8 +15,8 @@ import java.io.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;
@@ -61,16 +61,16 @@ public final class NormalizedFormattableBody<N extends NormalizedNode> extends D
     }
 
     @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();
index a80724ba5da738be6faa7e5edfa3221f89420e04..32ed369e0a5d0303a79f50daf1bc57bc5dca857c 100644 (file)
@@ -17,8 +17,8 @@ import javax.xml.stream.XMLStreamException;
 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;
@@ -49,12 +49,12 @@ public final class OperationOutputBody extends DatabindPathFormattableBody<Opera
     }
 
     @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();
 
@@ -71,12 +71,12 @@ public final class OperationOutputBody extends DatabindPathFormattableBody<Opera
     }
 
     @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()));
 
index d335eaef4182adeee97b6c5984d07c33efef3f5a..2f935049ef5d719afd617ab6e5f244234f6339ed 100644 (file)
@@ -15,8 +15,8 @@ import java.io.OutputStreamWriter;
 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;
@@ -32,7 +32,7 @@ abstract sealed class OperationsBody extends FormattableBody permits AllOperatio
     }
 
     @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);
         }
@@ -41,7 +41,7 @@ abstract sealed class OperationsBody extends FormattableBody permits AllOperatio
     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);
         }
index 10f0f8e0e4115dc492760b9aafaa34bc56a4e7f3..d82329a06d2945bbc0d82fd24f1ef08b98a1867d 100644 (file)
@@ -17,8 +17,8 @@ import java.util.List;
 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;
@@ -37,8 +37,8 @@ public final class YangPatchStatusBody extends FormattableBody {
     }
 
     @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());
 
@@ -70,8 +70,8 @@ public final class YangPatchStatusBody extends FormattableBody {
     }
 
     @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) {
index 74103f7fcaac4406f070d5902d8a60040f96317e..2520e9b0c51d2e2440aa7b89bc90e25ae2204bfb 100644 (file)
@@ -37,7 +37,6 @@ import org.opendaylight.mdsal.dom.api.DOMMountPointService;
 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;
@@ -86,7 +85,7 @@ abstract class AbstractRestconfTest extends AbstractJukeboxTest {
     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);
         }
@@ -96,7 +95,7 @@ abstract class AbstractRestconfTest extends AbstractJukeboxTest {
     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);
         }
index cd0453594bc6f3180dae146ad2bc5f6620876076..3dae4c6de33047ea037b1ab0e2f50a40aa87f4f7 100644 (file)
@@ -16,7 +16,6 @@ import java.io.InputStream;
 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;
@@ -37,7 +36,7 @@ public abstract class AbstractJukeboxTest {
     @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
@@ -116,7 +115,7 @@ public abstract class AbstractJukeboxTest {
             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);
         }
index 8901055266b6c1b1afb5dc372252340ba365fa07..c19e53c9c32d0f730d5a604e4e92dba9e3ea6042 100644 (file)
@@ -17,7 +17,7 @@ import javax.ws.rs.core.MediaType;
 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;
@@ -36,7 +36,7 @@ public class XmlNormalizedNodeBodyWriterTest extends AbstractInstanceIdentifierT
 
         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();
@@ -61,7 +61,7 @@ public class XmlNormalizedNodeBodyWriterTest extends AbstractInstanceIdentifierT
                     .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();