X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-rfc7950%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Frfc7950%2Fstmt%2Ftype%2FInstanceIdentifierSpecificationSupport.java;h=f30af56c5695cdffc4a0da6c82a0f4887dc1cfe2;hb=d605800fa3da3ea340497c683bd83ea37c12da6c;hp=16dfa87c28c25717daff9e0eed469ac220b82b3d;hpb=7fd1abd03d792989653a05052e723b1516a9e554;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 16dfa87c28..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,29 +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.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.AbstractStringStatementSupport; 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 AbstractStringStatementSupport> { - private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder( - YangStmtMapping.TYPE) - .addOptional(YangStmtMapping.REQUIRE_INSTANCE) - .build(); + extends AbstractTypeSupport { + private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = + SubstatementValidator.builder(YangStmtMapping.TYPE).addOptional(YangStmtMapping.REQUIRE_INSTANCE).build(); - InstanceIdentifierSpecificationSupport() { - super(YangStmtMapping.TYPE, StatementPolicy.exactReplica()); + InstanceIdentifierSpecificationSupport(final YangParserConfiguration config) { + super(config); } @Override @@ -40,20 +38,15 @@ final class InstanceIdentifierSpecificationSupport @Override protected InstanceIdentifierSpecification createDeclared( - final StmtContext ctx, + final StmtContext ctx, final ImmutableList> substatements) { - return new RegularInstanceIdentifierSpecification(ctx.getRawArgument(), substatements); + return substatements.isEmpty() ? new EmptyIdentifierSpecification(ctx.getRawArgument(), ctx.getArgument()) + : new RegularInstanceIdentifierSpecification(ctx.getRawArgument(), ctx.getArgument(), substatements); } @Override - protected InstanceIdentifierSpecification createEmptyDeclared( - final StmtContext ctx) { - return new EmptyIdentifierSpecification(ctx.getRawArgument()); - } - - @Override - protected EffectiveStatement createEffective( - final Current stmt, + protected EffectiveStatement createEffective( + final Current stmt, final ImmutableList> substatements) { final InstanceIdentifierTypeBuilder builder = RestrictedTypes.newInstanceIdentifierBuilder( BaseTypes.instanceIdentifierType(), stmt.argumentAsTypeQName());