import java.util.Optional;
import org.opendaylight.yangtools.concepts.SemVer;
import org.opendaylight.yangtools.yang.common.Revision;
-import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ImportStatement;
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.util.ModuleIdentifierImpl;
import org.opendaylight.yangtools.yang.parser.spi.ModuleNamespace;
import org.opendaylight.yangtools.yang.parser.spi.PreLinkageModuleNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.source.ImportPrefixToModuleCtx;
import org.opendaylight.yangtools.yang.parser.spi.source.ImportPrefixToSemVerSourceIdentifier;
import org.opendaylight.yangtools.yang.parser.spi.source.ImportedModuleContext;
-import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleIdentifier;
+import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToSourceIdentifier;
import org.opendaylight.yangtools.yang.parser.spi.source.ModuleNameToNamespace;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ImportEffectiveStatementImpl;
NamespaceKeyCriterion.latestRevisionModule(moduleName), SOURCE_LINKAGE);
} else {
imported = importAction.requiresCtx(stmt, ModuleNamespace.class,
- ModuleIdentifierImpl.create(moduleName, Optional.of(revision)), SOURCE_LINKAGE);
+ RevisionSourceIdentifier.create(moduleName, Optional.of(revision)), SOURCE_LINKAGE);
}
final Prerequisite<Mutable<?, ?, ?>> linkageTarget = importAction.mutatesCtx(stmt.getRoot(),
final StmtContext<?, ?, ?> importedModule = imported.resolve(ctx);
linkageTarget.resolve(ctx).addToNs(ImportedModuleContext.class,
- stmt.getFromNamespace(ModuleCtxToModuleIdentifier.class, importedModule), importedModule);
+ stmt.getFromNamespace(ModuleCtxToSourceIdentifier.class, importedModule), importedModule);
final String impPrefix = firstAttributeOf(stmt.declaredSubstatements(), PrefixStatement.class);
final URI modNs = firstAttributeOf(importedModule.declaredSubstatements(),
NamespaceStatement.class);
public void apply(final InferenceContext ctx) {
final StmtContext<?, ?, ?> importedModule = imported.resolve(ctx);
final SemVer importedVersion = stmt.getFromNamespace(SemanticVersionNamespace.class, stmt);
- final ModuleIdentifier importedModuleIdentifier = importedModule.getFromNamespace(
- ModuleCtxToModuleIdentifier.class, importedModule);
+ final SourceIdentifier importedModuleIdentifier = importedModule.getFromNamespace(
+ ModuleCtxToSourceIdentifier.class, importedModule);
final SemVerSourceIdentifier semVerModuleIdentifier = createSemVerModuleIdentifier(
importedModuleIdentifier, importedVersion);
}
private static SemVerSourceIdentifier createSemVerModuleIdentifier(
- final ModuleIdentifier importedModuleIdentifier, final SemVer semVer) {
+ final SourceIdentifier importedModuleIdentifier, final SemVer semVer) {
return SemVerSourceIdentifier.create(importedModuleIdentifier.getName(),
importedModuleIdentifier.getRevision(), semVer);
}
import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement;
import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
-import org.opendaylight.yangtools.yang.model.util.ModuleIdentifierImpl;
import org.opendaylight.yangtools.yang.parser.spi.SubmoduleNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
NamespaceKeyCriterion.latestRevisionModule(submoduleName), SOURCE_LINKAGE);
} else {
requiresCtxPrerequisite = includeAction.requiresCtx(stmt, SubmoduleNamespace.class,
- ModuleIdentifierImpl.create(submoduleName, Optional.of(revision.getStatementArgument())),
+ RevisionSourceIdentifier.create(submoduleName, Optional.of(revision.getStatementArgument())),
SOURCE_LINKAGE);
}
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.model.api.ModuleIdentifier;
import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement;
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.util.ModuleIdentifierImpl;
+import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
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.SubstatementValidator;
import org.opendaylight.yangtools.yang.parser.spi.source.ImpPrefixToNamespace;
import org.opendaylight.yangtools.yang.parser.spi.source.ImportPrefixToModuleCtx;
-import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleIdentifier;
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.ModuleNameToModuleQName;
import org.opendaylight.yangtools.yang.parser.spi.source.ModuleNameToNamespace;
import org.opendaylight.yangtools.yang.parser.spi.source.ModuleNamespaceForBelongsTo;
qNameModule.getNamespace(), possibleDuplicateModule.getStatementSourceReference());
}
- final ModuleIdentifier moduleIdentifier = ModuleIdentifierImpl.create(stmt.getStatementArgument(),
+ final SourceIdentifier moduleIdentifier = RevisionSourceIdentifier.create(stmt.getStatementArgument(),
revisionDate);
stmt.addContext(ModuleNamespace.class, moduleIdentifier, stmt);
stmt.addToNs(PrefixToModule.class, modulePrefix, qNameModule);
stmt.addToNs(ModuleNameToModuleQName.class, stmt.getStatementArgument(), qNameModule);
stmt.addToNs(ModuleCtxToModuleQName.class, stmt, qNameModule); // tu
- stmt.addToNs(ModuleCtxToModuleIdentifier.class, stmt, moduleIdentifier);
+ stmt.addToNs(ModuleCtxToSourceIdentifier.class, stmt, moduleIdentifier);
stmt.addToNs(ModuleQNameToModuleName.class, qNameModule, stmt.getStatementArgument());
stmt.addToNs(ImportPrefixToModuleCtx.class, modulePrefix, stmt);
private static void addToSemVerModuleNamespace(
final Mutable<String, ModuleStatement, EffectiveStatement<String, ModuleStatement>> stmt,
- final ModuleIdentifier moduleIdentifier) {
+ final SourceIdentifier moduleIdentifier) {
final String moduleName = stmt.getStatementArgument();
final SemVer moduleSemVer = stmt.getFromNamespace(SemanticVersionNamespace.class, stmt);
final SemVerSourceIdentifier id = SemVerSourceIdentifier.create(moduleName, moduleSemVer);
import org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.YangVersionStatement;
import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
+import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
import org.opendaylight.yangtools.yang.model.util.ModuleIdentifierImpl;
import org.opendaylight.yangtools.yang.parser.spi.SubmoduleNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
@Override
public void onLinkageDeclared(
final Mutable<String, SubmoduleStatement, EffectiveStatement<String, SubmoduleStatement>> stmt) {
- final ModuleIdentifier submoduleIdentifier = getSubmoduleIdentifier(stmt);
+ final SourceIdentifier submoduleIdentifier = RevisionSourceIdentifier.create(stmt.getStatementArgument(),
+ StmtContextUtils.getLatestRevision(stmt.declaredSubstatements()));
final StmtContext<?, SubmoduleStatement, EffectiveStatement<String, SubmoduleStatement>>
possibleDuplicateSubmodule = stmt.getFromNamespace(SubmoduleNamespace.class, submoduleIdentifier);
import org.opendaylight.yangtools.yang.parser.spi.source.ImportedModuleContext;
import org.opendaylight.yangtools.yang.parser.spi.source.IncludedModuleContext;
import org.opendaylight.yangtools.yang.parser.spi.source.IncludedSubmoduleNameToModuleCtx;
-import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleIdentifier;
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.ModuleNameToModuleQName;
import org.opendaylight.yangtools.yang.parser.spi.source.ModuleNameToNamespace;
import org.opendaylight.yangtools.yang.parser.spi.source.ModuleNamespaceForBelongsTo;
.addSupport(global(SubmoduleNamespace.class))
.addSupport(global(NamespaceToModule.class))
.addSupport(global(ModuleNameToModuleQName.class))
- .addSupport(global(ModuleCtxToModuleIdentifier.class))
+ .addSupport(global(ModuleCtxToSourceIdentifier.class))
.addSupport(global(ModuleQNameToModuleName.class))
.addSupport(global(PrefixToModule.class))
.addSupport(QNameCacheNamespace.getInstance())
*/
package org.opendaylight.yangtools.yang.parser.spi;
-import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement;
+import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
import org.opendaylight.yangtools.yang.parser.spi.meta.StatementNamespace;
/**
* Module namespace. All modules known to the reactor are populated to this namespace. Each module is identified
- * by a {@link ModuleIdentifier}.
+ * by a {@link SourceIdentifier}.
*/
public interface ModuleNamespace extends
- StatementNamespace<ModuleIdentifier, ModuleStatement, EffectiveStatement<String, ModuleStatement>> {
+ StatementNamespace<SourceIdentifier, ModuleStatement, EffectiveStatement<String, ModuleStatement>> {
}
*/
package org.opendaylight.yangtools.yang.parser.spi;
-import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement;
+import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
import org.opendaylight.yangtools.yang.parser.spi.meta.StatementNamespace;
/**
*/
// FIXME: describe scoping of this namespace
public interface SubmoduleNamespace
- extends StatementNamespace<ModuleIdentifier, SubmoduleStatement, EffectiveStatement<String, SubmoduleStatement>> {
+ extends StatementNamespace<SourceIdentifier, SubmoduleStatement, EffectiveStatement<String, SubmoduleStatement>> {
}
import com.google.common.base.MoreObjects.ToStringHelper;
import javax.annotation.Nonnull;
import org.opendaylight.yangtools.yang.common.Revision;
-import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
+import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
/**
* Namespace key matching criterion.
*/
@Beta
public abstract class NamespaceKeyCriterion<K> {
- private static final class LatestRevisionModule extends NamespaceKeyCriterion<ModuleIdentifier> {
+ private static final class LatestRevisionModule extends NamespaceKeyCriterion<SourceIdentifier> {
private final String moduleName;
LatestRevisionModule(final String moduleName) {
}
@Override
- public boolean match(final ModuleIdentifier key) {
+ public boolean match(final SourceIdentifier key) {
return moduleName.equals(key.getName());
}
@Override
- public ModuleIdentifier select(final ModuleIdentifier first, final ModuleIdentifier second) {
+ public SourceIdentifier select(final SourceIdentifier first, final SourceIdentifier second) {
return Revision.compare(first.getRevision(), second.getRevision()) >= 0 ? first : second;
}
* @param moduleName Module name
* @return A criterion object.
*/
- public static NamespaceKeyCriterion<ModuleIdentifier> latestRevisionModule(final String moduleName) {
+ public static NamespaceKeyCriterion<SourceIdentifier> latestRevisionModule(final String moduleName) {
return new LatestRevisionModule(moduleName);
}
*/
package org.opendaylight.yangtools.yang.parser.spi.source;
-import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
+import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
import org.opendaylight.yangtools.yang.parser.spi.meta.ImportedNamespaceContext;
-public interface ImportedModuleContext extends ImportedNamespaceContext<ModuleIdentifier> {
+public interface ImportedModuleContext extends ImportedNamespaceContext<SourceIdentifier> {
}
*/
package org.opendaylight.yangtools.yang.parser.spi.source;
-import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace;
+import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
/**
- * Global mapping of modules to module identifier.
+ * Global mapping of modules to source identifier.
*/
-public interface ModuleCtxToModuleIdentifier extends IdentifierNamespace<StmtContext<?, ?, ?>, ModuleIdentifier> {
+public interface ModuleCtxToSourceIdentifier extends IdentifierNamespace<StmtContext<?, ?, ?>, SourceIdentifier> {
}