From: Robert Varga Date: Sat, 23 Oct 2021 19:51:40 +0000 (+0200) Subject: Use DepthParameter in QueryParameters X-Git-Tag: v2.0.6~28 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=83e1e2992b9092988c53a376380f0f9adcaf3eb2;p=netconf.git Use DepthParameter in QueryParameters 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 --- diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/DepthParameter.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/DepthParameter.java index ce25524e00..acad8be197 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/DepthParameter.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/DepthParameter.java @@ -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; } diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/JsonNormalizedNodeBodyWriter.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/JsonNormalizedNodeBodyWriter.java index 51eab9c83e..fd4b6a8f3f 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/JsonNormalizedNodeBodyWriter.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/JsonNormalizedNodeBodyWriter.java @@ -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 context, final NormalizedNode data, - final Integer depth, final List> fields) throws IOException { + final DepthParameter depth, final List> 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 context, final SchemaPath path, final JsonWriter jsonWriter, - final Integer depth, final List> fields) { + final DepthParameter depth, final List> fields) { final SchemaNode schema = context.getSchemaNode(); final JSONCodecFactory codecs = getCodecFactory(context); diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/ParameterAwareNormalizedNodeWriter.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/ParameterAwareNormalizedNodeWriter.java index b7278c4678..87bfbdaccf 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/ParameterAwareNormalizedNodeWriter.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/ParameterAwareNormalizedNodeWriter.java @@ -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> fields; protected int currentDepth = 0; - private ParameterAwareNormalizedNodeWriter(final NormalizedNodeStreamWriter writer, final Integer maxDepth, + private ParameterAwareNormalizedNodeWriter(final NormalizedNodeStreamWriter writer, final DepthParameter depth, final List> 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> fields) { + final NormalizedNodeStreamWriter writer, final DepthParameter maxDepth, final List> 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> 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> fields) { - super(writer, maxDepth, fields); + super(writer, depth, fields); } @Override diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/XmlNormalizedNodeBodyWriter.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/XmlNormalizedNodeBodyWriter.java index ac440b23bb..fb3d4e979c 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/XmlNormalizedNodeBodyWriter.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/XmlNormalizedNodeBodyWriter.java @@ -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> 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> fields) { final NormalizedNodeStreamWriter xmlStreamWriter = XMLStreamNormalizedNodeStreamWriter .create(xmlWriter, schemaContext, schemaPath); diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/legacy/QueryParameters.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/legacy/QueryParameters.java index 3979a20a1e..a928a9ddd1 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/legacy/QueryParameters.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/legacy/QueryParameters.java @@ -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> 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> 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; } diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/ReadDataTransactionUtil.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/ReadDataTransactionUtil.java index dae342590d..62b795d7e8 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/ReadDataTransactionUtil.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/ReadDataTransactionUtil.java @@ -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; * */ 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 ALLOWED_PARAMETERS = Set.of( ContentParameter.uriName(), DepthParameter.uriName(), FieldsParameter.uriName(), WithDefaultsParameter.uriName()); private static final List DEFAULT_CONTENT = List.of(ContentParameter.ALL.uriValue()); - private static final List DEFAULT_DEPTH = List.of(UNBOUNDED); + private static final List DEFAULT_DEPTH = List.of(DepthParameter.unboundedUriValue()); private static final List 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 diff --git a/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/ParameterAwareNormalizedNodeWriterDepthTest.java b/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/ParameterAwareNormalizedNodeWriterDepthTest.java index ba3a8aff39..360607d360 100644 --- a/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/ParameterAwareNormalizedNodeWriterDepthTest.java +++ b/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/ParameterAwareNormalizedNodeWriterDepthTest.java @@ -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); diff --git a/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/ParameterAwareNormalizedNodeWriterParametersTest.java b/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/ParameterAwareNormalizedNodeWriterParametersTest.java index 3c984b955b..5f056e3bbc 100644 --- a/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/ParameterAwareNormalizedNodeWriterParametersTest.java +++ b/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/ParameterAwareNormalizedNodeWriterParametersTest.java @@ -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); diff --git a/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/ReadDataTransactionUtilTest.java b/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/ReadDataTransactionUtilTest.java index 8755114fa7..3761fdaeb0 100644 --- a/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/ReadDataTransactionUtilTest.java +++ b/restconf/restconf-nb-rfc8040/src/test/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/ReadDataTransactionUtilTest.java @@ -348,11 +348,10 @@ public class ReadDataTransactionUtilTest { final UriInfo uriInfo = mock(UriInfo.class); final MultivaluedHashMap 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()); } /**