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=6155c1857566c9530b65ce93dd6364a93bfc223c;hb=bf46cb084b6c4b2a0d5ccc8f849db6603938633d;hp=fd9331f9220baf7ef5de53be490c82afa2295175;hpb=481a692d463636bbcf75f023da71703913e1b605;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 fd9331f922..6155c18575 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,48 +7,73 @@ */ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020; -import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping; +import javax.annotation.Nonnull; +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.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(YangStmtMapping + .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); + super(YangStmtMapping.MANDATORY); + } + + @Override + public Boolean parseArgumentValue(final StmtContext ctx, final String value) { + return Utils.parseBoolean(ctx, value); + } + + @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 Boolean parseArgumentValue( - StmtContext ctx, String value) throws SourceException { - return Boolean.valueOf(value); + @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 MandatoryStatement createDeclared( - StmtContext ctx) { - return new MandatoryStatementImpl(ctx); + @Override + public String internArgument(final String rawArgument) { + return Utils.internBoolean(rawArgument); } - @Override public EffectiveStatement createEffective( - StmtContext> ctx) { - throw new UnsupportedOperationException(); + @Override + protected SubstatementValidator getSubstatementValidator() { + return SUBSTATEMENT_VALIDATOR; } } - @Nonnull @Override - public Boolean getValue() { + @Override + @Nonnull public Boolean getValue() { return argument(); } }