*/
package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.revision;
+import com.google.common.collect.ImmutableList;
import java.time.format.DateTimeParseException;
import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.RevisionEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.RevisionStatement;
-import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
-public final class RevisionStatementSupport extends
- AbstractStatementSupport<Revision, RevisionStatement, EffectiveStatement<Revision, RevisionStatement>> {
+public final class RevisionStatementSupport
+ extends BaseStatementSupport<Revision, RevisionStatement, RevisionEffectiveStatement> {
private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
YangStmtMapping.REVISION)
.addOptional(YangStmtMapping.DESCRIPTION)
try {
return Revision.of(value);
} catch (DateTimeParseException e) {
- throw new SourceException(ctx.getStatementSourceReference(), e,
+ throw new SourceException(ctx.sourceReference(), e,
"Revision value %s is not in required format yyyy-MM-dd", value);
}
}
@Override
- public RevisionStatement createDeclared(final StmtContext<Revision, RevisionStatement, ?> ctx) {
- return new RevisionStatementImpl(ctx);
+ protected SubstatementValidator getSubstatementValidator() {
+ return SUBSTATEMENT_VALIDATOR;
}
@Override
- public EffectiveStatement<Revision, RevisionStatement> createEffective(
- final StmtContext<Revision, RevisionStatement, EffectiveStatement<Revision, RevisionStatement>> ctx) {
- return new RevisionEffectiveStatementImpl(ctx);
+ protected RevisionStatement createDeclared(final StmtContext<Revision, RevisionStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new RegularRevisionStatement(ctx.getArgument(), substatements);
}
@Override
- protected SubstatementValidator getSubstatementValidator() {
- return SUBSTATEMENT_VALIDATOR;
+ protected RevisionStatement createEmptyDeclared(final StmtContext<Revision, RevisionStatement, ?> ctx) {
+ return new EmptyRevisionStatement(ctx.getArgument());
+ }
+
+ @Override
+ protected RevisionEffectiveStatement createEffective(final Current<Revision, RevisionStatement> stmt,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return substatements.isEmpty() ? new EmptyRevisionEffectiveStatement(stmt.declared())
+ : new RegularRevisionEffectiveStatement(stmt.declared(), substatements);
}
}
\ No newline at end of file