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%2FInstanceIdentifierSpecificationSupport.java;h=f30af56c5695cdffc4a0da6c82a0f4887dc1cfe2;hb=d605800fa3da3ea340497c683bd83ea37c12da6c;hp=55b5101c73eff3afd06abd3abdebca92cceff3ec;hpb=608467c8b3e104dcd60c50d20c438f7cfd01631e;p=yangtools.git diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/InstanceIdentifierSpecificationSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/InstanceIdentifierSpecificationSupport.java index 55b5101c73..f30af56c56 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/InstanceIdentifierSpecificationSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/InstanceIdentifierSpecificationSupport.java @@ -8,33 +8,27 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.type; import com.google.common.collect.ImmutableList; +import org.opendaylight.yangtools.yang.common.QName; 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.RequireInstanceEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement.InstanceIdentifierSpecification; -import org.opendaylight.yangtools.yang.model.util.type.BaseTypes; -import org.opendaylight.yangtools.yang.model.util.type.InstanceIdentifierTypeBuilder; -import org.opendaylight.yangtools.yang.model.util.type.RestrictedTypes; -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.InstanceIdentifierTypeBuilder; +import org.opendaylight.yangtools.yang.model.ri.type.RestrictedTypes; 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.SubstatementValidator; -final class InstanceIdentifierSpecificationSupport extends BaseStatementSupport> { - private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder( - YangStmtMapping.TYPE) - .addOptional(YangStmtMapping.REQUIRE_INSTANCE) - .build(); +final class InstanceIdentifierSpecificationSupport + extends AbstractTypeSupport { + private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = + SubstatementValidator.builder(YangStmtMapping.TYPE).addOptional(YangStmtMapping.REQUIRE_INSTANCE).build(); - InstanceIdentifierSpecificationSupport() { - super(YangStmtMapping.TYPE); - } - - @Override - public String parseArgumentValue(final StmtContext ctx, final String value) { - return value; + InstanceIdentifierSpecificationSupport(final YangParserConfiguration config) { + super(config); } @Override @@ -44,23 +38,18 @@ final class InstanceIdentifierSpecificationSupport extends BaseStatementSupport< @Override protected InstanceIdentifierSpecification createDeclared( - final StmtContext ctx, + final StmtContext ctx, final ImmutableList> substatements) { - return new RegularInstanceIdentifierSpecification(ctx.getRawArgument(), substatements); - } - - @Override - protected InstanceIdentifierSpecification createEmptyDeclared( - final StmtContext ctx) { - return new EmptyIdentifierSpecification(ctx.getRawArgument()); + return substatements.isEmpty() ? new EmptyIdentifierSpecification(ctx.getRawArgument(), ctx.getArgument()) + : new RegularInstanceIdentifierSpecification(ctx.getRawArgument(), ctx.getArgument(), substatements); } @Override - protected EffectiveStatement createEffective( - final Current stmt, + protected EffectiveStatement createEffective( + final Current stmt, final ImmutableList> substatements) { final InstanceIdentifierTypeBuilder builder = RestrictedTypes.newInstanceIdentifierBuilder( - BaseTypes.instanceIdentifierType(), stmt.wrapSchemaPath()); + BaseTypes.instanceIdentifierType(), stmt.argumentAsTypeQName()); // TODO: we could do better here for empty substatements, but its really splitting hairs for (EffectiveStatement subStmt : substatements) {