Refactor ReadDataParams 04/109104/2
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 28 Nov 2023 16:40:28 +0000 (17:40 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 28 Nov 2023 17:01:26 +0000 (18:01 +0100)
Rename these to DataGetParams in keeping with restconf.server.api
package, where this DTO belongs.

JIRA: NETCONF-773
Change-Id: Ie11b1e09d8a45c392d57e5e69c5857aae88b8935
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/jaxrs/JaxRsRestconf.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/databind/jaxrs/QueryParams.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/legacy/QueryParameters.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/api/DataGetParams.java [moved from restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/ReadDataParams.java with 70% similarity]
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/api/RestconfServer.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/mdsal/MdsalRestconfServer.java
restconf/restconf-nb/src/test/java/org/opendaylight/restconf/nb/rfc8040/databind/jaxrs/QueryParamsTest.java

index 6e4ecc1b8c3d266cea4f9fa8eb1a764b2afdf3a0..5d39dcfe733884af9fbf9c6a2a78f7e6ff74acb5 100644 (file)
@@ -49,7 +49,6 @@ import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
 import org.opendaylight.restconf.common.errors.RestconfError;
 import org.opendaylight.restconf.common.errors.RestconfFuture;
 import org.opendaylight.restconf.common.patch.PatchStatusContext;
-import org.opendaylight.restconf.nb.rfc8040.ReadDataParams;
 import org.opendaylight.restconf.nb.rfc8040.URLConstants;
 import org.opendaylight.restconf.nb.rfc8040.databind.JsonChildBody;
 import org.opendaylight.restconf.nb.rfc8040.databind.JsonDataPostBody;
@@ -65,6 +64,7 @@ import org.opendaylight.restconf.nb.rfc8040.databind.XmlResourceBody;
 import org.opendaylight.restconf.nb.rfc8040.databind.jaxrs.QueryParams;
 import org.opendaylight.restconf.nb.rfc8040.legacy.ErrorTags;
 import org.opendaylight.restconf.nb.rfc8040.legacy.NormalizedNodePayload;
+import org.opendaylight.restconf.server.api.DataGetParams;
 import org.opendaylight.restconf.server.api.DataPostResult;
 import org.opendaylight.restconf.server.api.DataPostResult.CreateResource;
 import org.opendaylight.restconf.server.api.DataPostResult.InvokeOperation;
@@ -161,7 +161,7 @@ public final class JaxRsRestconf implements ParamConverterProvider {
         MediaType.TEXT_XML
     })
     public void dataGET(@Context final UriInfo uriInfo, @Suspended final AsyncResponse ar) {
-        final var readParams = QueryParams.newReadDataParams(uriInfo);
+        final var readParams = QueryParams.newDataGetParams(uriInfo);
         completeDataGET(server.dataGET(readParams), readParams, ar);
     }
 
@@ -183,12 +183,12 @@ public final class JaxRsRestconf implements ParamConverterProvider {
     })
     public void dataGET(@Encoded @PathParam("identifier") final ApiPath identifier, @Context final UriInfo uriInfo,
             @Suspended final AsyncResponse ar) {
-        final var readParams = QueryParams.newReadDataParams(uriInfo);
+        final var readParams = QueryParams.newDataGetParams(uriInfo);
         completeDataGET(server.dataGET(identifier, readParams), readParams, ar);
     }
 
     private static void completeDataGET(final RestconfFuture<NormalizedNodePayload> future,
-            final ReadDataParams readParams, final AsyncResponse ar) {
+            final DataGetParams readParams, final AsyncResponse ar) {
         future.addCallback(new JaxRsRestconfCallback<>(ar) {
             @Override
             Response transform(final NormalizedNodePayload result) {
index f168ae01f0d28a401533c491699686cc7ea02402..af27ce9e2ebf8aa3ae12ac6323475dbd5d45a885 100644 (file)
@@ -34,7 +34,7 @@ import org.opendaylight.restconf.api.query.StopTimeParam;
 import org.opendaylight.restconf.api.query.WithDefaultsParam;
 import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
 import org.opendaylight.restconf.common.errors.RestconfError;
-import org.opendaylight.restconf.nb.rfc8040.ReadDataParams;
+import org.opendaylight.restconf.server.api.DataGetParams;
 import org.opendaylight.yangtools.yang.common.ErrorTag;
 import org.opendaylight.yangtools.yang.common.ErrorType;
 
@@ -85,10 +85,10 @@ public final class QueryParams {
     /**
      * Parse parameters from URI request and check their types and values.
      *
-     * @param uriInfo    URI info
-     * @return {@link ReadDataParams}
+     * @param uriInfo URI info
+     * @return {@link DataGetParams}
      */
-    public static @NonNull ReadDataParams newReadDataParams(final UriInfo uriInfo) {
+    public static @NonNull DataGetParams newDataGetParams(final UriInfo uriInfo) {
         ContentParam content = ContentParam.ALL;
         DepthParam depth = null;
         FieldsParam fields = null;
@@ -132,7 +132,7 @@ public final class QueryParams {
             }
         }
 
-        return new ReadDataParams(content, depth, fields, withDefaults, prettyPrint);
+        return new DataGetParams(content, depth, fields, withDefaults, prettyPrint);
     }
 
     private static RestconfDocumentedException unhandledParam(final String operation, final String name) {
index e484fe7ae043bb95408fe52dc07336295403d56e..fa77e3d0ed1e58c058c292b55d321c8242337301 100644 (file)
@@ -16,7 +16,7 @@ import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.restconf.api.query.DepthParam;
 import org.opendaylight.restconf.api.query.PrettyPrintParam;
-import org.opendaylight.restconf.nb.rfc8040.ReadDataParams;
+import org.opendaylight.restconf.server.api.DataGetParams;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 
@@ -28,15 +28,15 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 @Beta
 // FIXME: this probably needs to be renamed back to WriterParams, or somesuch
 public final class QueryParameters {
-    private static final @NonNull QueryParameters EMPTY = of(ReadDataParams.empty());
+    private static final @NonNull QueryParameters EMPTY = of(DataGetParams.empty());
 
-    private final @NonNull ReadDataParams params;
+    private final @NonNull DataGetParams dataGetParams;
     private final List<YangInstanceIdentifier> fieldPaths;
     private final List<Set<QName>> fields;
 
-    private QueryParameters(final ReadDataParams params, final List<Set<QName>> fields,
+    private QueryParameters(final DataGetParams params, final List<Set<QName>> fields,
             final List<YangInstanceIdentifier> fieldPaths) {
-        this.params = requireNonNull(params);
+        this.dataGetParams = requireNonNull(params);
         this.fields = fields;
         this.fieldPaths = fieldPaths;
     }
@@ -45,29 +45,25 @@ public final class QueryParameters {
         return EMPTY;
     }
 
-    public static @NonNull QueryParameters of(final ReadDataParams params) {
+    public static @NonNull QueryParameters of(final DataGetParams params) {
         return new QueryParameters(params, null, null);
     }
 
-    public static @NonNull QueryParameters ofFields(final ReadDataParams params, final List<Set<QName>> fields) {
+    public static @NonNull QueryParameters ofFields(final DataGetParams params, final List<Set<QName>> fields) {
         return new QueryParameters(params, fields, null);
     }
 
-    public static @NonNull QueryParameters ofFieldPaths(final ReadDataParams params,
+    public static @NonNull QueryParameters ofFieldPaths(final DataGetParams params,
             final List<YangInstanceIdentifier> fieldPaths) {
         return new QueryParameters(params, null, fieldPaths);
     }
 
-    public @NonNull ReadDataParams params() {
-        return params;
-    }
-
     public @Nullable DepthParam depth() {
-        return params.depth();
+        return dataGetParams.depth();
     }
 
     public @Nullable PrettyPrintParam prettyPrint() {
-        return params.prettyPrint();
+        return dataGetParams.prettyPrint();
     }
 
     public @Nullable List<Set<QName>> fields() {
similarity index 70%
rename from restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/ReadDataParams.java
rename to restconf/restconf-nb/src/main/java/org/opendaylight/restconf/server/api/DataGetParams.java
index b736b1b45f0ab9cb598160e6cab141da2884eb05..f99970f3f16013e9b62c743842a3a45bec2121b9 100644 (file)
@@ -5,7 +5,7 @@
  * 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.nb.rfc8040;
+package org.opendaylight.restconf.server.api;
 
 import static java.util.Objects.requireNonNull;
 
@@ -19,22 +19,23 @@ import org.opendaylight.restconf.api.query.WithDefaultsParam;
 import org.opendaylight.yangtools.concepts.Immutable;
 
 /**
- * Parser and holder of query parameters from uriInfo for data and datastore read operations.
+ * Supported query parameters of {@code /data} {@code GET} HTTP operation, as defined in
+ * <a href="https://www.rfc-editor.org/rfc/rfc8040#section-4.3">RFC8040 section 4.3</a>.
  */
-public record ReadDataParams(
+public record DataGetParams(
         @NonNull ContentParam content,
         @Nullable DepthParam depth,
         @Nullable FieldsParam fields,
         @Nullable WithDefaultsParam withDefaults,
         @Nullable PrettyPrintParam prettyPrint) implements Immutable {
-    private static final @NonNull ReadDataParams EMPTY =
-        new ReadDataParams(ContentParam.ALL, null, null, null, null);
+    private static final @NonNull DataGetParams EMPTY =
+        new DataGetParams(ContentParam.ALL, null, null, null, null);
 
-    public ReadDataParams {
+    public DataGetParams {
         requireNonNull(content);
     }
 
-    public static @NonNull ReadDataParams empty() {
+    public static @NonNull DataGetParams empty() {
         return EMPTY;
     }
 }
index b5add24a9ebfa795e9cdbdb31ccc9980398683cc..4f3c202a6148de85e52507ae48e18344174b212a 100644 (file)
@@ -14,7 +14,6 @@ import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.restconf.api.ApiPath;
 import org.opendaylight.restconf.common.errors.RestconfFuture;
 import org.opendaylight.restconf.common.patch.PatchStatusContext;
-import org.opendaylight.restconf.nb.rfc8040.ReadDataParams;
 import org.opendaylight.restconf.nb.rfc8040.databind.ChildBody;
 import org.opendaylight.restconf.nb.rfc8040.databind.DataPostBody;
 import org.opendaylight.restconf.nb.rfc8040.databind.OperationInputBody;
@@ -45,19 +44,19 @@ public interface RestconfServer {
     /**
      * Return the content of the datastore.
      *
-     * @param readParams {@link ReadDataParams} for this request
+     * @param params {@link DataGetParams} for this request
      * @return A {@link RestconfFuture} of the {@link NormalizedNodePayload} content
      */
-    RestconfFuture<NormalizedNodePayload> dataGET(ReadDataParams readParams);
+    RestconfFuture<NormalizedNodePayload> dataGET(DataGetParams params);
 
     /**
      * Return the content of a data resource.
      *
      * @param identifier resource identifier
-     * @param readParams {@link ReadDataParams} for this request
+     * @param params {@link DataGetParams} for this request
      * @return A {@link RestconfFuture} of the {@link NormalizedNodePayload} content
      */
-    RestconfFuture<NormalizedNodePayload> dataGET(ApiPath identifier, ReadDataParams readParams);
+    RestconfFuture<NormalizedNodePayload> dataGET(ApiPath identifier, DataGetParams params);
 
     /**
      * Partially modify the target data resource, as defined in
index fa50703fc5a730ae83e927005e2bcb0e25bacf5a..89088e03c8e2e7a1a5c5b08c7000f3185a946392 100644 (file)
@@ -56,7 +56,6 @@ import org.opendaylight.restconf.common.errors.SettableRestconfFuture;
 import org.opendaylight.restconf.common.patch.PatchContext;
 import org.opendaylight.restconf.common.patch.PatchStatusContext;
 import org.opendaylight.restconf.nb.rfc8040.Insert;
-import org.opendaylight.restconf.nb.rfc8040.ReadDataParams;
 import org.opendaylight.restconf.nb.rfc8040.databind.ChildBody;
 import org.opendaylight.restconf.nb.rfc8040.databind.DataPostBody;
 import org.opendaylight.restconf.nb.rfc8040.databind.OperationInputBody;
@@ -69,6 +68,7 @@ import org.opendaylight.restconf.nb.rfc8040.rests.transactions.MdsalRestconfStra
 import org.opendaylight.restconf.nb.rfc8040.rests.transactions.RestconfStrategy;
 import org.opendaylight.restconf.nb.rfc8040.utils.parser.NetconfFieldsTranslator;
 import org.opendaylight.restconf.nb.rfc8040.utils.parser.WriterFieldsTranslator;
+import org.opendaylight.restconf.server.api.DataGetParams;
 import org.opendaylight.restconf.server.api.DataPatchPath;
 import org.opendaylight.restconf.server.api.DataPostPath;
 import org.opendaylight.restconf.server.api.DataPostResult;
@@ -230,41 +230,41 @@ public final class MdsalRestconfServer
     }
 
     @Override
-    public RestconfFuture<NormalizedNodePayload> dataGET(final ReadDataParams readParams) {
-        return readData(bindRequestRoot(), readParams);
+    public RestconfFuture<NormalizedNodePayload> dataGET(final DataGetParams params) {
+        return readData(bindRequestRoot(), params);
     }
 
     @Override
-    public RestconfFuture<NormalizedNodePayload> dataGET(final ApiPath identifier, final ReadDataParams readParams) {
-        return readData(bindRequestPath(identifier), readParams);
+    public RestconfFuture<NormalizedNodePayload> dataGET(final ApiPath identifier, final DataGetParams params) {
+        return readData(bindRequestPath(identifier), params);
     }
 
     private @NonNull RestconfFuture<NormalizedNodePayload> readData(final InstanceIdentifierContext reqPath,
-            final ReadDataParams readParams) {
-        final var fields = readParams.fields();
+            final DataGetParams params) {
+        final var fields = params.fields();
         final QueryParameters queryParams;
         if (fields != null) {
             final var modelContext = reqPath.databind().modelContext();
             final var schemaNode = (DataSchemaNode) reqPath.getSchemaNode();
             if (reqPath.getMountPoint() != null) {
-                queryParams = QueryParameters.ofFieldPaths(readParams, NetconfFieldsTranslator.translate(modelContext,
+                queryParams = QueryParameters.ofFieldPaths(params, NetconfFieldsTranslator.translate(modelContext,
                     schemaNode, fields));
             } else {
-                queryParams = QueryParameters.ofFields(readParams, WriterFieldsTranslator.translate(modelContext,
+                queryParams = QueryParameters.ofFields(params, WriterFieldsTranslator.translate(modelContext,
                     schemaNode, fields));
             }
         } else {
-            queryParams = QueryParameters.of(readParams);
+            queryParams = QueryParameters.of(params);
         }
 
         final var fieldPaths = queryParams.fieldPaths();
         final var strategy = getRestconfStrategy(reqPath.databind(), reqPath.getMountPoint());
         final NormalizedNode node;
         if (fieldPaths != null && !fieldPaths.isEmpty()) {
-            node = strategy.readData(readParams.content(), reqPath.getInstanceIdentifier(), readParams.withDefaults(),
+            node = strategy.readData(params.content(), reqPath.getInstanceIdentifier(), params.withDefaults(),
                 fieldPaths);
         } else {
-            node = strategy.readData(readParams.content(), reqPath.getInstanceIdentifier(), readParams.withDefaults());
+            node = strategy.readData(params.content(), reqPath.getInstanceIdentifier(), params.withDefaults());
         }
         if (node == null) {
             return RestconfFuture.failed(new RestconfDocumentedException(
index 337aea42206b18c2a55dc97b388c62079fdb1135..e612e0e4dd21317cd62c954bec6058a5ebdbd19a 100644 (file)
@@ -81,11 +81,11 @@ public class QueryParamsTest {
     public void checkParametersTypesNegativeTest() {
         final var mockDatabind = DatabindContext.ofModel(mock(EffectiveModelContext.class));
         assertInvalidIAE(ReceiveEventsParams::ofQueryParameters);
-        assertUnknownParam(QueryParams::newReadDataParams);
+        assertUnknownParam(QueryParams::newDataGetParams);
         assertInvalidIAE(queryParams -> Insert.ofQueryParameters(mockDatabind, queryParams));
 
         assertInvalidIAE(ReceiveEventsParams::ofQueryParameters, ContentParam.ALL);
-        assertInvalidParam(QueryParams::newReadDataParams, InsertParam.LAST);
+        assertInvalidParam(QueryParams::newDataGetParams, InsertParam.LAST);
         assertInvalidIAE(queryParams -> Insert.ofQueryParameters(mockDatabind, queryParams), ContentParam.ALL);
     }
 
@@ -95,7 +95,7 @@ public class QueryParamsTest {
     @Test
     public void parseUriParametersDefaultTest() {
         // no parameters, default values should be used
-        final var params = assertParams(QueryParams::newReadDataParams, new MultivaluedHashMap<>());
+        final var params = assertParams(QueryParams::newDataGetParams, new MultivaluedHashMap<>());
         assertEquals(ContentParam.ALL, params.content());
         assertNull(params.depth());
         assertNull(params.fields());
@@ -103,14 +103,14 @@ public class QueryParamsTest {
 
     @Test
     public void testInvalidValueReadDataParams() {
-        assertInvalidValue(QueryParams::newReadDataParams, ContentParam.uriName);
-        assertInvalidValue(QueryParams::newReadDataParams, DepthParam.uriName);
-        assertInvalidValue(QueryParams::newReadDataParams, WithDefaultsParam.uriName);
+        assertInvalidValue(QueryParams::newDataGetParams, ContentParam.uriName);
+        assertInvalidValue(QueryParams::newDataGetParams, DepthParam.uriName);
+        assertInvalidValue(QueryParams::newDataGetParams, WithDefaultsParam.uriName);
 
         // inserted value is too high
-        assertInvalidValue(QueryParams::newReadDataParams, DepthParam.uriName, "65536");
+        assertInvalidValue(QueryParams::newDataGetParams, DepthParam.uriName, "65536");
         // inserted value is too low
-        assertInvalidValue(QueryParams::newReadDataParams, DepthParam.uriName, "0");
+        assertInvalidValue(QueryParams::newDataGetParams, DepthParam.uriName, "0");
     }
 
     /**
@@ -118,7 +118,7 @@ public class QueryParamsTest {
      */
     @Test
     public void parseUriParametersWithDefaultAndTaggedTest() {
-        final var params = assertParams(QueryParams::newReadDataParams, WithDefaultsParam.uriName, "report-all-tagged");
+        final var params = assertParams(QueryParams::newDataGetParams, WithDefaultsParam.uriName, "report-all-tagged");
         assertEquals(WithDefaultsParam.REPORT_ALL_TAGGED, params.withDefaults());
     }
 
@@ -127,7 +127,7 @@ public class QueryParamsTest {
      */
     @Test
     public void parseUriParametersWithDefaultAndReportAllTest() {
-        final var params = assertParams(QueryParams::newReadDataParams, WithDefaultsParam.uriName, "report-all");
+        final var params = assertParams(QueryParams::newDataGetParams, WithDefaultsParam.uriName, "report-all");
         assertEquals(WithDefaultsParam.REPORT_ALL, params.withDefaults());
     }
 
@@ -137,7 +137,7 @@ public class QueryParamsTest {
      */
     @Test
     public void parseUriParametersWithDefaultAndNonTaggedTest() {
-        final var params = assertParams(QueryParams::newReadDataParams, WithDefaultsParam.uriName, "explicit");
+        final var params = assertParams(QueryParams::newDataGetParams, WithDefaultsParam.uriName, "explicit");
         assertEquals(WithDefaultsParam.EXPLICIT, params.withDefaults());
     }
 
@@ -153,7 +153,7 @@ public class QueryParamsTest {
         parameters.putSingle("depth", "10");
         parameters.putSingle("fields", "container-child");
 
-        final var params = assertParams(QueryParams::newReadDataParams, parameters);
+        final var params = assertParams(QueryParams::newDataGetParams, parameters);
         // content
         assertEquals(ContentParam.CONFIG, params.content());