package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
-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.ConfigStatement;
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.ConfigEffectiveStatementImpl;
public class ConfigStatementImpl extends AbstractDeclaredStatement<Boolean> implements ConfigStatement {
- private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(Rfc6020Mapping
- .CONFIG)
- .build();
+ private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
+ Rfc6020Mapping.CONFIG).build();
- protected ConfigStatementImpl(
- StmtContext<Boolean, ConfigStatement, ?> context) {
+ protected ConfigStatementImpl(final StmtContext<Boolean, ConfigStatement, ?> context) {
super(context);
}
- public static class Definition extends AbstractStatementSupport<Boolean,ConfigStatement,EffectiveStatement<Boolean,ConfigStatement>> {
+ public static class Definition extends
+ AbstractStatementSupport<Boolean, ConfigStatement, EffectiveStatement<Boolean, ConfigStatement>> {
public Definition() {
super(Rfc6020Mapping.CONFIG);
}
- @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 ConfigStatement createDeclared(StmtContext<Boolean, ConfigStatement, ?> ctx) {
- return new ConfigStatementImpl(ctx);
+ @Override
+ public ConfigStatement createDeclared(final StmtContext<Boolean, ConfigStatement, ?> ctx) {
+ final ConfigStatement ret = new ConfigStatementImpl(ctx);
+
+ if (EmptyConfigStatement.FALSE.equals(ret)) {
+ return EmptyConfigStatement.FALSE;
+ } else if (EmptyConfigStatement.TRUE.equals(ret)) {
+ return EmptyConfigStatement.TRUE;
+ } else {
+ return ret;
+ }
}
- @Override public EffectiveStatement<Boolean, ConfigStatement> createEffective(StmtContext<Boolean, ConfigStatement, EffectiveStatement<Boolean, ConfigStatement>> ctx) {
- return new ConfigEffectiveStatementImpl(ctx);
+ @Override
+ public EffectiveStatement<Boolean, ConfigStatement> createEffective(
+ final StmtContext<Boolean, ConfigStatement, EffectiveStatement<Boolean, ConfigStatement>> ctx) {
+ final EffectiveStatement<Boolean, ConfigStatement> ret = new ConfigEffectiveStatementImpl(ctx);
+ final ConfigStatement declared = ret.getDeclared();
+ if (declared instanceof EmptyConfigStatement && ret.effectiveSubstatements().isEmpty()) {
+ return ((EmptyConfigStatement)declared).toEffective();
+ }
+ return ret;
}
@Override
- public void onFullDefinitionDeclared(StmtContext.Mutable<Boolean, ConfigStatement,
- EffectiveStatement<Boolean, ConfigStatement>> stmt) throws SourceException {
+ public void onFullDefinitionDeclared(final StmtContext.Mutable<Boolean, ConfigStatement,
+ EffectiveStatement<Boolean, ConfigStatement>> stmt) {
super.onFullDefinitionDeclared(stmt);
SUBSTATEMENT_VALIDATOR.validate(stmt);
}
}
- @Nonnull @Override
- public Boolean getValue() {
+ @Override
+ public boolean getValue() {
return argument();
}
}