Add query support for decimal64 96/94796/4
authorRobert Varga <robert.varga@pantheon.tech>
Sun, 24 Jan 2021 13:27:22 +0000 (14:27 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 26 Jan 2021 08:39:08 +0000 (09:39 +0100)
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 <robert.varga@pantheon.tech>
(cherry picked from commit 0a107ff4517877e73c9d4da7e20a32fc53abde1f)

binding/mdsal-binding-api/src/main/java/org/opendaylight/mdsal/binding/api/query/MatchBuilderPath.java
binding/mdsal-binding-api/src/test/java/org/opendaylight/mdsal/binding/api/query/QueryBuilderExamples.java
binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/query/DefaultMatchBuilderPath.java

index 11943c867ec850eafcc4bdfa75725cdc109adab7..24fcfc22ab745077396ff77bc81c62e21b987ff0 100644 (file)
@@ -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<O extends DataObject, T extends DataObject> ex
      */
     @NonNull ValueMatchBuilder<O, Boolean> leaf(BooleanLeafReference<T> 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<O, BigDecimal> leaf(Decimal64LeafReference<T> methodRef);
+
     /**
      * Match an {@code empty} leaf's value.
      *
@@ -212,6 +222,11 @@ public interface MatchBuilderPath<O extends DataObject, T extends DataObject> ex
 
     }
 
+    @FunctionalInterface
+    public interface Decimal64LeafReference<P> extends LeafReference<P, BigDecimal> {
+
+    }
+
     @FunctionalInterface
     public interface EmptyLeafReference<P> extends LeafReference<P, Empty> {
 
index a0e15612a85270e9d09984220e5076f4c5c604e5..44a85f922a41eac6b80f56606b7380837c9c9135 100644 (file)
@@ -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<DecimalContainer> selectDecimal64() {
+        return factory
+                .querySubtree(InstanceIdentifier.create(DecimalContainer.class))
+                .matching()
+                    .leaf(DecimalContainer::getDecimalLeaf5)
+                    .valueEquals(BigDecimal.ONE)
+                .build();
+    }
 }
index cadd5b32d09e1e04bd85435817166d9bdc3cd603..e6d46678730c193980b42cd417976e3b1b9834a3 100644 (file)
@@ -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<O extends DataObject, T extends DataObject>
         return defaultFor(methodRef);
     }
 
+    @Override
+    public ComparableMatchBuilder<O, BigDecimal> leaf(final Decimal64LeafReference<T> methodRef) {
+        return comparableFor(methodRef);
+    }
+
     @Override
     public ValueMatchBuilder<O, Empty> leaf(final EmptyLeafReference<T> methodRef) {
         return defaultFor(methodRef);