X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Fstmt%2Frfc6020%2FYangVersionStatementImpl.java;h=59f77ae22b73fe6a6947507d47e2a14c446834bd;hb=b9bda31186b0587d699373321b5ce19717dbc873;hp=093c3df202431bd52eab9b710afd1a5d2970d019;hpb=be1171fbcc4469bd090366052f96a2ae08ffac25;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YangVersionStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YangVersionStatementImpl.java index 093c3df202..59f77ae22b 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YangVersionStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YangVersionStatementImpl.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the @@ -7,47 +7,65 @@ */ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.YangVersionEffectiveStatementImpl; - -import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping; +import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.common.YangVersion; +import org.opendaylight.yangtools.yang.model.api.YangStmtMapping; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.YangVersionStatement; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; +import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator; import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; -import javax.annotation.Nonnull; +import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.YangVersionEffectiveStatementImpl; -public class YangVersionStatementImpl extends AbstractDeclaredStatement implements YangVersionStatement { +public class YangVersionStatementImpl extends AbstractDeclaredStatement implements YangVersionStatement { + private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping + .YANG_VERSION) + .build(); - protected YangVersionStatementImpl(StmtContext context) { + protected YangVersionStatementImpl(final StmtContext context) { super(context); } - public static class Definition extends AbstractStatementSupport> { + public static class Definition extends AbstractStatementSupport> { public Definition() { - super(Rfc6020Mapping.YANG_VERSION); + super(YangStmtMapping.YANG_VERSION); } @Override - public String parseArgumentValue(StmtContext ctx, String value) throws SourceException { - return value; + public YangVersion parseArgumentValue(final StmtContext ctx, final String value) { + return SourceException.unwrap(YangVersion.parse(value), ctx.getStatementSourceReference(), + "Unsupported YANG version %s", value); } @Override - public YangVersionStatement createDeclared(StmtContext ctx) { + public YangVersionStatement createDeclared(final StmtContext ctx) { return new YangVersionStatementImpl(ctx); } @Override - public EffectiveStatement createEffective(StmtContext> ctx) { + public void onPreLinkageDeclared( + final StmtContext.Mutable> stmt) { + stmt.setRootVersion(stmt.getStatementArgument()); + } + + @Override + public EffectiveStatement createEffective + (final StmtContext> ctx) { return new YangVersionEffectiveStatementImpl(ctx); } + + @Override + protected SubstatementValidator getSubstatementValidator() { + return SUBSTATEMENT_VALIDATOR; + } } @Nonnull @Override - public String getValue() { - return rawArgument(); + public YangVersion getValue() { + return argument(); } }