From: Robert Varga Date: Sun, 24 Jan 2021 13:27:22 +0000 (+0100) Subject: Add query support for decimal64 X-Git-Tag: v5.0.17~2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=mdsal.git;a=commitdiff_plain;h=3de2725604b071165ea3d941b45abbd86bd78ffd Add query support for decimal64 As it turns out we are also missing support for leaves based on decimal64 type. Add it. JIRA: MDSAL-652 Change-Id: Id9c8954341492348e0fc36434336c5e522915709 Signed-off-by: Robert Varga (cherry picked from commit 0a107ff4517877e73c9d4da7e20a32fc53abde1f) --- diff --git a/binding/mdsal-binding-api/src/main/java/org/opendaylight/mdsal/binding/api/query/MatchBuilderPath.java b/binding/mdsal-binding-api/src/main/java/org/opendaylight/mdsal/binding/api/query/MatchBuilderPath.java index 11943c867e..24fcfc22ab 100644 --- a/binding/mdsal-binding-api/src/main/java/org/opendaylight/mdsal/binding/api/query/MatchBuilderPath.java +++ b/binding/mdsal-binding-api/src/main/java/org/opendaylight/mdsal/binding/api/query/MatchBuilderPath.java @@ -9,6 +9,7 @@ package org.opendaylight.mdsal.binding.api.query; import com.google.common.annotations.Beta; import java.io.Serializable; +import java.math.BigDecimal; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.concepts.Mutable; import org.opendaylight.yangtools.yang.binding.BaseIdentity; @@ -71,6 +72,15 @@ public interface MatchBuilderPath ex */ @NonNull ValueMatchBuilder leaf(BooleanLeafReference methodRef); + /** + * Match an {@code decimal64} leaf's value. + * + * @param methodRef method reference to the getter method + * @return A {@link ValueMatchBuilder} + * @throws NullPointerException if methodRef is null + */ + @NonNull ComparableMatchBuilder leaf(Decimal64LeafReference methodRef); + /** * Match an {@code empty} leaf's value. * @@ -212,6 +222,11 @@ public interface MatchBuilderPath ex } + @FunctionalInterface + public interface Decimal64LeafReference

extends LeafReference { + + } + @FunctionalInterface public interface EmptyLeafReference

extends LeafReference { diff --git a/binding/mdsal-binding-api/src/test/java/org/opendaylight/mdsal/binding/api/query/QueryBuilderExamples.java b/binding/mdsal-binding-api/src/test/java/org/opendaylight/mdsal/binding/api/query/QueryBuilderExamples.java index a0e15612a8..44a85f922a 100644 --- a/binding/mdsal-binding-api/src/test/java/org/opendaylight/mdsal/binding/api/query/QueryBuilderExamples.java +++ b/binding/mdsal-binding-api/src/test/java/org/opendaylight/mdsal/binding/api/query/QueryBuilderExamples.java @@ -7,6 +7,7 @@ */ package org.opendaylight.mdsal.binding.api.query; +import java.math.BigDecimal; import org.mockito.Mock; import org.opendaylight.yang.gen.v1.mdsal.query.norev.Foo; import org.opendaylight.yang.gen.v1.mdsal.query.norev.first.grp.System; @@ -14,6 +15,7 @@ import org.opendaylight.yang.gen.v1.mdsal.query.norev.first.grp.SystemKey; import org.opendaylight.yang.gen.v1.mdsal.query.norev.second.grp.Alarms; import org.opendaylight.yang.gen.v1.mdsal.query.norev.third.grp.AffectedUsers; import org.opendaylight.yang.gen.v1.mdsal426.norev.BooleanCont; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.DecimalContainer; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.Uint64; @@ -141,4 +143,13 @@ public class QueryBuilderExamples { .valueEquals(true) .build(); } + + public QueryExpression selectDecimal64() { + return factory + .querySubtree(InstanceIdentifier.create(DecimalContainer.class)) + .matching() + .leaf(DecimalContainer::getDecimalLeaf5) + .valueEquals(BigDecimal.ONE) + .build(); + } } diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/query/DefaultMatchBuilderPath.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/query/DefaultMatchBuilderPath.java index cadd5b32d0..e6d4667873 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/query/DefaultMatchBuilderPath.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/query/DefaultMatchBuilderPath.java @@ -9,6 +9,7 @@ package org.opendaylight.mdsal.binding.dom.adapter.query; import static java.util.Objects.requireNonNull; +import java.math.BigDecimal; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.mdsal.binding.api.query.ComparableMatchBuilder; import org.opendaylight.mdsal.binding.api.query.MatchBuilderPath; @@ -69,6 +70,11 @@ final class DefaultMatchBuilderPath return defaultFor(methodRef); } + @Override + public ComparableMatchBuilder leaf(final Decimal64LeafReference methodRef) { + return comparableFor(methodRef); + } + @Override public ValueMatchBuilder leaf(final EmptyLeafReference methodRef) { return defaultFor(methodRef);