From 40f6c21d96aae6ba92f98559af6cb717de6d4419 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 30 Jun 2020 18:31:49 +0200 Subject: [PATCH] Convert RevisionDateStatementSupport Convert the trivial case of revision-date statement, which can be easily minimized. JIRA: YANGTOOLS-1065 Change-Id: Ie21335714dc5ebc64f76d18e9c5b077e85dc6c69 Signed-off-by: Robert Varga --- .../stmt/RevisionDateEffectiveStatement.java | 7 +++- .../model/api/stmt/RevisionDateStatement.java | 7 ++++ ... EmptyRevisionDateEffectiveStatement.java} | 11 +++--- ...l.java => EmptyRevisionDateStatement.java} | 8 ++--- ...RegularRevisionDateEffectiveStatement.java | 23 ++++++++++++ .../RegularRevisionDateStatement.java | 22 ++++++++++++ .../RevisionDateStatementSupport.java | 36 ++++++++++++++----- 7 files changed, 94 insertions(+), 20 deletions(-) rename yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/{RevisionDateEffectiveStatementImpl.java => EmptyRevisionDateEffectiveStatement.java} (55%) rename yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/{RevisionDateStatementImpl.java => EmptyRevisionDateStatement.java} (59%) create mode 100644 yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RegularRevisionDateEffectiveStatement.java create mode 100644 yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RegularRevisionDateStatement.java diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionDateEffectiveStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionDateEffectiveStatement.java index 78dfb567c3..c17c16d607 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionDateEffectiveStatement.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionDateEffectiveStatement.java @@ -9,9 +9,14 @@ package org.opendaylight.yangtools.yang.model.api.stmt; import com.google.common.annotations.Beta; import org.opendaylight.yangtools.yang.common.Revision; +import org.opendaylight.yangtools.yang.model.api.YangStmtMapping; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; +import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition; @Beta public interface RevisionDateEffectiveStatement extends EffectiveStatement { - + @Override + default StatementDefinition statementDefinition() { + return YangStmtMapping.REVISION_DATE; + } } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionDateStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionDateStatement.java index dd2c6526d8..1e53d113c3 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionDateStatement.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RevisionDateStatement.java @@ -8,9 +8,16 @@ package org.opendaylight.yangtools.yang.model.api.stmt; 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.StatementDefinition; public interface RevisionDateStatement extends DeclaredStatement { + @Override + default StatementDefinition statementDefinition() { + return YangStmtMapping.REVISION_DATE; + } + default Revision getDate() { return argument(); } diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RevisionDateEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/EmptyRevisionDateEffectiveStatement.java similarity index 55% rename from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RevisionDateEffectiveStatementImpl.java rename to yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/EmptyRevisionDateEffectiveStatement.java index 13799eb539..1b1383bb18 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RevisionDateEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/EmptyRevisionDateEffectiveStatement.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. + * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -10,12 +10,11 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.revision_date; import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.DeclaredEffectiveStatementBase; -import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; +import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultArgument; -final class RevisionDateEffectiveStatementImpl extends DeclaredEffectiveStatementBase +final class EmptyRevisionDateEffectiveStatement extends DefaultArgument implements RevisionDateEffectiveStatement { - RevisionDateEffectiveStatementImpl(final StmtContext ctx) { - super(ctx); + EmptyRevisionDateEffectiveStatement(final RevisionDateStatement declared) { + super(declared); } } diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RevisionDateStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/EmptyRevisionDateStatement.java similarity index 59% rename from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RevisionDateStatementImpl.java rename to yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/EmptyRevisionDateStatement.java index 4b6d0cf955..f9944baa80 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RevisionDateStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/EmptyRevisionDateStatement.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. + * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -9,11 +9,11 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.revision_date; import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement; -import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement; +import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithArgument; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; -final class RevisionDateStatementImpl extends AbstractDeclaredStatement implements RevisionDateStatement { - RevisionDateStatementImpl(final StmtContext context) { +final class EmptyRevisionDateStatement extends WithArgument implements RevisionDateStatement { + EmptyRevisionDateStatement(final StmtContext context) { super(context); } } diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RegularRevisionDateEffectiveStatement.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RegularRevisionDateEffectiveStatement.java new file mode 100644 index 0000000000..0c0ab5a8e6 --- /dev/null +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RegularRevisionDateEffectiveStatement.java @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.revision_date; + +import com.google.common.collect.ImmutableList; +import org.opendaylight.yangtools.yang.common.Revision; +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.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultArgument.WithSubstatements; + +final class RegularRevisionDateEffectiveStatement extends WithSubstatements + implements RevisionDateEffectiveStatement { + RegularRevisionDateEffectiveStatement(final RevisionDateStatement declared, + final ImmutableList> substatements) { + super(declared, substatements); + } +} diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RegularRevisionDateStatement.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RegularRevisionDateStatement.java new file mode 100644 index 0000000000..f143bc4d45 --- /dev/null +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RegularRevisionDateStatement.java @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.revision_date; + +import com.google.common.collect.ImmutableList; +import org.opendaylight.yangtools.yang.common.Revision; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement; +import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithArgument.WithSubstatements; +import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; + +final class RegularRevisionDateStatement extends WithSubstatements implements RevisionDateStatement { + RegularRevisionDateStatement(final StmtContext context, + final ImmutableList> substatements) { + super(context, substatements); + } +} diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RevisionDateStatementSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RevisionDateStatementSupport.java index 07924d7cb7..40d413c972 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RevisionDateStatementSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/revision_date/RevisionDateStatementSupport.java @@ -7,18 +7,21 @@ */ 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.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 { + extends BaseStatementSupport { private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping.REVISION_DATE).build(); private static final RevisionDateStatementSupport INSTANCE = new RevisionDateStatementSupport(); @@ -42,18 +45,33 @@ public final class RevisionDateStatementSupport } @Override - public RevisionDateStatement createDeclared(final StmtContext ctx) { - return new RevisionDateStatementImpl(ctx); + protected SubstatementValidator getSubstatementValidator() { + return SUBSTATEMENT_VALIDATOR; } @Override - public RevisionDateEffectiveStatement createEffective( - final StmtContext ctx) { - return new RevisionDateEffectiveStatementImpl(ctx); + protected RevisionDateStatement createDeclared(final StmtContext ctx, + final ImmutableList> substatements) { + return new RegularRevisionDateStatement(ctx, substatements); } @Override - protected SubstatementValidator getSubstatementValidator() { - return SUBSTATEMENT_VALIDATOR; + protected RevisionDateStatement createEmptyDeclared(final StmtContext ctx) { + return new EmptyRevisionDateStatement(ctx); + } + + @Override + protected RevisionDateEffectiveStatement createEffective( + final StmtContext ctx, + final RevisionDateStatement declared, + final ImmutableList> substatements) { + return new RegularRevisionDateEffectiveStatement(declared, substatements); + } + + @Override + protected RevisionDateEffectiveStatement createEmptyEffective( + final StmtContext ctx, + final RevisionDateStatement declared) { + return new EmptyRevisionDateEffectiveStatement(declared); } } \ No newline at end of file -- 2.36.6