Expose Iterator from effectiveChildrenToComplete() 01/99001/1
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 15 Dec 2021 04:16:11 +0000 (05:16 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 15 Dec 2021 04:17:40 +0000 (05:17 +0100)
We are only ever iterating here, lower the contract exposed through
here.

Change-Id: Ief041380c5341956e2cf91491bbc05d1c4f08ca7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/AbstractResumedStatement.java
parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/InferredStatementContext.java
parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java

index fcaf87d8f00f73b72c0d1a0d34e819082e3a4421..f5b33582799fafbab1d14b39e795f26ce64e21e1 100644 (file)
@@ -14,6 +14,7 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
 import java.util.Collection;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Optional;
 import java.util.stream.Stream;
@@ -210,8 +211,8 @@ abstract class AbstractResumedStatement<A, D extends DeclaredStatement<A>, E ext
     }
 
     @Override
-    final Iterable<ReactorStmtCtx<?, ?, ?>> effectiveChildrenToComplete() {
-        return effective;
+    final Iterator<ReactorStmtCtx<?, ?, ?>> effectiveChildrenToComplete() {
+        return effective.iterator();
     }
 
     @Override
index 912e82bf43462d72bf677179b710d43a7e7a06c5..c1e4386f21201b34afafaf575ddb5e035e9bffd7 100644 (file)
@@ -15,6 +15,7 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Streams;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -461,17 +462,17 @@ final class InferredStatementContext<A, D extends DeclaredStatement<A>, E extend
     }
 
     @Override
-    Iterable<ReactorStmtCtx<?, ?, ?>> effectiveChildrenToComplete() {
+    Iterator<ReactorStmtCtx<?, ?, ?>> effectiveChildrenToComplete() {
         // When we have not initialized, there are no statements to catch up: we will catch up when we are copying
         // from prototype (which is already at ModelProcessingPhase.EFFECTIVE_MODEL).
         if (substatements == null) {
-            return ImmutableList.of();
+            return Collections.emptyIterator();
         }
         accessSubstatements();
         if (substatements instanceof HashMap) {
-            return castMaterialized(substatements).values();
+            return castMaterialized(substatements).values().iterator();
         } else {
-            return castEffective(substatements);
+            return castEffective(substatements).iterator();
         }
     }
 
index 8375a46705c93cadd3a1c3cf66743511848243f6..4663d2d5b15911fb3a6009731c6636b8c77fc94d 100644 (file)
@@ -358,7 +358,7 @@ abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E extends
         return resized;
     }
 
-    abstract Iterable<ReactorStmtCtx<?, ?, ?>> effectiveChildrenToComplete();
+    abstract Iterator<ReactorStmtCtx<?, ?, ?>> effectiveChildrenToComplete();
 
     // exposed for InferredStatementContext only
     final void ensureCompletedPhase(final Mutable<?, ?, ?> stmt) {
@@ -455,8 +455,9 @@ abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E extends
         for (final StatementContextBase<?, ?, ?> child : mutableDeclaredSubstatements()) {
             finished &= child.tryToCompletePhase(targetOrder);
         }
-        for (final ReactorStmtCtx<?, ?, ?> child : effectiveChildrenToComplete()) {
-            finished &= child.tryToCompletePhase(targetOrder);
+        final var it = effectiveChildrenToComplete();
+        while (it.hasNext()) {
+            finished &= it.next().tryToCompletePhase(targetOrder);
         }
         return finished;
     }