import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.OrganizationEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.PrefixEffectiveStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.PrefixStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.TypedefEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.YangVersionEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.compat.NotificationNodeContainerCompat;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultWithDataTree.WithSubstatements;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins.DocumentedNodeMixin;
+import org.opendaylight.yangtools.yang.parser.spi.meta.CommonStmtCtx;
import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
import org.opendaylight.yangtools.yang.parser.spi.source.ImportPrefixToModuleCtx;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
@Override
@SuppressWarnings("checkstyle:hiddenField")
- public final Optional<DataSchemaNode> findDataChildByName(final QName name) {
- return findDataSchemaNode(name);
+ public final DataSchemaNode dataChildByName(final QName name) {
+ return dataSchemaNode(name);
}
@Override
.toString();
}
- protected static final @NonNull String findPrefix(final StmtContext<?, ?, ?> stmt, final String type,
- final String name) {
- return SourceException.throwIfNull(
- StmtContextUtils.firstAttributeOf(stmt.declaredSubstatements(), PrefixStatement.class),
- stmt.sourceReference(), "Unable to resolve prefix for %s %s.", type, name);
+ protected static final @NonNull String findPrefix(final CommonStmtCtx stmt,
+ final Collection<? extends EffectiveStatement<?, ?>> substatements, final String type, final String name) {
+ return substatements.stream()
+ .filter(PrefixEffectiveStatement.class::isInstance)
+ .map(prefix -> ((PrefixEffectiveStatement) prefix).argument())
+ .findAny()
+ .orElseThrow(() -> new SourceException(stmt, "Unable to resolve prefix for %s %s.", type, name));
}
// Alright. this is quite ugly