package org.opendaylight.yangtools.yang.parser.spi.meta;
-import com.google.common.base.Function;
import com.google.common.base.Predicates;
import com.google.common.collect.Collections2;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import java.util.Collection;
+import javax.annotation.Nonnull;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
-import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase;
/**
* Utility abstract base class for implementing declared statements.
* @param <A> Argument type.
*/
public abstract class AbstractDeclaredStatement<A> implements DeclaredStatement<A> {
-
-
private final A argument;
private final String rawArgument;
private final ImmutableList<? extends DeclaredStatement<?>> substatements;
* Perform an explicit copy, because Collections2.transform() is lazily transformed and retains pointer to
* original collection, which may contains references to mutable context.
*/
- Collection<StatementContextBase<?, ?, ?>> declaredSubstatements = context.declaredSubstatements();
- Function<StmtContext<?, ? extends DeclaredStatement<?>, ?>, DeclaredStatement<?>> buildDeclared = StmtContextUtils.buildDeclared();
- substatements = ImmutableList.copyOf(Collections2.transform(declaredSubstatements, buildDeclared));
+ substatements = ImmutableList.copyOf(Collections2.transform(context.declaredSubstatements(),
+ StmtContext::buildDeclared));
}
protected final <S extends DeclaredStatement<?>> S firstDeclared(final Class<S> type) {
return argument;
}
+ @Nonnull
@Override
public StatementDefinition statementDefinition() {
return definition;
}
+ @Nonnull
@Override
public Collection<? extends DeclaredStatement<?>> declaredSubstatements() {
return substatements;
}
+ @Nonnull
@Override
public StatementSource getStatementSource() {
return source;