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=28d4ee82b0ae51c4bbd923e4338907f29dd01d6e;hb=04fa25a4fe8957f6492618aa9a1e9a4f9af39df4;hp=7918d7a7bad69268ef92181abbd672fff738a545;hpb=481a692d463636bbcf75f023da71703913e1b605;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 7918d7a7ba..28d4ee82b0 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,51 +7,66 @@ */ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020; +import java.text.ParseException; +import java.util.Date; +import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil; 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.RevisionDateStatement; +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.RevisionDateEffectiveStatementImpl; -public class RevisionDateStatementImpl extends - AbstractDeclaredStatement implements RevisionDateStatement { +public class RevisionDateStatementImpl extends AbstractDeclaredStatement implements RevisionDateStatement { + private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = + SubstatementValidator.builder(Rfc6020Mapping.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); } @Override - public String parseArgumentValue(StmtContext ctx, String value) { - return value; + public Date parseArgumentValue(final StmtContext ctx, final String value) throws SourceException { + 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) { - throw new UnsupportedOperationException(); + public EffectiveStatement createEffective( + final StmtContext> ctx) { + return new RevisionDateEffectiveStatementImpl(ctx); } + @Override + public void onFullDefinitionDeclared( + final StmtContext.Mutable> stmt) { + super.onFullDefinitionDeclared(stmt); + SUBSTATEMENT_VALIDATOR.validate(stmt); + } } @Override - public String getDate() { + public Date getDate() { return argument(); } - }