Add isNull() predicate to both DOM and Binding queries 33/93333/2
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 24 Oct 2020 20:24:23 +0000 (22:24 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Sat, 24 Oct 2020 20:51:54 +0000 (22:51 +0200)
We have a nonnull() predicate, this adds its counterpart.

JIRA: MDSAL-605
Change-Id: I76d8ac700c8844f71cfe6e24a6fab23d6212a145
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-api/src/main/java/org/opendaylight/mdsal/binding/api/query/ValueMatchBuilder.java
binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/query/AbstractValueMatchBuilder.java
dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/query/DOMQueryPredicate.java

index edc650b27f5dbe65bf61329b321144a13fcfd04d..f56612389e814a0d2ce9051c3be2ca1be31373cb 100644 (file)
@@ -26,6 +26,13 @@ public interface ValueMatchBuilder<T extends DataObject, V> {
      */
     @NonNull ValueMatch<T> nonNull();
 
+    /**
+     * Match when non-existent.
+     *
+     * @return A ValueMatch
+     */
+    @NonNull ValueMatch<T> isNull();
+
     /**
      * Match exact value.
      *
index bf49d3dcaf6f90667e8a3a2f9d5efee2439f0d21..080a5c826fded00fdf43791a97f516ba32eeb2be 100644 (file)
@@ -15,6 +15,7 @@ import org.opendaylight.mdsal.binding.api.query.ValueMatchBuilder;
 import org.opendaylight.mdsal.binding.dom.adapter.query.QueryBuilderState.BoundMethod;
 import org.opendaylight.mdsal.dom.api.query.DOMQueryPredicate;
 import org.opendaylight.mdsal.dom.api.query.DOMQueryPredicate.Exists;
+import org.opendaylight.mdsal.dom.api.query.DOMQueryPredicate.NotExists;
 import org.opendaylight.mdsal.dom.api.query.DOMQueryPredicate.ValueEquals;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -38,6 +39,11 @@ abstract class AbstractValueMatchBuilder<T extends DataObject, V> implements Val
         return withPredicate(new Exists(relativePath()));
     }
 
+    @Override
+    public final ValueMatch<T> isNull() {
+        return withPredicate(new NotExists(relativePath()));
+    }
+
     @Override
     public final ValueMatch<T> valueEquals(final V value) {
         return withPredicate(new ValueEquals<>(relativePath(), value));
index 735126c18c3d2138be103fceda30b86ec04be276..64e1a180ddc2fa6bbb1f348693a2a61e96926986 100644 (file)
@@ -78,6 +78,17 @@ public abstract class DOMQueryPredicate implements Immutable, Predicate<Object>
         }
     }
 
+    public static final class NotExists extends DOMQueryPredicate {
+        public NotExists(final YangInstanceIdentifier relativePath) {
+            super(relativePath);
+        }
+
+        @Override
+        public boolean test(final Object data) {
+            return data == null;
+        }
+    }
+
     public static final class ValueEquals<T> extends AbstractValueDOMQueryPredicate<T> {
         public ValueEquals(final YangInstanceIdentifier relativePath, final T value) {
             super(relativePath, value);