Remove Collection2.filter() from EffectieStatementBase 69/85969/1
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 26 Nov 2019 08:30:26 +0000 (09:30 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 26 Nov 2019 10:27:03 +0000 (11:27 +0100)
We use the filtered collection only to iterate in a for loop, hence
it is more efficient to move the filter into the loop itself,
eliminating an intermediate collection.

Change-Id: I0cc944b3cedd0758d713f394f2d3360d44c26e66
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 3c0a8648375738abf50bc93cce5537af85cdec74)

yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/EffectiveStatementBase.java

index a0c12a569258f2500b56a9a939e45e24419921b7..8542bbc550a9f6afab5376920cb3b1a470c91321 100644 (file)
@@ -39,16 +39,15 @@ public abstract class EffectiveStatementBase<A, D extends DeclaredStatement<A>>
         final Collection<? extends StmtContext<?, ?, ?>> effectiveSubstatements = ctx.effectiveSubstatements();
         final Collection<StmtContext<?, ?, ?>> substatementsInit = new ArrayList<>();
 
-        final Collection<? extends StmtContext<?, ?, ?>> supportedDeclaredSubStmts = Collections2.filter(
-                ctx.declaredSubstatements(), StmtContext::isSupportedByFeatures);
-        for (final StmtContext<?, ?, ?> declaredSubstatement : supportedDeclaredSubStmts) {
-            if (YangStmtMapping.USES == declaredSubstatement.getPublicDefinition()) {
-                substatementsInit.add(declaredSubstatement);
-                substatementsInit.addAll(declaredSubstatement.getEffectOfStatement());
-                ((StatementContextBase<?, ?, ?>) ctx).removeStatementsFromEffectiveSubstatements(declaredSubstatement
-                        .getEffectOfStatement());
-            } else {
+        for (final StmtContext<?, ?, ?> declaredSubstatement : ctx.declaredSubstatements()) {
+            if (declaredSubstatement.isSupportedByFeatures()) {
                 substatementsInit.add(declaredSubstatement);
+                if (YangStmtMapping.USES == declaredSubstatement.getPublicDefinition()) {
+                    final Collection<? extends StmtContext<?, ?, ?>> effect =
+                            declaredSubstatement.getEffectOfStatement();
+                    substatementsInit.addAll(effect);
+                    ((StatementContextBase<?, ?, ?>) ctx).removeStatementsFromEffectiveSubstatements(effect);
+                }
             }
         }
         substatementsInit.addAll(effectiveSubstatements);