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%2FMandatoryStatementImpl.java;h=dfa4b916f02ca4d2f4d0ca81a08d439aa2aa73e7;hb=2b2647abb3ffe8274557c302b4de420f8c2f88d6;hp=d2b30d071b83a5b097eae06e20b4465470cccdfc;hpb=f1c55073f8d7631007c01a401346cc83383e5745;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/MandatoryStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/MandatoryStatementImpl.java index d2b30d071b..dfa4b916f0 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/MandatoryStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/MandatoryStatementImpl.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,49 +7,70 @@ */ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.MandatoryEffectiveStatementImpl; - +import javax.annotation.Nonnull; 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.MandatoryStatement; +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.Nonnull; +import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.MandatoryEffectiveStatementImpl; -public class MandatoryStatementImpl extends AbstractDeclaredStatement implements - MandatoryStatement { +public class MandatoryStatementImpl extends AbstractDeclaredStatement implements MandatoryStatement { + private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping + .MANDATORY) + .build(); - protected MandatoryStatementImpl( - StmtContext context) { + protected MandatoryStatementImpl(final StmtContext context) { super(context); } - public static class Definition extends AbstractStatementSupport> { + public static class Definition extends + AbstractStatementSupport> { public Definition() { super(Rfc6020Mapping.MANDATORY); } - @Override public Boolean parseArgumentValue( - StmtContext ctx, String value) throws SourceException { + @Override + public Boolean parseArgumentValue(final StmtContext ctx, final String value) { return Boolean.valueOf(value); } - @Override public MandatoryStatement createDeclared( - StmtContext ctx) { - return new MandatoryStatementImpl(ctx); + @Override + public MandatoryStatement createDeclared(final StmtContext ctx) { + final MandatoryStatement ret = new MandatoryStatementImpl(ctx); + if (EmptyMandatoryStatement.FALSE.equals(ret)) { + return EmptyMandatoryStatement.FALSE; + } else if (EmptyMandatoryStatement.TRUE.equals(ret)) { + return EmptyMandatoryStatement.TRUE; + } else { + return ret; + } + } + + @Override + public EffectiveStatement createEffective( + final StmtContext> ctx) { + final EffectiveStatement ret = new MandatoryEffectiveStatementImpl(ctx); + final MandatoryStatement declared = ret.getDeclared(); + if (declared instanceof EmptyMandatoryStatement && ret.effectiveSubstatements().isEmpty()) { + return ((EmptyMandatoryStatement)declared).toEffective(); + } + return ret; } - @Override public EffectiveStatement createEffective( - StmtContext> ctx) { - return new MandatoryEffectiveStatementImpl(ctx); + @Override + public void onFullDefinitionDeclared(StmtContext.Mutable> stmt) { + super.onFullDefinitionDeclared(stmt); + SUBSTATEMENT_VALIDATOR.validate(stmt); } } - @Nonnull @Override - public Boolean getValue() { + @Override + @Nonnull public Boolean getValue() { return argument(); } }