Optimize DataNodeContainer.findDataChildByName() 84/102884/2
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 26 Oct 2022 11:39:53 +0000 (13:39 +0200)
committerRobert Varga <nite@hq.sk>
Wed, 26 Oct 2022 12:49:18 +0000 (12:49 +0000)
Ditch the internal use of Optional, which allows us to use simpler
traversal logic.

Change-Id: Idd30830b434e40d3d15d00bdda8efcab253b4590
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DataNodeContainer.java

index 27d3f18fed3552a41f87cc3a995288ecdcf2194a..24253c4756787654c7125548f90e0e6d76e257cd 100644 (file)
@@ -112,19 +112,15 @@ public interface DataNodeContainer {
      * @throws NullPointerException if any argument is null
      */
     default Optional<DataSchemaNode> findDataChildByName(final QName first, final QName... others) {
-        Optional<DataSchemaNode> optCurrent = findDataChildByName(first);
-        for (QName qname : others) {
-            if (optCurrent.isPresent()) {
-                final DataSchemaNode current = optCurrent.get();
-                if (current instanceof DataNodeContainer) {
-                    optCurrent = ((DataNodeContainer) current).findDataChildByName(qname);
-                    continue;
-                }
+        var current = dataChildByName(first);
+        for (var qname : others) {
+            if (current instanceof DataNodeContainer container) {
+                current = container.dataChildByName(qname);
+            } else {
+                return Optional.empty();
             }
-
-            return Optional.empty();
         }
-        return optCurrent;
+        return Optional.ofNullable(current);
     }
 
     /**