X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=yang%2Fyang-parser-rfc7950%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Frfc7950%2Fstmt%2Ftype%2FAbstractIdentityRefSpecificationSupport.java;h=edf67dca168a905941b40abe1613e83b99e3125a;hb=d605800fa3da3ea340497c683bd83ea37c12da6c;hp=c6c7ddc36d4d0678e0215a77b7ad415a39e78e85;hpb=c3c36549f58d7419b99e27647cb4f576c100d571;p=yangtools.git diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractIdentityRefSpecificationSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractIdentityRefSpecificationSupport.java index c6c7ddc36d..edf67dca16 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractIdentityRefSpecificationSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractIdentityRefSpecificationSupport.java @@ -7,21 +7,22 @@ */ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.type; +import static com.google.common.base.Verify.verify; +import static com.google.common.base.Verify.verifyNotNull; + import com.google.common.collect.ImmutableList; import java.util.Collection; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode; -import org.opendaylight.yangtools.yang.model.api.YangStmtMapping; 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.stmt.BaseEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.BaseStatement; import org.opendaylight.yangtools.yang.model.api.stmt.IdentityEffectiveStatement; -import org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement; import org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement.IdentityRefSpecification; -import org.opendaylight.yangtools.yang.model.util.type.BaseTypes; -import org.opendaylight.yangtools.yang.model.util.type.IdentityrefTypeBuilder; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStatementSupport; +import org.opendaylight.yangtools.yang.model.parser.api.YangParserConfiguration; +import org.opendaylight.yangtools.yang.model.ri.type.BaseTypes; +import org.opendaylight.yangtools.yang.model.ri.type.IdentityrefTypeBuilder; import org.opendaylight.yangtools.yang.parser.spi.IdentityNamespace; import org.opendaylight.yangtools.yang.parser.spi.meta.CommonStmtCtx; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; @@ -32,20 +33,14 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils; import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; abstract class AbstractIdentityRefSpecificationSupport - extends BaseStatementSupport> { - AbstractIdentityRefSpecificationSupport() { - super(YangStmtMapping.TYPE); + extends AbstractTypeSupport { + AbstractIdentityRefSpecificationSupport(final YangParserConfiguration config) { + super(config); } @Override - public final String parseArgumentValue(final StmtContext ctx, final String value) { - return value; - } - - @Override - public final void onFullDefinitionDeclared(final Mutable> stmt) { + public final void onFullDefinitionDeclared(final Mutable> stmt) { super.onFullDefinitionDeclared(stmt); final Collection> baseStatements = @@ -60,32 +55,31 @@ abstract class AbstractIdentityRefSpecificationSupport } @Override - protected final IdentityRefSpecification createDeclared(final StmtContext ctx, + protected final IdentityRefSpecification createDeclared(final StmtContext ctx, final ImmutableList> substatements) { - return new IdentityRefSpecificationImpl(ctx.getRawArgument(), substatements); - } - - @Override - protected final IdentityRefSpecification createEmptyDeclared( - final StmtContext ctx) { - throw noBase(ctx); + if (substatements.isEmpty()) { + throw noBase(ctx); + } + return new IdentityRefSpecificationImpl(ctx.getRawArgument(), ctx.getArgument(), substatements); } @Override - protected final EffectiveStatement createEffective( - final Current stmt, + protected final EffectiveStatement createEffective( + final Current stmt, final ImmutableList> substatements) { if (substatements.isEmpty()) { throw noBase(stmt); } - final IdentityrefTypeBuilder builder = BaseTypes.identityrefTypeBuilder(stmt.getSchemaPath()); + final IdentityrefTypeBuilder builder = BaseTypes.identityrefTypeBuilder(stmt.argumentAsTypeQName()); for (final EffectiveStatement subStmt : substatements) { if (subStmt instanceof BaseEffectiveStatement) { final QName identityQName = ((BaseEffectiveStatement) subStmt).argument(); - final StmtContext identityCtx = - stmt.getFromNamespace(IdentityNamespace.class, identityQName); - builder.addIdentity((IdentitySchemaNode) identityCtx.buildEffective()); + final IdentityEffectiveStatement baseIdentity = + verifyNotNull(stmt.getFromNamespace(IdentityNamespace.class, identityQName)).buildEffective(); + verify(baseIdentity instanceof IdentitySchemaNode, "Statement %s is not an IdentitySchemaNode", + baseIdentity); + builder.addIdentity((IdentitySchemaNode) baseIdentity); } }