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;
}
@Override
- final Iterable<ReactorStmtCtx<?, ?, ?>> effectiveChildrenToComplete() {
- return effective;
+ final Iterator<ReactorStmtCtx<?, ?, ?>> effectiveChildrenToComplete() {
+ return effective.iterator();
}
@Override
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;
}
@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();
}
}
return resized;
}
- abstract Iterable<ReactorStmtCtx<?, ?, ?>> effectiveChildrenToComplete();
+ abstract Iterator<ReactorStmtCtx<?, ?, ?>> effectiveChildrenToComplete();
// exposed for InferredStatementContext only
final void ensureCompletedPhase(final Mutable<?, ?, ?> stmt) {
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;
}