From: Robert Varga Date: Wed, 15 Dec 2021 04:16:11 +0000 (+0100) Subject: Expose Iterator from effectiveChildrenToComplete() X-Git-Tag: v8.0.0~118 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=yangtools.git;a=commitdiff_plain;h=fc17f39c478a20907bec485d1b9b38fdb9eba0c8 Expose Iterator from effectiveChildrenToComplete() We are only ever iterating here, lower the contract exposed through here. Change-Id: Ief041380c5341956e2cf91491bbc05d1c4f08ca7 Signed-off-by: Robert Varga --- diff --git a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/AbstractResumedStatement.java b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/AbstractResumedStatement.java index fcaf87d8f0..f5b3358279 100644 --- a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/AbstractResumedStatement.java +++ b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/AbstractResumedStatement.java @@ -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, E ext } @Override - final Iterable> effectiveChildrenToComplete() { - return effective; + final Iterator> effectiveChildrenToComplete() { + return effective.iterator(); } @Override diff --git a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/InferredStatementContext.java b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/InferredStatementContext.java index 912e82bf43..c1e4386f21 100644 --- a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/InferredStatementContext.java +++ b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/InferredStatementContext.java @@ -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, E extend } @Override - Iterable> effectiveChildrenToComplete() { + Iterator> 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(); } } diff --git a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java index 8375a46705..4663d2d5b1 100644 --- a/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java +++ b/parser/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java @@ -358,7 +358,7 @@ abstract class StatementContextBase, E extends return resized; } - abstract Iterable> effectiveChildrenToComplete(); + abstract Iterator> effectiveChildrenToComplete(); // exposed for InferredStatementContext only final void ensureCompletedPhase(final Mutable stmt) { @@ -455,8 +455,9 @@ abstract class StatementContextBase, 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; }