@SuppressWarnings("unchecked") public static <A, D extends DeclaredStatement<A>> Collection<StmtContext<A, D, ?>> findAllEffectiveSubstatements( final StmtContext<?, ?, ?> stmtContext, final Class<D> type) { final ImmutableList.Builder<StmtContext<A, D, ?>> listBuilder = ImmutableList.builder(); for (final StmtContext<?, ?, ?> subStmtContext : stmtContext.effectiveSubstatements()) { if (producesDeclared(subStmtContext, type)) { listBuilder.add((StmtContext<A, D, ?>) subStmtContext); } } return listBuilder.build(); }
@SuppressWarnings("unchecked") public static <A, D extends DeclaredStatement<A>> StmtContext<A, ?, ?> findFirstEffectiveSubstatement( final StmtContext<?, ?, ?> stmtContext, final Class<D> declaredType) { for (final StmtContext<?, ?, ?> subStmtContext : stmtContext.effectiveSubstatements()) { if (producesDeclared(subStmtContext, declaredType)) { return (StmtContext<A, ?, ?>) subStmtContext; } } return null; }
default Iterable<? extends StmtContext<?, ?, ?>> allSubstatements() { return Iterables.concat(declaredSubstatements(), effectiveSubstatements()); }
default Stream<? extends StmtContext<?, ?, ?>> allSubstatementsStream() { return Streams.concat(declaredSubstatements().stream(), effectiveSubstatements().stream()); }
/** * Constructor. * * @param ctx context of statement. */ protected EffectiveStatementBase(final StmtContext<A, D, ?> ctx) { 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 { substatementsInit.add(declaredSubstatement); } } substatementsInit.addAll(effectiveSubstatements); this.substatements = ImmutableList.copyOf(initSubstatements(substatementsInit)); }
if (ctx.declaredSubstatements().isEmpty() && ctx.effectiveSubstatements().isEmpty()) { return typeStmt;