-abstract public class EffectiveStatementBase<A, D extends DeclaredStatement<A>> implements EffectiveStatement<A, D> {
-
- private final ImmutableList<? extends EffectiveStatement<?, ?>> substatements;
- private final StatementSource statementSource;
- private final StatementDefinition statementDefinition;
- private final A argument;
- private final D declaredInstance;
-
- public EffectiveStatementBase(final StmtContext<A, D, ?> ctx) {
- this.statementDefinition = ctx.getPublicDefinition();
- this.argument = ctx.getStatementArgument();
- this.statementSource = ctx.getStatementSource();
-
- Collection<StatementContextBase<?, ?, ?>> declaredSubstatements = ctx.declaredSubstatements();
- Collection<StatementContextBase<?, ?, ?>> effectiveSubstatements = ctx.effectiveSubstatements();
-
- Collection<StatementContextBase<?, ?, ?>> substatementsInit = new LinkedList<>();
-
- for(StatementContextBase<?, ?, ?> declaredSubstatement : declaredSubstatements) {
- if(declaredSubstatement.getPublicDefinition() == Rfc6020Mapping.USES) {
+public abstract class EffectiveStatementBase<A, D extends DeclaredStatement<A>> implements EffectiveStatement<A, D> {
+ private final List<? extends EffectiveStatement<?, ?>> substatements;
+
+ /**
+ * Constructor.
+ *
+ * @param ctx
+ * context of statement.
+ */
+ protected EffectiveStatementBase(final StmtContext<A, D, ?> ctx) {
+ final Collection<StatementContextBase<?, ?, ?>> effectiveSubstatements = ctx.effectiveSubstatements();
+ final Collection<StatementContextBase<?, ?, ?>> substatementsInit = new ArrayList<>();
+
+ final Collection<StatementContextBase<?, ?, ?>> supportedDeclaredSubStmts = Collections2.filter(
+ ctx.declaredSubstatements(), StmtContextUtils::areFeaturesSupported);
+ for (final StatementContextBase<?, ?, ?> declaredSubstatement : supportedDeclaredSubStmts) {
+ if (declaredSubstatement.getPublicDefinition().equals(YangStmtMapping.USES)) {