Bug 4506: Honor if-feature during SchemaContext assembly
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / rfc6020 / effective / EffectiveStatementBase.java
index 8b9409578116dc2bdc3bf1eae13bf2a5130dd8a7..15888ae5906beac36a4f6a37fff79c854c09b1b7 100644 (file)
@@ -45,6 +45,15 @@ public abstract class EffectiveStatementBase<A, D extends DeclaredStatement<A>>
         }
     };
 
+    private static final Predicate<StmtContext<?, ?, ?>> ARE_FEATURES_SUPPORTED =
+            new Predicate<StmtContext<?, ?, ?>>() {
+
+                @Override
+                public boolean apply(StmtContext<?, ?, ?> input) {
+                    return StmtContextUtils.areFeaturesSupported(input);
+                }
+            };
+
     private final List<? extends EffectiveStatement<?, ?>> substatements;
     private final List<StatementContextBase<?, ?, ?>> unknownSubstatementsToBuild;
 
@@ -92,6 +101,8 @@ public abstract class EffectiveStatementBase<A, D extends DeclaredStatement<A>>
             this.unknownSubstatementsToBuild = ImmutableList.of();
         }
 
+        substatementsToBuild = Collections2.filter(substatementsToBuild, ARE_FEATURES_SUPPORTED);
+
         Function<StmtContext<?, ?, ? extends EffectiveStatement<?, ?>>, EffectiveStatement<?, ?>> buildEffective = StmtContextUtils.buildEffective();
         this.substatements = ImmutableList.copyOf(Collections2.transform(substatementsToBuild, buildEffective));
     }