*/
package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.revision_date;
+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.RevisionDateEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement;
-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 RevisionDateStatementSupport
- extends AbstractStatementSupport<Revision, RevisionDateStatement, RevisionDateEffectiveStatement> {
+ extends BaseStatementSupport<Revision, RevisionDateStatement, RevisionDateEffectiveStatement> {
private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
SubstatementValidator.builder(YangStmtMapping.REVISION_DATE).build();
private static final RevisionDateStatementSupport INSTANCE = new RevisionDateStatementSupport();
}
@Override
- public RevisionDateStatement createDeclared(final StmtContext<Revision, RevisionDateStatement, ?> ctx) {
- return new RevisionDateStatementImpl(ctx);
+ protected SubstatementValidator getSubstatementValidator() {
+ return SUBSTATEMENT_VALIDATOR;
}
@Override
- public RevisionDateEffectiveStatement createEffective(
- final StmtContext<Revision, RevisionDateStatement, RevisionDateEffectiveStatement> ctx) {
- return new RevisionDateEffectiveStatementImpl(ctx);
+ protected RevisionDateStatement createDeclared(final StmtContext<Revision, RevisionDateStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new RegularRevisionDateStatement(ctx.coerceStatementArgument(), substatements);
}
@Override
- protected SubstatementValidator getSubstatementValidator() {
- return SUBSTATEMENT_VALIDATOR;
+ protected RevisionDateStatement createEmptyDeclared(final StmtContext<Revision, RevisionDateStatement, ?> ctx) {
+ return new EmptyRevisionDateStatement(ctx.coerceStatementArgument());
+ }
+
+ @Override
+ protected RevisionDateEffectiveStatement createEffective(final Current<Revision, RevisionDateStatement> stmt,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return substatements.isEmpty() ? new EmptyRevisionDateEffectiveStatement(stmt.declared())
+ : new RegularRevisionDateEffectiveStatement(stmt.declared(), substatements);
}
}
\ No newline at end of file