From 30dc308ec52749dfed6ee99274961c0979a4f2a0 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 6 Oct 2020 11:09:43 +0200 Subject: [PATCH] Simplify Module/Submodule statement argument usage Instead of decoupling statement argument, we can use raw argument, which is guaranteed to be a String. Change-Id: I9685715af546c6a07c5a19ff00aa1dd610afe2e6 Signed-off-by: Robert Varga --- .../import_/AbstractImportStatementSupport.java | 5 +---- .../module/AbstractModuleStatementSupport.java | 16 +++++++--------- .../module/ModuleEffectiveStatementImpl.java | 2 +- .../AbstractSubmoduleStatementSupport.java | 5 ++--- .../SubmoduleEffectiveStatementImpl.java | 2 +- 5 files changed, 12 insertions(+), 18 deletions(-) diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/AbstractImportStatementSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/AbstractImportStatementSupport.java index 6ad80e9e4d..1cffa632d5 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/AbstractImportStatementSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/AbstractImportStatementSupport.java @@ -18,7 +18,6 @@ import java.util.Optional; import org.opendaylight.yangtools.concepts.SemVer; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.Revision; -import org.opendaylight.yangtools.yang.common.UnqualifiedQName; 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; @@ -67,9 +66,7 @@ abstract class AbstractImportStatementSupport @Override public void apply(final InferenceContext ctx) { final StmtContext importedModuleContext = imported.resolve(ctx); - final Object importArgument = importedModuleContext.coerceStatementArgument(); - Verify.verify(importArgument instanceof UnqualifiedQName, "Unexpected module name %s", importArgument); - Verify.verify(moduleName.equals(((UnqualifiedQName) importArgument).getLocalName())); + Verify.verify(moduleName.equals(importedModuleContext.coerceRawStatementArgument())); final URI importedModuleNamespace = importedModuleContext.getFromNamespace(ModuleNameToNamespace.class, moduleName); Verify.verifyNotNull(importedModuleNamespace); diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/AbstractModuleStatementSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/AbstractModuleStatementSupport.java index 1568859a55..33b1a022e4 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/AbstractModuleStatementSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/AbstractModuleStatementSupport.java @@ -17,7 +17,6 @@ import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Optional; -import org.opendaylight.yangtools.concepts.SemVer; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.common.UnqualifiedQName; @@ -73,7 +72,7 @@ abstract class AbstractModuleStatementSupport @Override public final void onPreLinkageDeclared( final Mutable stmt) { - final String moduleName = stmt.coerceStatementArgument().getLocalName(); + final String moduleName = stmt.coerceRawStatementArgument(); final URI moduleNs = firstAttributeOf(stmt.declaredSubstatements(), NamespaceStatement.class); SourceException.throwIfNull(moduleNs, stmt.getStatementSourceReference(), @@ -113,8 +112,8 @@ abstract class AbstractModuleStatementSupport qNameModule.getNamespace(), possibleDuplicateModule.getStatementSourceReference()); } - final SourceIdentifier moduleIdentifier = RevisionSourceIdentifier.create( - stmt.coerceStatementArgument().getLocalName(), revisionDate); + final String moduleName = stmt.coerceRawStatementArgument(); + final SourceIdentifier moduleIdentifier = RevisionSourceIdentifier.create(moduleName, revisionDate); stmt.addContext(ModuleNamespace.class, moduleIdentifier, stmt); stmt.addContext(ModuleNamespaceForBelongsTo.class, moduleIdentifier.getName(), stmt); @@ -125,10 +124,10 @@ abstract class AbstractModuleStatementSupport "Prefix of the module [%s] is missing", stmt.getStatementArgument()); stmt.addToNs(PrefixToModule.class, modulePrefix, qNameModule); - stmt.addToNs(ModuleNameToModuleQName.class, stmt.getStatementArgument().getLocalName(), qNameModule); + stmt.addToNs(ModuleNameToModuleQName.class, moduleName, qNameModule); stmt.addToNs(ModuleCtxToModuleQName.class, stmt, qNameModule); stmt.addToNs(ModuleCtxToSourceIdentifier.class, stmt, moduleIdentifier); - stmt.addToNs(ModuleQNameToModuleName.class, qNameModule, stmt.getStatementArgument().getLocalName()); + stmt.addToNs(ModuleQNameToModuleName.class, qNameModule, moduleName); stmt.addToNs(ImportPrefixToModuleCtx.class, modulePrefix, stmt); if (stmt.isEnabledSemanticVersioning()) { @@ -208,9 +207,8 @@ abstract class AbstractModuleStatementSupport private static void addToSemVerModuleNamespace( final Mutable stmt, final SourceIdentifier moduleIdentifier) { - final String moduleName = stmt.coerceStatementArgument().getLocalName(); - final SemVer moduleSemVer = stmt.getFromNamespace(SemanticVersionNamespace.class, stmt); - final SemVerSourceIdentifier id = SemVerSourceIdentifier.create(moduleName, moduleSemVer); + final SemVerSourceIdentifier id = SemVerSourceIdentifier.create(stmt.coerceRawStatementArgument(), + stmt.getFromNamespace(SemanticVersionNamespace.class, stmt)); stmt.addToNs(SemanticVersionModuleNamespace.class, id, stmt); } } diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleEffectiveStatementImpl.java index 50d61ba53d..32ef301814 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleEffectiveStatementImpl.java @@ -60,7 +60,7 @@ final class ModuleEffectiveStatementImpl extends AbstractEffectiveModule ctx, final ModuleStatement declared, final ImmutableList> substatements, final Collection submodules) { - super(declared, ctx, substatements, findPrefix(ctx, "module", ctx.coerceStatementArgument().getLocalName())); + super(declared, ctx, substatements, findPrefix(ctx, "module", ctx.coerceRawStatementArgument())); qnameModule = verifyNotNull(ctx.getFromNamespace(ModuleCtxToModuleQName.class, ctx)); this.submodules = ImmutableList.copyOf(submodules); diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/submodule/AbstractSubmoduleStatementSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/submodule/AbstractSubmoduleStatementSupport.java index 193ba16695..b9b6ce3138 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/submodule/AbstractSubmoduleStatementSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/submodule/AbstractSubmoduleStatementSupport.java @@ -47,15 +47,14 @@ abstract class AbstractSubmoduleStatementSupport @Override public final void onPreLinkageDeclared( final Mutable stmt) { - stmt.setRootIdentifier(RevisionSourceIdentifier.create(stmt.coerceStatementArgument().getLocalName(), + stmt.setRootIdentifier(RevisionSourceIdentifier.create(stmt.coerceRawStatementArgument(), StmtContextUtils.getLatestRevision(stmt.declaredSubstatements()))); } @Override public final void onLinkageDeclared( final Mutable stmt) { - final SourceIdentifier submoduleIdentifier = RevisionSourceIdentifier.create( - stmt.coerceStatementArgument().getLocalName(), + final SourceIdentifier submoduleIdentifier = RevisionSourceIdentifier.create(stmt.coerceRawStatementArgument(), StmtContextUtils.getLatestRevision(stmt.declaredSubstatements())); final StmtContext diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/submodule/SubmoduleEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/submodule/SubmoduleEffectiveStatementImpl.java index d66c6cd25e..d8d512bcd8 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/submodule/SubmoduleEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/submodule/SubmoduleEffectiveStatementImpl.java @@ -148,7 +148,7 @@ final class SubmoduleEffectiveStatementImpl } private static @NonNull String findSubmodulePrefix(final StmtContext ctx) { - final String name = ctx.coerceStatementArgument().getLocalName(); + final String name = ctx.coerceRawStatementArgument(); final StmtContext belongsTo = SourceException.throwIfNull( StmtContextUtils.findFirstDeclaredSubstatement(ctx, BelongsToStatement.class), ctx.getStatementSourceReference(), "Unable to find belongs-to statement in submodule %s.", name); -- 2.36.6