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%2FValueStatementImpl.java;h=6f78b55963c722ae673cab195acddfb862b79401;hb=d7e7abf4f539179cc0bcdb45606c19ef48aadb87;hp=5c4dfb7c97dfd7e8eca17b8c1ca49dbf25282204;hpb=481a692d463636bbcf75f023da71703913e1b605;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ValueStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ValueStatementImpl.java index 5c4dfb7c97..6f78b55963 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ValueStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ValueStatementImpl.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 @@ -10,47 +10,64 @@ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020; import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ValueStatement; +import org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator; 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.source.SourceException; +import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ValueEffectiveStatementImpl; -public class ValueStatementImpl extends AbstractDeclaredStatement - implements ValueStatement { +public class ValueStatementImpl extends AbstractDeclaredStatement implements ValueStatement { + private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder( + Rfc6020Mapping.VALUE).build(); - protected ValueStatementImpl(StmtContext context) { + protected ValueStatementImpl(final StmtContext context) { super(context); } - public static class Definition - extends - AbstractStatementSupport> { + public static class Definition extends + AbstractStatementSupport> { public Definition() { super(Rfc6020Mapping.VALUE); } @Override - public String parseArgumentValue(StmtContext ctx, String value) { - return value; + public Integer parseArgumentValue(final StmtContext ctx, final String value) { + int valueNum; + + try { + valueNum = Integer.parseInt(value); + } catch (NumberFormatException e) { + throw new SourceException(String.format( + "%s is not valid value statement integer argument in a range of -2147483648..2147483647", value), + ctx.getStatementSourceReference(), e); + } + + return valueNum; } @Override - public ValueStatement createDeclared( - StmtContext ctx) { + public ValueStatement createDeclared(final StmtContext ctx) { return new ValueStatementImpl(ctx); } @Override - public EffectiveStatement createEffective( - StmtContext> ctx) { - throw new UnsupportedOperationException(); + public EffectiveStatement createEffective( + final StmtContext> ctx) { + return new ValueEffectiveStatementImpl(ctx); } + @Override + public void onFullDefinitionDeclared( + final StmtContext.Mutable> stmt) { + super.onFullDefinitionDeclared(stmt); + SUBSTATEMENT_VALIDATOR.validate(stmt); + } } @Override - public String getValue() { + public int getValue() { return argument(); } - }