X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=parser%2Fyang-parser-rfc7950%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Frfc7950%2Fstmt%2Fmodule%2FModuleStatementSupport.java;h=eecd41af6409c4c33ba8130dd2ce7eb66a697bfa;hb=bf25c16c89625837be48ee685184707339f487ff;hp=4522b063c9e1e614092d3e92044fc5d8ef8d4f50;hpb=e84a603657418c639706b96164457ec5c49a19dc;p=yangtools.git diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleStatementSupport.java index 4522b063c9..eecd41af64 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleStatementSupport.java @@ -17,13 +17,10 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.openconfig.model.api.OpenConfigStatements; 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; import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified; import org.opendaylight.yangtools.yang.common.XMLNamespace; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; @@ -37,22 +34,18 @@ import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement; import org.opendaylight.yangtools.yang.model.api.stmt.NamespaceStatement; import org.opendaylight.yangtools.yang.model.api.stmt.PrefixStatement; -import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier; -import org.opendaylight.yangtools.yang.model.repo.api.SemVerSourceIdentifier; import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatementDecorators; import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatements; import org.opendaylight.yangtools.yang.model.spi.meta.SubstatementIndexingException; -import org.opendaylight.yangtools.yang.parser.api.ImportResolutionMode; import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration; import org.opendaylight.yangtools.yang.parser.spi.ModuleNamespace; import org.opendaylight.yangtools.yang.parser.spi.NamespaceToModule; import org.opendaylight.yangtools.yang.parser.spi.PreLinkageModuleNamespace; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport; +import org.opendaylight.yangtools.yang.parser.spi.meta.BoundStmtCtx; import org.opendaylight.yangtools.yang.parser.spi.meta.CommonStmtCtx; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; -import org.opendaylight.yangtools.yang.parser.spi.meta.SemanticVersionModuleNamespace; -import org.opendaylight.yangtools.yang.parser.spi.meta.SemanticVersionNamespace; 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.meta.StmtContextUtils; @@ -99,7 +92,6 @@ public final class ModuleStatementSupport .addAny(YangStmtMapping.TYPEDEF) .addAny(YangStmtMapping.USES) .addOptional(YangStmtMapping.YANG_VERSION) - .addOptional(OpenConfigStatements.OPENCONFIG_VERSION) .build(); private static final SubstatementValidator RFC7950_VALIDATOR = SubstatementValidator.builder(YangStmtMapping.MODULE) .addAny(YangStmtMapping.ANYDATA) @@ -129,14 +121,10 @@ public final class ModuleStatementSupport .addAny(YangStmtMapping.TYPEDEF) .addAny(YangStmtMapping.USES) .addMandatory(YangStmtMapping.YANG_VERSION) - .addOptional(OpenConfigStatements.OPENCONFIG_VERSION) .build(); - private final boolean semanticVersioning; - private ModuleStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) { super(YangStmtMapping.MODULE, StatementPolicy.reject(), config, validator); - semanticVersioning = config.importResolutionMode() == ImportResolutionMode.OPENCONFIG_SEMVER; } public static @NonNull ModuleStatementSupport rfc6020Instance(final YangParserConfiguration config) { @@ -150,7 +138,7 @@ public final class ModuleStatementSupport @Override public Unqualified parseArgumentValue(final StmtContext ctx, final String value) { try { - return UnresolvedQName.unqualified(value); + return Unqualified.of(value); } catch (IllegalArgumentException e) { throw new SourceException(e.getMessage(), ctx, e); } @@ -158,7 +146,7 @@ public final class ModuleStatementSupport @Override public void onPreLinkageDeclared(final Mutable stmt) { - final String moduleName = stmt.getRawArgument(); + final Unqualified moduleName = stmt.getArgument(); final XMLNamespace moduleNs = SourceException.throwIfNull( firstAttributeOf(stmt.declaredSubstatements(), NamespaceStatement.class), stmt, @@ -172,11 +160,11 @@ public final class ModuleStatementSupport stmt.addContext(PreLinkageModuleNamespace.class, moduleName, stmt); - final Optional revisionDate = StmtContextUtils.getLatestRevision(stmt.declaredSubstatements()); - final QNameModule qNameModule = QNameModule.create(moduleNs, revisionDate.orElse(null)).intern(); + final Revision revisionDate = StmtContextUtils.getLatestRevision(stmt.declaredSubstatements()).orElse(null); + final QNameModule qNameModule = QNameModule.create(moduleNs, revisionDate).intern(); stmt.addToNs(ModuleCtxToModuleQName.class, stmt, qNameModule); - stmt.setRootIdentifier(RevisionSourceIdentifier.create(stmt.getArgument().getLocalName(), revisionDate)); + stmt.setRootIdentifier(new SourceIdentifier(stmt.getArgument(), revisionDate)); } @Override @@ -185,8 +173,8 @@ public final class ModuleStatementSupport firstAttributeOf(stmt.declaredSubstatements(), NamespaceStatement.class), stmt, "Namespace of the module [%s] is missing", stmt.argument()); - final Optional revisionDate = StmtContextUtils.getLatestRevision(stmt.declaredSubstatements()); - final QNameModule qNameModule = QNameModule.create(moduleNs, revisionDate.orElse(null)).intern(); + final Revision revisionDate = StmtContextUtils.getLatestRevision(stmt.declaredSubstatements()).orElse(null); + final QNameModule qNameModule = QNameModule.create(moduleNs, revisionDate).intern(); final StmtContext possibleDuplicateModule = stmt.getFromNamespace(NamespaceToModule.class, qNameModule); if (possibleDuplicateModule != null && possibleDuplicateModule != stmt) { @@ -194,28 +182,24 @@ public final class ModuleStatementSupport possibleDuplicateModule.sourceReference()); } - final String moduleName = stmt.getRawArgument(); - final SourceIdentifier moduleIdentifier = RevisionSourceIdentifier.create(moduleName, revisionDate); + final Unqualified moduleName = stmt.getArgument(); + final SourceIdentifier moduleIdentifier = new SourceIdentifier(moduleName, revisionDate); stmt.addContext(ModuleNamespace.class, moduleIdentifier, stmt); - stmt.addContext(ModuleNamespaceForBelongsTo.class, moduleIdentifier.getName(), stmt); + stmt.addContext(ModuleNamespaceForBelongsTo.class, moduleName, stmt); stmt.addContext(NamespaceToModule.class, qNameModule, stmt); final String modulePrefix = SourceException.throwIfNull( firstAttributeOf(stmt.declaredSubstatements(), PrefixStatement.class), stmt, "Prefix of the module [%s] is missing", stmt.argument()); - stmt.addToNs(QNameModuleNamespace.class, Empty.getInstance(), qNameModule); + stmt.addToNs(QNameModuleNamespace.class, Empty.value(), qNameModule); stmt.addToNs(PrefixToModule.class, modulePrefix, qNameModule); stmt.addToNs(ModuleNameToModuleQName.class, moduleName, qNameModule); stmt.addToNs(ModuleCtxToModuleQName.class, stmt, qNameModule); stmt.addToNs(ModuleCtxToSourceIdentifier.class, stmt, moduleIdentifier); stmt.addToNs(ModuleQNameToModuleName.class, qNameModule, moduleName); stmt.addToNs(ImportPrefixToModuleCtx.class, modulePrefix, stmt); - - if (semanticVersioning) { - addToSemVerModuleNamespace(stmt, moduleIdentifier); - } } @Override @@ -246,8 +230,8 @@ public final class ModuleStatementSupport } @Override - protected ModuleStatement createDeclared(final StmtContext ctx, - final ImmutableList> substatements) { + protected ModuleStatement createDeclared(final BoundStmtCtx ctx, + final ImmutableList> substatements) { if (substatements.isEmpty()) { throw noNamespace(ctx); } @@ -274,8 +258,7 @@ public final class ModuleStatementSupport submodules.add((Submodule) submodule); } - final QNameModule qnameModule = verifyNotNull(stmt.namespaceItem(QNameModuleNamespace.class, - Empty.getInstance())); + final QNameModule qnameModule = verifyNotNull(stmt.namespaceItem(QNameModuleNamespace.class, Empty.value())); try { return new ModuleEffectiveStatementImpl(stmt, substatements, submodules, qnameModule); } catch (SubstatementIndexingException e) { @@ -284,7 +267,7 @@ public final class ModuleStatementSupport } private static Collection> submoduleContexts(final Current stmt) { - final Map> submodules = stmt.localNamespacePortion( + final Map> submodules = stmt.localNamespacePortion( IncludedSubmoduleNameToModuleCtx.class); return submodules == null ? List.of() : submodules.values(); } @@ -292,12 +275,4 @@ public final class ModuleStatementSupport private static SourceException noNamespace(final @NonNull CommonStmtCtx stmt) { return new SourceException("No namespace declared in module", stmt); } - - private static void addToSemVerModuleNamespace( - final Mutable stmt, - final SourceIdentifier moduleIdentifier) { - final SemVerSourceIdentifier id = SemVerSourceIdentifier.create(stmt.getRawArgument(), - stmt.getFromNamespace(SemanticVersionNamespace.class, stmt)); - stmt.addToNs(SemanticVersionModuleNamespace.class, id, stmt); - } }