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%2FRevisionDateStatementImpl.java;h=279e064359ca1d5272fe691d8adf50d3c3be423e;hb=0c39d30a237a61b7a7eb0fecb066004ff561e1a9;hp=301978546cccecde28ea28e56a11419f757129d0;hpb=6af38a495f688cbfa0ff2c09db7e62e4d530bb3a;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RevisionDateStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RevisionDateStatementImpl.java index 301978546c..279e064359 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RevisionDateStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RevisionDateStatementImpl.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,64 @@ */ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.RevisionDateEffectiveStatementImpl; - -import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping; +import java.text.ParseException; +import java.util.Date; +import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil; +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.RevisionDateStatement; 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.RevisionDateEffectiveStatementImpl; -public class RevisionDateStatementImpl extends - AbstractDeclaredStatement implements RevisionDateStatement { +public class RevisionDateStatementImpl extends AbstractDeclaredStatement implements RevisionDateStatement { + private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = + SubstatementValidator.builder(YangStmtMapping.REVISION_DATE).build(); - protected RevisionDateStatementImpl( - StmtContext context) { + protected RevisionDateStatementImpl(final StmtContext context) { super(context); } public static class Definition extends - AbstractStatementSupport> { + AbstractStatementSupport> { public Definition() { - super(Rfc6020Mapping.REVISION_DATE); + super(YangStmtMapping.REVISION_DATE); } @Override - public String parseArgumentValue(StmtContext ctx, String value) { - return value; + public Date parseArgumentValue(final StmtContext ctx, final String value) { + try { + return SimpleDateFormatUtil.getRevisionFormat().parse(value); + } catch (ParseException e) { + throw new SourceException(ctx.getStatementSourceReference(), e, + "Revision value %s is not in required format yyyy-MM-dd", value); + } } @Override - public RevisionDateStatement createDeclared( - StmtContext ctx) { + public RevisionDateStatement createDeclared(final StmtContext ctx) { return new RevisionDateStatementImpl(ctx); } @Override - public EffectiveStatement createEffective( - StmtContext> ctx) { + public EffectiveStatement createEffective( + final StmtContext> ctx) { return new RevisionDateEffectiveStatementImpl(ctx); } + @Override + protected SubstatementValidator getSubstatementValidator() { + return SUBSTATEMENT_VALIDATOR; + } } @Override - public String getDate() { + public Date getDate() { return argument(); } - }