Use DepthParameter in QueryParameters 90/98090/8
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 23 Oct 2021 19:51:40 +0000 (21:51 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Sun, 24 Oct 2021 08:06:05 +0000 (10:06 +0200)
This cleans up more of the parsing mess we've had. We now have a
(relatively) type-safe dispatch across code.

Change-Id: Ia5e791b5ec391f61613dc34582a182b36430b196
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/DepthParameter.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/JsonNormalizedNodeBodyWriter.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/ParameterAwareNormalizedNodeWriter.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/XmlNormalizedNodeBodyWriter.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/legacy/QueryParameters.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/ReadDataTransactionUtil.java
restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/ParameterAwareNormalizedNodeWriterDepthTest.java
restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/ParameterAwareNormalizedNodeWriterParametersTest.java
restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/ReadDataTransactionUtilTest.java

index ce25524e0015eef2303dcf7472267d6097d5ace9..acad8be1974739be24b1e1aa4c44ab7f121b7033 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.restconf.nb.rfc8040;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
+import com.google.common.annotations.Beta;
 import java.net.URI;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
@@ -20,6 +21,8 @@ import org.opendaylight.yangtools.concepts.Immutable;
  */
 public final class DepthParameter implements Immutable {
     private static final @NonNull URI CAPABILITY = URI.create("urn:ietf:params:restconf:capability:depth:1.0");
+    private static final @NonNull DepthParameter MIN = of(1);
+    private static final @NonNull DepthParameter MAX = of(65535);
 
     private final int value;
 
@@ -28,12 +31,22 @@ public final class DepthParameter implements Immutable {
         checkArgument(value >= 1 && value <= 65535);
     }
 
-    public static DepthParameter of(final int value) {
+    public static @NonNull DepthParameter of(final int value) {
         return new DepthParameter(value);
     }
 
+    @Beta
+    public static @NonNull DepthParameter min() {
+        return MIN;
+    }
+
+    @Beta
+    public static @NonNull DepthParameter max() {
+        return MAX;
+    }
+
     public static @Nullable DepthParameter forUriValue(final String uriValue) {
-        return uriValue.equals("unbounded") ? null : of(Integer.parseUnsignedInt(uriValue, 10));
+        return uriValue.equals(unboundedUriValue()) ? null : of(Integer.parseUnsignedInt(uriValue, 10));
     }
 
     public int value() {
@@ -48,6 +61,10 @@ public final class DepthParameter implements Immutable {
         return String.valueOf(value);
     }
 
+    public static String unboundedUriValue() {
+        return "unbounded";
+    }
+
     public static @NonNull URI capabilityUri() {
         return CAPABILITY;
     }
index 51eab9c83ed62c79c14fe9c6b4a7f05a29a590a6..fd4b6a8f3f94bcae741293c7ee48ca7257b69696 100644 (file)
@@ -23,6 +23,7 @@ import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.ext.Provider;
 import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
+import org.opendaylight.restconf.nb.rfc8040.DepthParameter;
 import org.opendaylight.restconf.nb.rfc8040.MediaTypes;
 import org.opendaylight.restconf.nb.rfc8040.jersey.providers.api.RestconfNormalizedNodeWriter;
 import org.opendaylight.restconf.nb.rfc8040.legacy.NormalizedNodePayload;
@@ -84,7 +85,7 @@ public class JsonNormalizedNodeBodyWriter extends AbstractNormalizedNodeBodyWrit
 
     private static void writeNormalizedNode(final JsonWriter jsonWriter,
             final SchemaPath path, final InstanceIdentifierContext<SchemaNode> context, final NormalizedNode data,
-            final Integer depth, final List<Set<QName>> fields) throws IOException {
+            final DepthParameter depth, final List<Set<QName>> fields) throws IOException {
         final RestconfNormalizedNodeWriter nnWriter;
 
         if (context.getSchemaNode() instanceof RpcDefinition) {
@@ -147,7 +148,7 @@ public class JsonNormalizedNodeBodyWriter extends AbstractNormalizedNodeBodyWrit
 
     private static RestconfNormalizedNodeWriter createNormalizedNodeWriter(
             final InstanceIdentifierContext<SchemaNode> context, final SchemaPath path, final JsonWriter jsonWriter,
-            final Integer depth, final List<Set<QName>> fields) {
+            final DepthParameter depth, final List<Set<QName>> fields) {
 
         final SchemaNode schema = context.getSchemaNode();
         final JSONCodecFactory codecs = getCodecFactory(context);
index b7278c46789f0fff383901e8db3d4df3ce0524df..87bfbdaccfa33fc1905043e1c21a43b1ec78cd5b 100644 (file)
@@ -19,6 +19,7 @@ import java.util.Map.Entry;
 import java.util.Optional;
 import java.util.Set;
 import javax.xml.transform.dom.DOMSource;
+import org.opendaylight.restconf.nb.rfc8040.DepthParameter;
 import org.opendaylight.restconf.nb.rfc8040.jersey.providers.api.RestconfNormalizedNodeWriter;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
@@ -55,10 +56,10 @@ public class ParameterAwareNormalizedNodeWriter implements RestconfNormalizedNod
     protected final List<Set<QName>> fields;
     protected int currentDepth = 0;
 
-    private ParameterAwareNormalizedNodeWriter(final NormalizedNodeStreamWriter writer, final Integer maxDepth,
+    private ParameterAwareNormalizedNodeWriter(final NormalizedNodeStreamWriter writer, final DepthParameter depth,
                                                final List<Set<QName>> fields) {
         this.writer = requireNonNull(writer);
-        this.maxDepth = maxDepth;
+        maxDepth = depth == null ? null : depth.value();
         this.fields = fields;
     }
 
@@ -75,33 +76,31 @@ public class ParameterAwareNormalizedNodeWriter implements RestconfNormalizedNod
      * @return A new instance.
      */
     public static ParameterAwareNormalizedNodeWriter forStreamWriter(
-            final NormalizedNodeStreamWriter writer, final Integer maxDepth, final List<Set<QName>> fields) {
+            final NormalizedNodeStreamWriter writer, final DepthParameter maxDepth, final List<Set<QName>> fields) {
         return forStreamWriter(writer, true,  maxDepth, fields);
     }
 
     /**
      * Create a new writer backed by a {@link NormalizedNodeStreamWriter}. Unlike the simple
-     * {@link #forStreamWriter(NormalizedNodeStreamWriter, Integer, List)}
-     * method, this allows the caller to switch off RFC6020 XML compliance, providing better
-     * throughput. The reason is that the XML mapping rules in RFC6020 require the encoding
-     * to emit leaf nodes which participate in a list's key first and in the order in which
-     * they are defined in the key. For JSON, this requirement is completely relaxed and leaves
-     * can be ordered in any way we see fit. The former requires a bit of work: first a lookup
-     * for each key and then for each emitted node we need to check whether it was already
-     * emitted.
+     * {@link #forStreamWriter(NormalizedNodeStreamWriter, DepthParameter, List)} method, this allows the caller to
+     * switch off RFC6020 XML compliance, providing better throughput. The reason is that the XML mapping rules in
+     * RFC6020 require the encoding to emit leaf nodes which participate in a list's key first and in the order in which
+     * they are defined in the key. For JSON, this requirement is completely relaxed and leaves can be ordered in any
+     * way we see fit. The former requires a bit of work: first a lookup for each key and then for each emitted node we
+     * need to check whether it was already emitted.
      *
      * @param writer Back-end writer
      * @param orderKeyLeaves whether the returned instance should be RFC6020 XML compliant.
-     * @param maxDepth Maximal depth to write
+     * @param depth Maximal depth to write
      * @param fields Selected child nodes to write
      * @return A new instance.
      */
     public static ParameterAwareNormalizedNodeWriter forStreamWriter(final NormalizedNodeStreamWriter writer,
                                                                      final boolean orderKeyLeaves,
-                                                                     final Integer maxDepth,
+                                                                     final DepthParameter depth,
                                                                      final List<Set<QName>> fields) {
-        return orderKeyLeaves ? new OrderedParameterAwareNormalizedNodeWriter(writer, maxDepth, fields)
-                : new ParameterAwareNormalizedNodeWriter(writer, maxDepth, fields);
+        return orderKeyLeaves ? new OrderedParameterAwareNormalizedNodeWriter(writer, depth, fields)
+                : new ParameterAwareNormalizedNodeWriter(writer, depth, fields);
     }
 
     /**
@@ -323,9 +322,9 @@ public class ParameterAwareNormalizedNodeWriter implements RestconfNormalizedNod
     private static final class OrderedParameterAwareNormalizedNodeWriter extends ParameterAwareNormalizedNodeWriter {
         private static final Logger LOG = LoggerFactory.getLogger(OrderedParameterAwareNormalizedNodeWriter.class);
 
-        OrderedParameterAwareNormalizedNodeWriter(final NormalizedNodeStreamWriter writer, final Integer maxDepth,
+        OrderedParameterAwareNormalizedNodeWriter(final NormalizedNodeStreamWriter writer, final DepthParameter depth,
                                                   final List<Set<QName>> fields) {
-            super(writer, maxDepth, fields);
+            super(writer, depth, fields);
         }
 
         @Override
index ac440b23bb4232de11f2390fa26f3ceac632e79b..fb3d4e979c44bdd7ff75d427eacef914f2aba88e 100644 (file)
@@ -27,6 +27,7 @@ import javax.xml.stream.XMLOutputFactory;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
 import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
+import org.opendaylight.restconf.nb.rfc8040.DepthParameter;
 import org.opendaylight.restconf.nb.rfc8040.MediaTypes;
 import org.opendaylight.restconf.nb.rfc8040.jersey.providers.api.RestconfNormalizedNodeWriter;
 import org.opendaylight.restconf.nb.rfc8040.legacy.NormalizedNodePayload;
@@ -87,7 +88,7 @@ public class XmlNormalizedNodeBodyWriter extends AbstractNormalizedNodeBodyWrite
     }
 
     private static void writeNormalizedNode(final XMLStreamWriter xmlWriter, final SchemaPath path,
-            final InstanceIdentifierContext<?> pathContext, final NormalizedNode data, final Integer depth,
+            final InstanceIdentifierContext<?> pathContext, final NormalizedNode data, final DepthParameter depth,
             final List<Set<QName>> fields) throws IOException {
         final RestconfNormalizedNodeWriter nnWriter;
         final EffectiveModelContext schemaCtx = pathContext.getSchemaContext();
@@ -134,7 +135,7 @@ public class XmlNormalizedNodeBodyWriter extends AbstractNormalizedNodeBodyWrite
     }
 
     private static RestconfNormalizedNodeWriter createNormalizedNodeWriter(final XMLStreamWriter xmlWriter,
-            final EffectiveModelContext schemaContext, final SchemaPath schemaPath, final Integer depth,
+            final EffectiveModelContext schemaContext, final SchemaPath schemaPath, final DepthParameter depth,
             final List<Set<QName>> fields) {
         final NormalizedNodeStreamWriter xmlStreamWriter = XMLStreamNormalizedNodeStreamWriter
                 .create(xmlWriter, schemaContext, schemaPath);
index 3979a20a1ec3f8a804288258c6953cd445ef401e..a928a9ddd169f031ee6a11f3811658e6ae27099d 100644 (file)
@@ -10,7 +10,9 @@ package org.opendaylight.restconf.nb.rfc8040.legacy;
 import java.util.List;
 import java.util.Set;
 import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.restconf.nb.rfc8040.ContentParameter;
+import org.opendaylight.restconf.nb.rfc8040.DepthParameter;
 import org.opendaylight.restconf.nb.rfc8040.WithDefaultsParameter;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -26,8 +28,7 @@ public final class QueryParameters {
         private List<Set<QName>> fields;
         private ContentParameter content;
         private WithDefaultsParameter withDefault;
-        // FIXME: this should be a DepthParameter
-        private Integer depth;
+        private DepthParameter depth;
         private boolean prettyPrint;
         private boolean tagged;
 
@@ -40,7 +41,7 @@ public final class QueryParameters {
             return this;
         }
 
-        public Builder setDepth(final int depth) {
+        public Builder setDepth(final DepthParameter depth) {
             this.depth = depth;
             return this;
         }
@@ -82,7 +83,7 @@ public final class QueryParameters {
     private final List<Set<QName>> fields;
     private final WithDefaultsParameter withDefault;
     private final ContentParameter content;
-    private final Integer depth;
+    private final DepthParameter depth;
     private final boolean prettyPrint;
     private final boolean tagged;
 
@@ -108,7 +109,7 @@ public final class QueryParameters {
         return content;
     }
 
-    public Integer getDepth() {
+    public @Nullable DepthParameter getDepth() {
         return depth;
     }
 
index dae342590d54af6b5b7b48373df5c7bb86ecf9bd..62b795d7e84b3312059a84142bcef0182c259460 100644 (file)
@@ -11,7 +11,6 @@ import static org.opendaylight.restconf.nb.rfc8040.utils.parser.ParserFieldsPara
 import static org.opendaylight.restconf.nb.rfc8040.utils.parser.ParserFieldsParameter.parseFieldsPaths;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.primitives.Ints;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.util.Arrays;
 import java.util.Collection;
@@ -86,19 +85,13 @@ import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
  * </ul>
  */
 public final class ReadDataTransactionUtil {
-    // depth values
-    // FIXME: these are known to DepthParameter
-    private static final String UNBOUNDED = "unbounded";
-    private static final int MIN_DEPTH = 1;
-    private static final int MAX_DEPTH = 65535;
-
     private static final Set<String> ALLOWED_PARAMETERS = Set.of(
         ContentParameter.uriName(),
         DepthParameter.uriName(),
         FieldsParameter.uriName(),
         WithDefaultsParameter.uriName());
     private static final List<String> DEFAULT_CONTENT = List.of(ContentParameter.ALL.uriValue());
-    private static final List<String> DEFAULT_DEPTH = List.of(UNBOUNDED);
+    private static final List<String> DEFAULT_DEPTH = List.of(DepthParameter.unboundedUriValue());
     private static final List<String> POSSIBLE_CONTENT = Arrays.stream(ContentParameter.values())
         .map(ContentParameter::uriValue)
         .collect(Collectors.toUnmodifiableList());
@@ -144,23 +137,18 @@ public final class ReadDataTransactionUtil {
         checkParameterCount(withDefaults, WithDefaultsParameter.uriName());
 
         // check and set content
-        final String contentValueStr = content.get(0);
+        final String contentStr = content.get(0);
         builder.setContent(RestconfDocumentedException.throwIfNull(
-            ContentParameter.forUriValue(contentValueStr), ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE,
-            "Invalid content parameter: %s, allowed values are %s", contentValueStr, POSSIBLE_CONTENT));
-
-        // check and set depth
-        if (!depth.get(0).equals(UNBOUNDED)) {
-            final Integer value = Ints.tryParse(depth.get(0));
-
-            if (value == null || value < MIN_DEPTH || value > MAX_DEPTH) {
-                throw new RestconfDocumentedException(
-                        new RestconfError(ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE,
-                                "Invalid depth parameter: " + depth, null,
-                                "The depth parameter must be an integer between 1 and 65535 or \"unbounded\""));
-            } else {
-                builder.setDepth(value);
-            }
+            ContentParameter.forUriValue(contentStr), ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE,
+            "Invalid content parameter: %s, allowed values are %s", contentStr, POSSIBLE_CONTENT));
+
+        final String depthStr = depth.get(0);
+        try {
+            builder.setDepth(DepthParameter.forUriValue(depthStr));
+        } catch (IllegalArgumentException e) {
+            throw new RestconfDocumentedException(e, new RestconfError(ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE,
+                "Invalid depth parameter: " + depthStr, null,
+                "The depth parameter must be an integer between 1 and 65535 or \"unbounded\""));
         }
 
         // check and set fields
index ba3a8aff393579b2bd436920fedf0e773d95a921..360607d360d66718e01760722b4343d9f3e3b0e8 100644 (file)
@@ -24,6 +24,7 @@ import org.junit.runner.RunWith;
 import org.mockito.InOrder;
 import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
+import org.opendaylight.restconf.nb.rfc8040.DepthParameter;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
@@ -133,8 +134,8 @@ public class ParameterAwareNormalizedNodeWriterDepthTest {
      */
     @Test
     public void writeContainerWithoutChildrenDepthTest() throws Exception {
-        final ParameterAwareNormalizedNodeWriter parameterWriter = ParameterAwareNormalizedNodeWriter
-                .forStreamWriter(writer, 1, null);
+        final ParameterAwareNormalizedNodeWriter parameterWriter = ParameterAwareNormalizedNodeWriter.forStreamWriter(
+                writer, DepthParameter.min(), null);
 
         parameterWriter.write(containerNodeData);
 
@@ -151,7 +152,7 @@ public class ParameterAwareNormalizedNodeWriterDepthTest {
     @Test
     public void writeContainerWithChildrenDepthTest() throws Exception {
         final ParameterAwareNormalizedNodeWriter parameterWriter = ParameterAwareNormalizedNodeWriter.forStreamWriter(
-                writer, Integer.MAX_VALUE, null);
+                writer, DepthParameter.max(), null);
 
         parameterWriter.write(containerNodeData);
 
@@ -170,8 +171,8 @@ public class ParameterAwareNormalizedNodeWriterDepthTest {
      */
     @Test
     public void writeMapNodeWithoutChildrenDepthTest() throws Exception {
-        final ParameterAwareNormalizedNodeWriter parameterWriter = ParameterAwareNormalizedNodeWriter
-                .forStreamWriter(writer, 1, null);
+        final ParameterAwareNormalizedNodeWriter parameterWriter = ParameterAwareNormalizedNodeWriter.forStreamWriter(
+                writer, DepthParameter.min(), null);
 
         parameterWriter.write(mapNodeData);
 
@@ -193,7 +194,7 @@ public class ParameterAwareNormalizedNodeWriterDepthTest {
     @Test
     public void writeMapNodeWithChildrenDepthTest() throws Exception {
         final ParameterAwareNormalizedNodeWriter parameterWriter = ParameterAwareNormalizedNodeWriter.forStreamWriter(
-                writer, Integer.MAX_VALUE, null);
+                writer, DepthParameter.max(), null);
 
         parameterWriter.write(mapNodeData);
 
@@ -220,7 +221,7 @@ public class ParameterAwareNormalizedNodeWriterDepthTest {
     @Test
     public void writeLeafSetNodeWithoutChildrenDepthTest() throws Exception {
         final ParameterAwareNormalizedNodeWriter parameterWriter = ParameterAwareNormalizedNodeWriter.forStreamWriter(
-                writer, 1, null);
+                writer, DepthParameter.min(), null);
 
         parameterWriter.write(leafSetNodeData);
 
@@ -237,7 +238,7 @@ public class ParameterAwareNormalizedNodeWriterDepthTest {
     @Test
     public void writeLeafSetNodeWithChildrenDepthTest() throws Exception {
         final ParameterAwareNormalizedNodeWriter parameterWriter = ParameterAwareNormalizedNodeWriter.forStreamWriter(
-                writer, Integer.MAX_VALUE, null);
+                writer, DepthParameter.max(), null);
 
         parameterWriter.write(leafSetNodeData);
 
@@ -256,7 +257,7 @@ public class ParameterAwareNormalizedNodeWriterDepthTest {
     @Test
     public void writeLeafSetEntryNodeDepthTest() throws Exception {
         final ParameterAwareNormalizedNodeWriter parameterWriter = ParameterAwareNormalizedNodeWriter.forStreamWriter(
-                writer, Integer.MAX_VALUE, null);
+                writer, DepthParameter.max(), null);
 
         parameterWriter.write(leafSetEntryNodeData);
 
@@ -274,7 +275,7 @@ public class ParameterAwareNormalizedNodeWriterDepthTest {
     @Test
     public void writeMapEntryNodeUnorderedOnlyKeysDepthTest() throws Exception {
         final ParameterAwareNormalizedNodeWriter parameterWriter = ParameterAwareNormalizedNodeWriter.forStreamWriter(
-                writer, false, 1, null);
+                writer, false, DepthParameter.min(), null);
 
         parameterWriter.write(mapEntryNodeData);
 
@@ -294,7 +295,7 @@ public class ParameterAwareNormalizedNodeWriterDepthTest {
     @Test
     public void writeMapEntryNodeUnorderedDepthTest() throws Exception {
         final ParameterAwareNormalizedNodeWriter parameterWriter = ParameterAwareNormalizedNodeWriter.forStreamWriter(
-                writer, false, Integer.MAX_VALUE, null);
+                writer, false, DepthParameter.max(), null);
 
         parameterWriter.write(mapEntryNodeData);
 
@@ -315,7 +316,7 @@ public class ParameterAwareNormalizedNodeWriterDepthTest {
     @Test
     public void writeMapEntryNodeOrderedWithoutChildrenTest() throws Exception {
         final ParameterAwareNormalizedNodeWriter parameterWriter = ParameterAwareNormalizedNodeWriter.forStreamWriter(
-                writer, true, 1, null);
+                writer, true, DepthParameter.min(), null);
 
         parameterWriter.write(mapEntryNodeData);
 
@@ -336,7 +337,7 @@ public class ParameterAwareNormalizedNodeWriterDepthTest {
     @Test
     public void writeMapEntryNodeOrderedTest() throws Exception {
         final ParameterAwareNormalizedNodeWriter parameterWriter = ParameterAwareNormalizedNodeWriter.forStreamWriter(
-                writer, true, Integer.MAX_VALUE, null);
+                writer, true, DepthParameter.max(), null);
 
         parameterWriter.write(mapEntryNodeData);
 
index 3c984b955b3698e9dbaf1af4f3e34bdd1a24f3b9..5f056e3bbc92323c5b64ae1c55b75909f08e4851 100644 (file)
@@ -21,6 +21,7 @@ import org.mockito.InOrder;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.junit.MockitoJUnitRunner;
+import org.opendaylight.restconf.nb.rfc8040.DepthParameter;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
@@ -99,7 +100,7 @@ public class ParameterAwareNormalizedNodeWriterParametersTest {
         limitedFields.add(Sets.newHashSet(leafSetEntryNodeIdentifier.getNodeType()));
 
         final ParameterAwareNormalizedNodeWriter parameterWriter = ParameterAwareNormalizedNodeWriter.forStreamWriter(
-                writer, 1, limitedFields);
+                writer, DepthParameter.min(), limitedFields);
 
         parameterWriter.write(containerNodeData);
 
index 8755114fa7fc4db30dd5e119d4186f6ab1f28884..3761fdaeb0be0c5907905948c6ba562d9fd25da2 100644 (file)
@@ -348,11 +348,10 @@ public class ReadDataTransactionUtilTest {
         final UriInfo uriInfo = mock(UriInfo.class);
         final MultivaluedHashMap<String, String> parameters = new MultivaluedHashMap<>();
 
-        final String depth = "10";
         final String fields = containerChildQName.getLocalName();
 
         parameters.put("content", List.of("config"));
-        parameters.put("depth", List.of(depth));
+        parameters.put("depth", List.of("10"));
         parameters.put("fields", List.of(fields));
 
         when(uriInfo.getQueryParameters()).thenReturn(parameters);
@@ -363,20 +362,15 @@ public class ReadDataTransactionUtilTest {
         assertEquals(ContentParameter.CONFIG, parsedParameters.getContent());
 
         // depth
-        assertNotNull("Not correctly parsed URI parameter",
-                parsedParameters.getDepth());
-        assertEquals("Not correctly parsed URI parameter",
-                depth, parsedParameters.getDepth().toString());
+        final DepthParameter depth = parsedParameters.getDepth();
+        assertNotNull(depth);
+        assertEquals(10, depth.value());
 
         // fields
-        assertNotNull("Not correctly parsed URI parameter",
-                parsedParameters.getFields());
-        assertEquals("Not correctly parsed URI parameter",
-                1, parsedParameters.getFields().size());
-        assertEquals("Not correctly parsed URI parameter",
-                1, parsedParameters.getFields().get(0).size());
-        assertEquals("Not correctly parsed URI parameter",
-                containerChildQName, parsedParameters.getFields().get(0).iterator().next());
+        assertNotNull(parsedParameters.getFields());
+        assertEquals(1, parsedParameters.getFields().size());
+        assertEquals(1, parsedParameters.getFields().get(0).size());
+        assertEquals(containerChildQName, parsedParameters.getFields().get(0).iterator().next());
     }
 
     /**