Make DataNodeContainer.dataChildByName() non-default 81/94081/5
authorRobert Varga <robert.varga@pantheon.tech>
Sun, 6 Dec 2020 16:19:41 +0000 (17:19 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sun, 6 Dec 2020 19:18:31 +0000 (20:18 +0100)
Switch implementations, so that we provide findDataChildByName()
as a default method and require a nullable lookup.

JIRA: YANGTOOLS-1183
Change-Id: I0e5ba2373b4ec6a4e1d6c8e7923e05954b2275c7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
20 files changed:
yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ContainerSchemaNodes.java
yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/OperationAsContainer.java
yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/SingleChildDataNodeContainer.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DataNodeContainer.java
yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/AbstractSchemaContext.java
yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/EffectiveAugmentationSchema.java
yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/SchemaContextProxyTest.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractDeclaredEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractUndeclaredEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/case_/DeclaredCaseEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/case_/UndeclaredCaseEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/container/ContainerEffectiveStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/grouping/GroupingEffectiveStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/input/DeclaredInputEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/input/UndeclaredInputEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/AbstractListEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/notification/NotificationEffectiveStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/output/DeclaredOutputEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/output/UndeclaredOutputEffectiveStatement.java

index 8010b84fbb395a1b1b16c00a40a0d99012e54099..914333a1fb3259034f18d2cc715c8b602444602e 100644 (file)
@@ -155,14 +155,14 @@ public final class ContainerSchemaNodes {
         }
 
         @Override
-        public Optional<DataSchemaNode> findDataChildByName(final QName name) {
+        public DataSchemaNode dataChildByName(final QName name) {
             switch (name.getLocalName()) {
                 case "input":
-                    return Optional.of(rpcDefinition.getInput());
+                    return rpcDefinition.getInput();
                 case "output":
-                    return Optional.of(rpcDefinition.getOutput());
+                    return rpcDefinition.getOutput();
                 default:
-                    return Optional.empty();
+                    return null;
             }
         }
 
@@ -220,8 +220,8 @@ public final class ContainerSchemaNodes {
         }
 
         @Override
-        public Optional<DataSchemaNode> findDataChildByName(final QName name) {
-            return Optional.ofNullable(mapNodes.get(requireNonNull(name)));
+        public DataSchemaNode dataChildByName(final QName name) {
+            return mapNodes.get(requireNonNull(name));
         }
 
         @Override
index 33b182c34ecd4f4d4b5bc476af7af6aafad73eea..a8ee26465a7f4102240edb0fecd7000944662b55 100644 (file)
@@ -98,18 +98,18 @@ public class OperationAsContainer extends ForwardingObject implements ContainerL
     }
 
     @Override
-    public final Optional<DataSchemaNode> findDataChildByName(final QName name) {
+    public final DataSchemaNode dataChildByName(final QName name) {
         if (!name.getModule().equals(getQName().getModule())) {
-            return Optional.empty();
+            return null;
         }
 
         switch (name.getLocalName()) {
             case "input":
-                return Optional.of(delegate.getInput());
+                return delegate.getInput();
             case "output":
-                return Optional.of(delegate.getOutput());
+                return delegate.getOutput();
             default:
-                return Optional.empty();
+                return null;
         }
     }
 
index f1a7f7942139a595ff3a5735a2e9cbae10c8e2c8..302193e89145611185236d3e1b7a0e3e6761e121 100644 (file)
@@ -12,7 +12,6 @@ import static java.util.Objects.requireNonNull;
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableSet;
 import java.util.Collection;
-import java.util.Optional;
 import java.util.Set;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
@@ -33,8 +32,8 @@ public final class SingleChildDataNodeContainer implements DataNodeContainer {
     }
 
     @Override
-    public Optional<DataSchemaNode> findDataChildByName(final QName name) {
-        return child.getQName().equals(name) ? Optional.of(child) : Optional.empty();
+    public DataSchemaNode dataChildByName(final QName name) {
+        return child.getQName().equals(name) ? child : null;
     }
 
     @Override
index eb1a8e7719700298b24d96e1bb0e38ba879cf9e6..d0abdd4fcc53227e5badb06807a9998358024d84 100644 (file)
@@ -63,9 +63,7 @@ public interface DataNodeContainer {
      * @return child node of this DataNodeContainer if child with given name is present, null otherwise
      * @throws NullPointerException if {@code name} is null
      */
-    default @Nullable DataSchemaNode dataChildByName(final QName name) {
-        return findDataChildByName(name).orElse(null);
-    }
+    @Nullable DataSchemaNode dataChildByName(QName name);
 
     /**
      * Returns the child node corresponding to the specified name.
@@ -97,7 +95,9 @@ public interface DataNodeContainer {
      * @return child node of this DataNodeContainer if child with given name is present, empty otherwise
      * @throws NullPointerException if {@code name} is null
      */
-    Optional<DataSchemaNode> findDataChildByName(QName name);
+    default Optional<DataSchemaNode> findDataChildByName(final QName name) {
+        return Optional.ofNullable(dataChildByName(name));
+    }
 
     /**
      * Returns the child node corresponding to the specified name.
index 7481c7214e9254545f4b97c00c6291102c704bcf..6d0ebb787520d47b1cc2afa1d1a09ece30df1ead 100644 (file)
@@ -208,15 +208,15 @@ public abstract class AbstractSchemaContext implements SchemaContext {
     }
 
     @Override
-    public Optional<DataSchemaNode> findDataChildByName(final QName name) {
+    public DataSchemaNode dataChildByName(final QName name) {
         requireNonNull(name);
         for (Module module : getModules()) {
-            final Optional<DataSchemaNode> result = module.findDataChildByName(name);
-            if (result.isPresent()) {
+            final DataSchemaNode result = module.dataChildByName(name);
+            if (result != null) {
                 return result;
             }
         }
-        return Optional.empty();
+        return null;
     }
 
     @Override
index b9e34733dc14a4453e85459292e4a8f981e1493e..0813e676d7b468933b9a4dba6f3b85ad77e800d9 100644 (file)
@@ -110,8 +110,8 @@ public final class EffectiveAugmentationSchema implements AugmentationSchemaNode
     }
 
     @Override
-    public Optional<DataSchemaNode> findDataChildByName(final QName name) {
-        return Optional.ofNullable(mappedChildSchemas.get(requireNonNull(name)));
+    public DataSchemaNode dataChildByName(final QName name) {
+        return mappedChildSchemas.get(requireNonNull(name));
     }
 
     @Override
index 4181d8ca063ad029164ac56e53a8b3721cfcfdb6..d9942c271f143a42e1f02d72d4555cdbe3cd2763 100644 (file)
@@ -536,7 +536,7 @@ public class SchemaContextProxyTest {
 
         final QName qname = QName.create("config-namespace", "2016-08-11", "cont");
         final ContainerSchemaNode mockedContainer = mock(ContainerSchemaNode.class);
-        doReturn(Optional.of(mockedContainer)).when(moduleConfig).findDataChildByName(any(QName.class));
+        doReturn(mockedContainer).when(moduleConfig).dataChildByName(any(QName.class));
 
         final DataSchemaNode dataSchemaNode = filteringSchemaContextProxy.getDataChildByName(qname);
         assertTrue(dataSchemaNode instanceof ContainerSchemaNode);
index 4d2d2d0fbb313f29beca025fef72fcf614d60bbb..b081d983ab6a2692bd66bd8a0ce710ba0c835048 100644 (file)
@@ -17,6 +17,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -74,13 +75,13 @@ public abstract class AbstractDeclaredEffectiveStatement<A, D extends DeclaredSt
         }
 
         /**
-         * Indexing support for {@link DataNodeContainer#findDataChildByName(QName)}.
+         * Indexing support for {@link DataNodeContainer#dataChildByName(QName)}.
          */
-        protected final Optional<DataSchemaNode> findDataSchemaNode(final QName name) {
+        protected final @Nullable DataSchemaNode dataSchemaNode(final QName name) {
             // Only DataNodeContainer subclasses should be calling this method
             verify(this instanceof DataNodeContainer);
             final SchemaTreeEffectiveStatement<?> child = schemaTreeNamespace().get(requireNonNull(name));
-            return child instanceof DataSchemaNode ? Optional.of((DataSchemaNode) child) : Optional.empty();
+            return child instanceof DataSchemaNode ? (DataSchemaNode) child : null;
         }
 
         protected abstract Map<QName, SchemaTreeEffectiveStatement<?>> schemaTreeNamespace();
@@ -167,8 +168,8 @@ public abstract class AbstractDeclaredEffectiveStatement<A, D extends DeclaredSt
         }
 
         @Override
-        public final Optional<DataSchemaNode> findDataChildByName(final QName name) {
-            return Optional.ofNullable(dataChildren.get(requireNonNull(name)));
+        public final DataSchemaNode dataChildByName(final QName name) {
+            return dataChildren.get(requireNonNull(name));
         }
     }
 
index 8b5304e86c3da4344573e7fbf92da92dc05e7d70..f86ac375d1f8f8b3f96bbc903ee8e78b7b157ed7 100644 (file)
@@ -188,8 +188,8 @@ public abstract class AbstractEffectiveModule<D extends DeclaredStatement<Unqual
 
     @Override
     @SuppressWarnings("checkstyle:hiddenField")
-    public final Optional<DataSchemaNode> findDataChildByName(final QName name) {
-        return findDataSchemaNode(name);
+    public final DataSchemaNode dataChildByName(final QName name) {
+        return dataSchemaNode(name);
     }
 
     @Override
index 49fbacc2cb8bc742a88ddc1aa5d90e0768f012c4..842cbd2c4f215fc11a9729f388ba77c31435e393 100644 (file)
@@ -16,6 +16,7 @@ import com.google.common.collect.ImmutableMap;
 import java.util.Map;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -64,11 +65,11 @@ public abstract class AbstractUndeclaredEffectiveStatement<A, D extends Declared
         /**
          * Indexing support for {@link DataNodeContainer#findDataChildByName(QName)}.
          */
-        protected final Optional<DataSchemaNode> findDataSchemaNode(final QName name) {
+        protected final @Nullable DataSchemaNode dataSchemaNode(final QName name) {
             // Only DataNodeContainer subclasses should be calling this method
             verify(this instanceof DataNodeContainer);
             final SchemaTreeEffectiveStatement<?> child = schemaTreeNamespace().get(requireNonNull(name));
-            return child instanceof DataSchemaNode ? Optional.of((DataSchemaNode) child) : Optional.empty();
+            return child instanceof DataSchemaNode ? (DataSchemaNode) child : null;
         }
 
         protected abstract Map<QName, SchemaTreeEffectiveStatement<?>> schemaTreeNamespace();
index 955314a812fad7f200fced98ddc0a4e32a5d2999..65e18af5d91484b4aa4364b7a6f107140b25b4e9 100644 (file)
@@ -52,8 +52,8 @@ final class DeclaredCaseEffectiveStatement extends WithSubstatements<QName, Case
     }
 
     @Override
-    public Optional<DataSchemaNode> findDataChildByName(final QName name) {
-        return findDataSchemaNode(name);
+    public DataSchemaNode dataChildByName(final QName name) {
+        return dataSchemaNode(name);
     }
 
     @Override
index 39879d8e223c0de62e7d49918c84cd36228efdf4..9ec6ba1f5c7468a7802a3506a31b20bee0a33010 100644 (file)
@@ -51,8 +51,8 @@ final class UndeclaredCaseEffectiveStatement extends WithSubstatements<QName, Ca
     }
 
     @Override
-    public Optional<DataSchemaNode> findDataChildByName(final QName name) {
-        return findDataSchemaNode(name);
+    public DataSchemaNode dataChildByName(final QName name) {
+        return dataSchemaNode(name);
     }
 
     @Override
index bc93bac11261cd22147aebc826ce7a0223e1829a..05226aad863bcf6fdaeab21b592e88c4355dcd11 100644 (file)
@@ -81,8 +81,8 @@ final class ContainerEffectiveStatementImpl
     }
 
     @Override
-    public Optional<DataSchemaNode> findDataChildByName(final QName name) {
-        return findDataSchemaNode(name);
+    public DataSchemaNode dataChildByName(final QName name) {
+        return dataSchemaNode(name);
     }
 
     @Override
index d81a58f2c5a7430d9e499321c1bed272c2705c49..2fde065a979f8dafa9843a3fdbe752409b64fac0 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.grouping;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Optional;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -53,8 +52,8 @@ final class GroupingEffectiveStatementImpl
     }
 
     @Override
-    public Optional<DataSchemaNode> findDataChildByName(final QName name) {
-        return findDataSchemaNode(name);
+    public DataSchemaNode dataChildByName(final QName name) {
+        return dataSchemaNode(name);
     }
 
     @Override
index def9e4f9eacf4159e16d4b3e33432f90acf13322..a50542a2083a1702b131fcf5e6ea4c608ac6c267 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.input;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Optional;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -45,8 +44,8 @@ final class DeclaredInputEffectiveStatement extends WithSubstatements<QName, Inp
     }
 
     @Override
-    public Optional<DataSchemaNode> findDataChildByName(final QName name) {
-        return findDataSchemaNode(name);
+    public DataSchemaNode dataChildByName(final QName name) {
+        return dataSchemaNode(name);
     }
 
     @Override
index 013657a1ec18e643fe99613852133c1f3c11a895..2d19ee60053c2c3373b615430acf841c024212df 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.input;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Optional;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -46,8 +45,8 @@ final class UndeclaredInputEffectiveStatement
     }
 
     @Override
-    public Optional<DataSchemaNode> findDataChildByName(final QName name) {
-        return findDataSchemaNode(name);
+    public DataSchemaNode dataChildByName(final QName name) {
+        return dataSchemaNode(name);
     }
 
     @Override
index 8ca69311ba2fd86205d840d2eed568c7b4488cd3..9dfa63a5abb7dc0d891b705d84a76aad29c859a3 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.list;
 import com.google.common.collect.ImmutableList;
 import java.util.Collection;
 import java.util.List;
-import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -92,8 +91,8 @@ abstract class AbstractListEffectiveStatement
     }
 
     @Override
-    public final Optional<DataSchemaNode> findDataChildByName(final QName name) {
-        return findDataSchemaNode(name);
+    public final DataSchemaNode dataChildByName(final QName name) {
+        return dataSchemaNode(name);
     }
 
     @Override
index 064209e5216657992b0aac6a0ee78c45d8372c77..3c93a076950bb9a61321e1be585c4b57cd8b7bd8 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.notification;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Optional;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -49,8 +48,8 @@ final class NotificationEffectiveStatementImpl
     }
 
     @Override
-    public Optional<DataSchemaNode> findDataChildByName(final QName name) {
-        return findDataSchemaNode(name);
+    public DataSchemaNode dataChildByName(final QName name) {
+        return dataSchemaNode(name);
     }
 
     @Override
index 1efd798d07f0d31cc51d6d85d7e9a0cd5570d47e..5a3bfb712898102464db94b2098bc24885e68a5f 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.output;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Optional;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -45,8 +44,8 @@ final class DeclaredOutputEffectiveStatement extends WithSubstatements<QName, Ou
     }
 
     @Override
-    public Optional<DataSchemaNode> findDataChildByName(final QName name) {
-        return findDataSchemaNode(name);
+    public DataSchemaNode dataChildByName(final QName name) {
+        return dataSchemaNode(name);
     }
 
     @Override
index 4b3c9b984a545d172167265bd1e0ba59ba9db465..8c4f8e79a0d2eec8e6546eaf56fa3d9e265abb20 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.output;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Optional;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -46,8 +45,8 @@ final class UndeclaredOutputEffectiveStatement
     }
 
     @Override
-    public Optional<DataSchemaNode> findDataChildByName(final QName name) {
-        return findDataSchemaNode(name);
+    public DataSchemaNode dataChildByName(final QName name) {
+        return dataSchemaNode(name);
     }
 
     @Override