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%2FPositionStatementImpl.java;h=213d31738763d9fba77080308f764c4e78d5e3f8;hb=b9bda31186b0587d699373321b5ce19717dbc873;hp=9496c69b751b2ee27afd946eb9202c3afb709bf0;hpb=4078c52f76ce904726f0e127eba1a96c7bae357d;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/PositionStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/PositionStatementImpl.java index 9496c69b75..213d317387 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/PositionStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/PositionStatementImpl.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,53 +7,60 @@ */ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.PositionEffectiveStatementImpl; - -import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping; +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.PositionStatement; 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 org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.PositionEffectiveStatementImpl; -public class PositionStatementImpl extends AbstractDeclaredStatement - implements PositionStatement { +public class PositionStatementImpl extends AbstractDeclaredStatement implements PositionStatement { + private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder( + YangStmtMapping.POSITION).build(); - protected PositionStatementImpl( - StmtContext context) { + protected PositionStatementImpl(final StmtContext context) { super(context); } - public static class Definition - extends - AbstractStatementSupport> { + public static class Definition extends AbstractStatementSupport> { public Definition() { - super(Rfc6020Mapping.POSITION); + super(YangStmtMapping.POSITION); } @Override - public String parseArgumentValue(StmtContext ctx, String value) { - return value; + public Long parseArgumentValue(final StmtContext ctx, final String value) { + try { + return Long.parseLong(value); + } catch (NumberFormatException e) { + throw new SourceException(String.format("Bit position value %s is not valid integer", value), + ctx.getStatementSourceReference(), e); + } } @Override - public PositionStatement createDeclared( - StmtContext ctx) { + public PositionStatement createDeclared(final StmtContext ctx) { return new PositionStatementImpl(ctx); } @Override - public EffectiveStatement createEffective( - StmtContext> ctx) { + public EffectiveStatement createEffective( + final StmtContext> ctx) { return new PositionEffectiveStatementImpl(ctx); } + @Override + protected SubstatementValidator getSubstatementValidator() { + return SUBSTATEMENT_VALIDATOR; + } } @Override - public String getValue() { + public long getValue() { return argument(); } - }