import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace;
import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
+import org.opendaylight.yangtools.yang.parser.spi.meta.ImplicitParentAwareStatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase;
import org.opendaylight.yangtools.yang.parser.spi.meta.StatementFactory;
import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport;
}
public Optional<StatementSupport<?, ?, ?>> getImplicitParentFor(final StatementDefinition stmtDef) {
- return support.getImplicitParentFor(stmtDef);
+ return support instanceof ImplicitParentAwareStatementSupport
+ ? ((ImplicitParentAwareStatementSupport) support).getImplicitParentFor(stmtDef) : Optional.empty();
}
public boolean onStatementAdded(final Mutable<A, D, E> stmt) {
import org.opendaylight.yangtools.yang.parser.rfc7950.namespace.ChildSchemaNodeNamespace;
import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.YangValidationBundles;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractQNameStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.ImplicitParentAwareStatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
abstract class AbstractChoiceStatementSupport extends
- AbstractQNameStatementSupport<ChoiceStatement, EffectiveStatement<QName, ChoiceStatement>> {
+ AbstractQNameStatementSupport<ChoiceStatement, EffectiveStatement<QName, ChoiceStatement>>
+ implements ImplicitParentAwareStatementSupport {
AbstractChoiceStatementSupport() {
super(YangStmtMapping.CHOICE);
}
import com.google.common.annotations.Beta;
import com.google.common.collect.ForwardingObject;
-import java.util.Optional;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
delegate().onStatementAdded(stmt);
}
- @Override
- public Optional<StatementSupport<?, ?, ?>> getImplicitParentFor(final StatementDefinition stmtDef) {
- return delegate().getImplicitParentFor(stmtDef);
- }
-
@Override
public void onPreLinkageDeclared(final Mutable<A, D, E> stmt) {
delegate().onPreLinkageDeclared(stmt);
* @author Robert Varga
*/
@Beta
-// FIXME: 3.0.0: make this interface extend StatementSupport
public interface ImplicitParentAwareStatementSupport {
/**
* Returns implicit parent statement support for supplied statement definition, if it is defined. This allows
* @param <E>
* Effective Statement representation
*/
-// FIXME: 3.0.0: do not extends ImplicitParentAwareStatementSupport
public interface StatementSupport<A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>>
- extends StatementDefinition, StatementFactory<A, D, E>, ImplicitParentAwareStatementSupport {
+ extends StatementDefinition, StatementFactory<A, D, E> {
/**
* Returns public statement definition, which will be present in built statements.
*/
void onStatementAdded(StmtContext.Mutable<A, D, E> stmt);
- // FIXME: 3.0.0: remove this default method
- @Override
- default Optional<StatementSupport<?, ?, ?>> getImplicitParentFor(final StatementDefinition stmtDef) {
- return Optional.empty();
- }
-
/**
* Invoked when statement is closed during {@link ModelProcessingPhase#SOURCE_PRE_LINKAGE} phase, only substatements
* from this and previous phase are available.