X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=parser%2Fyang-parser-rfc7950%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Frfc7950%2Fstmt%2Fimport_%2FRevisionImport.java;h=0314cc2e5c39925d058802845c957af771f952bd;hb=refs%2Fchanges%2F44%2F102144%2F12;hp=ccc24d7175dba87fae79d507b40a624cb2f4247f;hpb=da73a2179571830c2d9da75957fbb664accf26c6;p=yangtools.git diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/RevisionImport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/RevisionImport.java index ccc24d7175..0314cc2e5c 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/RevisionImport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/RevisionImport.java @@ -12,18 +12,17 @@ import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.f import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.firstAttributeOf; import java.util.Collection; -import java.util.Optional; import org.opendaylight.yangtools.yang.common.Empty; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.Revision; +import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified; import org.opendaylight.yangtools.yang.model.api.stmt.ImportEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ImportStatement; import org.opendaylight.yangtools.yang.model.api.stmt.PrefixStatement; import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement; -import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier; import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; import org.opendaylight.yangtools.yang.parser.rfc7950.namespace.ModuleQNameToPrefix; -import org.opendaylight.yangtools.yang.parser.spi.ModuleNamespace; +import org.opendaylight.yangtools.yang.parser.spi.ParserNamespaces; 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,64 +31,60 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder.Prereq import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceKeyCriterion; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable; -import org.opendaylight.yangtools.yang.parser.spi.source.ImportPrefixToModuleCtx; -import org.opendaylight.yangtools.yang.parser.spi.source.ImportedModuleContext; -import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleQName; -import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToSourceIdentifier; +import org.opendaylight.yangtools.yang.parser.spi.source.SourceParserNamespaces; final class RevisionImport { private RevisionImport() { // Hidden on purpose } - static void onLinkageDeclared(final Mutable stmt) { + static void onLinkageDeclared(final Mutable stmt) { final ModelActionBuilder importAction = stmt.newInferenceAction(SOURCE_LINKAGE); final Prerequisite> imported; - final String moduleName = stmt.getArgument(); + final Unqualified moduleName = stmt.getArgument(); final Revision revision = firstAttributeOf(stmt.declaredSubstatements(), RevisionDateStatement.class); if (revision == null) { - imported = importAction.requiresCtx(stmt, ModuleNamespace.class, + imported = importAction.requiresCtx(stmt, ParserNamespaces.MODULE, NamespaceKeyCriterion.latestRevisionModule(moduleName), SOURCE_LINKAGE); } else { - imported = importAction.requiresCtx(stmt, ModuleNamespace.class, - RevisionSourceIdentifier.create(moduleName, Optional.of(revision)), SOURCE_LINKAGE); + imported = importAction.requiresCtx(stmt, ParserNamespaces.MODULE, + new SourceIdentifier(moduleName, revision), SOURCE_LINKAGE); } - final Prerequisite> linkageTarget = importAction.mutatesCtx(stmt.getRoot(), - SOURCE_LINKAGE); + final Prerequisite> linkageTarget = importAction.mutatesCtx(stmt.getRoot(), SOURCE_LINKAGE); importAction.apply(new InferenceAction() { @Override public void apply(final InferenceContext ctx) { final StmtContext importedModule = imported.resolve(ctx); - final SourceIdentifier importedModuleIdentifier = - stmt.getFromNamespace(ModuleCtxToSourceIdentifier.class, importedModule); - stmt.addToNs(ImportedVersionNamespace.class, Empty.value(), importedModuleIdentifier); + final SourceIdentifier importedModuleIdentifier = stmt.getFromNamespace( + SourceParserNamespaces.MODULECTX_TO_SOURCE, importedModule); + stmt.addToNs(ImportedVersionNamespace.INSTANCE, Empty.value(), importedModuleIdentifier); - final QNameModule mod = InferenceException.throwIfNull(stmt.getFromNamespace( - ModuleCtxToModuleQName.class, importedModule), stmt, "Failed to find module of %s", importedModule); + final QNameModule mod = InferenceException.throwIfNull( + stmt.getFromNamespace(SourceParserNamespaces.MODULECTX_TO_QNAME, importedModule), stmt, + "Failed to find module of %s", importedModule); - linkageTarget.resolve(ctx).addToNs(ImportedModuleContext.class, - importedModuleIdentifier, importedModule); + linkageTarget.resolve(ctx).addToNs(SourceParserNamespaces.IMPORTED_MODULE, importedModuleIdentifier, + importedModule); final String impPrefix = firstAttributeOf(stmt.declaredSubstatements(), PrefixStatement.class); - stmt.addToNs(ImportPrefixToModuleCtx.class, impPrefix, importedModule); - stmt.addToNs(ModuleQNameToPrefix.class, mod, impPrefix); + stmt.addToNs(SourceParserNamespaces.IMPORT_PREFIX_TO_MODULECTX, impPrefix, importedModule); + stmt.addToNs(ModuleQNameToPrefix.INSTANCE, mod, impPrefix); } @Override public void prerequisiteFailed(final Collection> failed) { if (failed.contains(imported)) { - throw new InferenceException(stmt, "Imported module [%s] was not found.", moduleName); + throw new InferenceException(stmt, "Imported module [%s] was not found.", + moduleName.getLocalName()); } } }); } - static SourceIdentifier getImportedSourceIdentifier(final StmtContext stmt) { - final StmtContext revision = findFirstDeclaredSubstatement(stmt, - RevisionDateStatement.class); - return revision == null ? RevisionSourceIdentifier.create(stmt.argument()) - : RevisionSourceIdentifier.create(stmt.argument(), revision.argument()); + static SourceIdentifier getImportedSourceIdentifier(final StmtContext stmt) { + final var revision = findFirstDeclaredSubstatement(stmt, RevisionDateStatement.class); + return new SourceIdentifier(stmt.getArgument(), revision != null ? revision.getArgument() : null); } }