From 49cd5a097d17058b1569d69d003187ec3ce52db0 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 30 Jun 2020 23:19:45 +0200 Subject: [PATCH] Convert AbstractIncludeStatementSupport Convert the trivial case of include statement, which can be easily minimized. JIRA: YANGTOOLS-1065 Change-Id: If837cc29db300f084e19014ed0b09a5e5460aea9 Signed-off-by: Robert Varga --- .../api/stmt/IncludeEffectiveStatement.java | 7 ++- .../yang/model/api/stmt/IncludeStatement.java | 7 +++ .../AbstractIncludeStatementSupport.java | 50 ++++++++++++------- ...va => EmptyIncludeEffectiveStatement.java} | 13 +++-- ...ntImpl.java => EmptyIncludeStatement.java} | 8 +-- .../RegularIncludeEffectiveStatement.java | 22 ++++++++ .../stmt/include/RegularIncludeStatement.java | 21 ++++++++ 7 files changed, 97 insertions(+), 31 deletions(-) rename yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/{IncludeEffectiveStatementImpl.java => EmptyIncludeEffectiveStatement.java} (53%) rename yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/{IncludeStatementImpl.java => EmptyIncludeStatement.java} (57%) create mode 100644 yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/RegularIncludeEffectiveStatement.java create mode 100644 yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/RegularIncludeStatement.java diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IncludeEffectiveStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IncludeEffectiveStatement.java index a0834af382..923450edfb 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IncludeEffectiveStatement.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IncludeEffectiveStatement.java @@ -8,9 +8,14 @@ package org.opendaylight.yangtools.yang.model.api.stmt; import com.google.common.annotations.Beta; +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 IncludeEffectiveStatement extends EffectiveStatement { - + @Override + default StatementDefinition statementDefinition() { + return YangStmtMapping.INCLUDE; + } } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IncludeStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IncludeStatement.java index 28ff9c08ed..05e4196f8f 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IncludeStatement.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IncludeStatement.java @@ -12,8 +12,15 @@ import static com.google.common.base.Verify.verifyNotNull; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; +import org.opendaylight.yangtools.yang.model.api.YangStmtMapping; +import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition; public interface IncludeStatement extends DocumentedDeclaredStatement { + @Override + default StatementDefinition statementDefinition() { + return YangStmtMapping.INCLUDE; + } + default @NonNull String getModule() { // FIXME: YANGTOOLS-908: verifyNotNull() should not be needed here return verifyNotNull(argument()); diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/AbstractIncludeStatementSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/AbstractIncludeStatementSupport.java index f852ac01db..24b6b0cbc1 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/AbstractIncludeStatementSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/AbstractIncludeStatementSupport.java @@ -10,16 +10,19 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.include; import static org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase.SOURCE_LINKAGE; import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.findFirstDeclaredSubstatement; +import com.google.common.collect.ImmutableList; import java.util.Collection; import java.util.Optional; 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.IncludeEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement; import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement; import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier; +import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStringStatementSupport; import org.opendaylight.yangtools.yang.parser.spi.SubmoduleNamespace; -import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport; import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException; import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder; import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder.InferenceAction; @@ -32,28 +35,12 @@ import org.opendaylight.yangtools.yang.parser.spi.source.IncludedModuleContext; import org.opendaylight.yangtools.yang.parser.spi.source.IncludedSubmoduleNameToModuleCtx; abstract class AbstractIncludeStatementSupport - extends AbstractStatementSupport { + extends BaseStringStatementSupport { AbstractIncludeStatementSupport() { super(YangStmtMapping.INCLUDE); } - @Override - public final String parseArgumentValue(final StmtContext ctx, final String value) { - return value; - } - - @Override - public final IncludeStatement createDeclared(final StmtContext ctx) { - return new IncludeStatementImpl(ctx); - } - - @Override - public final IncludeEffectiveStatement createEffective( - final StmtContext ctx) { - return new IncludeEffectiveStatementImpl(ctx); - } - @Override public final void onPreLinkageDeclared(final Mutable stmt) { final StmtContext revision = findFirstDeclaredSubstatement(stmt, @@ -99,4 +86,29 @@ abstract class AbstractIncludeStatementSupport } }); } -} \ No newline at end of file + + @Override + protected final IncludeStatement createDeclared(final StmtContext ctx, + final ImmutableList> substatements) { + return new RegularIncludeStatement(ctx, substatements); + } + + @Override + protected final IncludeStatement createEmptyDeclared(final StmtContext ctx) { + return new EmptyIncludeStatement(ctx); + } + + @Override + protected final IncludeEffectiveStatement createEffective( + final StmtContext ctx, + final IncludeStatement declared, final ImmutableList> substatements) { + return new RegularIncludeEffectiveStatement(declared, substatements); + } + + @Override + protected final IncludeEffectiveStatement createEmptyEffective( + final StmtContext ctx, + final IncludeStatement declared) { + return new EmptyIncludeEffectiveStatement(declared); + } +} diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/IncludeEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/EmptyIncludeEffectiveStatement.java similarity index 53% rename from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/IncludeEffectiveStatementImpl.java rename to yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/EmptyIncludeEffectiveStatement.java index 28b33eb117..66470aaaba 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/IncludeEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/EmptyIncludeEffectiveStatement.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,12 +9,11 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.include; import org.opendaylight.yangtools.yang.model.api.stmt.IncludeEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement; -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 IncludeEffectiveStatementImpl extends DeclaredEffectiveStatementBase +final class EmptyIncludeEffectiveStatement extends DefaultArgument implements IncludeEffectiveStatement { - IncludeEffectiveStatementImpl(final StmtContext ctx) { - super(ctx); + EmptyIncludeEffectiveStatement(final IncludeStatement declared) { + super(declared); } -} \ No newline at end of file +} diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/IncludeStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/EmptyIncludeStatement.java similarity index 57% rename from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/IncludeStatementImpl.java rename to yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/EmptyIncludeStatement.java index 128c8829dc..68adaea07a 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/IncludeStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/EmptyIncludeStatement.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, @@ -8,11 +8,11 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.include; import org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement; -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 IncludeStatementImpl extends AbstractDeclaredStatement implements IncludeStatement { - IncludeStatementImpl(final StmtContext context) { +final class EmptyIncludeStatement extends WithArgument implements IncludeStatement { + EmptyIncludeStatement(final StmtContext context) { super(context); } } diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/RegularIncludeEffectiveStatement.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/RegularIncludeEffectiveStatement.java new file mode 100644 index 0000000000..87db2216e3 --- /dev/null +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/RegularIncludeEffectiveStatement.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.include; + +import com.google.common.collect.ImmutableList; +import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.IncludeEffectiveStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement; +import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultArgument.WithSubstatements; + +final class RegularIncludeEffectiveStatement extends WithSubstatements + implements IncludeEffectiveStatement { + RegularIncludeEffectiveStatement(final IncludeStatement declared, + final ImmutableList> substatements) { + super(declared, substatements); + } +} diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/RegularIncludeStatement.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/RegularIncludeStatement.java new file mode 100644 index 0000000000..16aff51ad6 --- /dev/null +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/include/RegularIncludeStatement.java @@ -0,0 +1,21 @@ +/* + * 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.include; + +import com.google.common.collect.ImmutableList; +import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement; +import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithArgument.WithSubstatements; +import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; + +final class RegularIncludeStatement extends WithSubstatements implements IncludeStatement { + RegularIncludeStatement(final StmtContext context, + final ImmutableList> substatements) { + super(context, substatements); + } +} -- 2.36.6