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%2Feffective%2FImportEffectiveStatementImpl.java;h=d9f6fb6b2ca9141ca630b97267520513b5532712;hb=6d051fb473374c133474d2e90aa68663ae948763;hp=c9a2d2c3590293445a050860ea1489be176c9ef1;hpb=aa0d59e9afecc484e8d0e219d3156e7817266e28;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ImportEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ImportEffectiveStatementImpl.java index c9a2d2c359..d9f6fb6b2c 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ImportEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ImportEffectiveStatementImpl.java @@ -7,35 +7,35 @@ */ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective; -import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil; - import java.util.Date; import java.util.Objects; +import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil; import org.opendaylight.yangtools.yang.model.api.ModuleImport; -import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ImportStatement; +import org.opendaylight.yangtools.yang.parser.spi.meta.MissingSubstatementException; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; -public class ImportEffectiveStatementImpl extends EffectiveStatementBase implements +public class ImportEffectiveStatementImpl extends DeclaredEffectiveStatementBase implements ModuleImport { - private String moduleName; - private Date revision; - private String prefix; + private final String moduleName; + private final Date revision; + private final String prefix; - public ImportEffectiveStatementImpl(StmtContext ctx) { + public ImportEffectiveStatementImpl(final StmtContext ctx) { super(ctx); moduleName = ctx.getStatementArgument(); - revision = SimpleDateFormatUtil.DEFAULT_DATE_IMP; - for (final EffectiveStatement effectiveStatement : effectiveSubstatements()) { - if (effectiveStatement instanceof RevisionDateEffectiveStatementImpl) { - revision = ((RevisionDateEffectiveStatementImpl) effectiveStatement).argument(); - } - if (effectiveStatement instanceof PrefixEffectiveStatementImpl) { - prefix = ((PrefixEffectiveStatementImpl) effectiveStatement).argument(); - } + RevisionDateEffectiveStatementImpl revisionDateStmt = firstEffective(RevisionDateEffectiveStatementImpl.class); + this.revision = (revisionDateStmt == null) ? SimpleDateFormatUtil.DEFAULT_DATE_IMP : revisionDateStmt.argument(); + + PrefixEffectiveStatementImpl prefixStmt = firstEffective(PrefixEffectiveStatementImpl.class); + if (prefixStmt != null) { + this.prefix = prefixStmt.argument(); + } else { + throw new MissingSubstatementException("Prefix is mandatory substatement of import statement", + ctx.getStatementSourceReference()); } } @@ -65,7 +65,7 @@ public class ImportEffectiveStatementImpl extends EffectiveStatementBase