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%2FRevisionStatementImpl.java;h=5ac76435214e14a0495d203eaa7ea7f1d053f772;hb=04fa25a4fe8957f6492618aa9a1e9a4f9af39df4;hp=d8cc62c8c19014d87032b22dd4e14518ec7e0355;hpb=30c67c4d780e897d972d60bb79d546b512516f90;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RevisionStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RevisionStatementImpl.java index d8cc62c8c1..5ac7643521 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RevisionStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RevisionStatementImpl.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,26 +7,29 @@ */ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.RevisionEffectiveStatementImpl; -import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil; import java.text.ParseException; import java.util.Date; +import javax.annotation.Nullable; +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.DescriptionStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement; import org.opendaylight.yangtools.yang.model.api.stmt.RevisionStatement; +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 javax.annotation.Nullable; +import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.RevisionEffectiveStatementImpl; public class RevisionStatementImpl extends AbstractDeclaredStatement implements RevisionStatement { + private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder( + Rfc6020Mapping.REVISION) + .add(Rfc6020Mapping.DESCRIPTION, 0, 1).add(Rfc6020Mapping.REFERENCE, 0, 1).build(); - protected RevisionStatementImpl( - StmtContext context) { + protected RevisionStatementImpl(final StmtContext context) { super(context); } @@ -39,31 +42,32 @@ public class RevisionStatementImpl extends AbstractDeclaredStatement } @Override - public Date parseArgumentValue(StmtContext ctx, String value) - throws SourceException { - Date revision; + public Date parseArgumentValue(final StmtContext ctx, final String value) { try { - revision = SimpleDateFormatUtil.getRevisionFormat() - .parse(value); + return SimpleDateFormatUtil.getRevisionFormat().parse(value); } catch (ParseException e) { - throw new SourceException(String.format("Revision value %s is not in required format yyyy-MM-dd", - value), ctx.getStatementSourceReference(), e); + throw new SourceException(ctx.getStatementSourceReference(), e, + "Revision value %s is not in required format yyyy-MM-dd", value); } - - return revision; } @Override - public RevisionStatement createDeclared( - StmtContext ctx) { + public RevisionStatement createDeclared(final StmtContext ctx) { return new RevisionStatementImpl(ctx); } @Override public EffectiveStatement createEffective( - StmtContext> ctx) { + final StmtContext> ctx) { return new RevisionEffectiveStatementImpl(ctx); } + + @Override + public void onFullDefinitionDeclared( + final StmtContext.Mutable> stmt) { + super.onFullDefinitionDeclared(stmt); + SUBSTATEMENT_VALIDATOR.validate(stmt); + } } @Override