From 13a90f1ae289ce710b4dd0eca733ff45379fed9a Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 22 Jan 2021 22:12:12 +0100 Subject: [PATCH] Add MatchBuilderPath.BooleanLeafReference This is a notable omission from the interface, allow users to target Boolean types. JIRA: MDSAL-652 Change-Id: Ie62f6419bf3db57887797f7bc88f7ec5dfd5f203 Signed-off-by: Robert Varga --- .../mdsal/binding/api/query/MatchBuilderPath.java | 14 ++++++++++++++ .../binding/api/query/QueryBuilderExamples.java | 10 ++++++++++ .../dom/adapter/query/DefaultMatchBuilderPath.java | 5 +++++ 3 files changed, 29 insertions(+) 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 abace24cea..11943c867e 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 @@ -62,6 +62,15 @@ public interface MatchBuilderPath ex & ChildOf, K extends Identifier> @NonNull MatchBuilderPath extractChild(Class<@NonNull N> listItem, K listKey); + /** + * Match an {@code boolean} leaf's value. + * + * @param methodRef method reference to the getter method + * @return A {@link ValueMatchBuilder} + * @throws NullPointerException if methodRef is null + */ + @NonNull ValueMatchBuilder leaf(BooleanLeafReference methodRef); + /** * Match an {@code empty} leaf's value. * @@ -198,6 +207,11 @@ public interface MatchBuilderPath ex C dummyMethod(P parent); } + @FunctionalInterface + public interface BooleanLeafReference

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 bded32f5f1..00792ac40f 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 @@ -13,6 +13,7 @@ import org.opendaylight.yang.gen.v1.mdsal.query.norev.first.grp.System; 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.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.Uint64; @@ -132,4 +133,13 @@ public class QueryBuilderExamples { .greaterThan(Uint64.TEN) .build(); } + + public QueryExpression selectBoolean() { + return factory + .querySubtree(InstanceIdentifier.create(BooleanCont.class)) + .matching() + .leaf(BooleanCont::getIsFoo) + .valueEquals(true) + .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 226e1df337..cadd5b32d0 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 @@ -64,6 +64,11 @@ final class DefaultMatchBuilderPath return (MatchBuilderPath) this; } + @Override + public ValueMatchBuilder leaf(final BooleanLeafReference methodRef) { + return defaultFor(methodRef); + } + @Override public ValueMatchBuilder leaf(final EmptyLeafReference methodRef) { return defaultFor(methodRef); -- 2.36.6