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%2Frepo%2FYangModelDependencyInfo.java;h=be5de12d28c5fa682ccfd191b45bb32c4bf0ef1f;hb=bf25c16c89625837be48ee685184707339f487ff;hp=043ca62d4f80918af4d94877b5b1d29af7eae338;hpb=c0d06277f302d4febde802d92008434f53fb6216;p=yangtools.git diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/repo/YangModelDependencyInfo.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/repo/YangModelDependencyInfo.java index 043ca62d4f..be5de12d28 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/repo/YangModelDependencyInfo.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/repo/YangModelDependencyInfo.java @@ -10,8 +10,6 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.repo; import static com.google.common.base.Preconditions.checkArgument; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.Beta; -import com.google.common.base.Strings; import com.google.common.collect.ImmutableSet; import java.io.IOException; import java.util.HashSet; @@ -20,10 +18,8 @@ import java.util.Optional; import java.util.Set; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.concepts.SemVer; -import org.opendaylight.yangtools.openconfig.model.api.OpenConfigStatements; -import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.Revision; +import org.opendaylight.yangtools.yang.common.UnresolvedQName; import org.opendaylight.yangtools.yang.model.api.ModuleImport; import org.opendaylight.yangtools.yang.model.api.YangStmtMapping; import org.opendaylight.yangtools.yang.model.api.stmt.ImportEffectiveStatement; @@ -61,33 +57,20 @@ public abstract class YangModelDependencyInfo { private static final String REVISION_DATE = YangStmtMapping.REVISION_DATE.getStatementName().getLocalName(); private static final String SUBMODULE = YangStmtMapping.SUBMODULE.getStatementName().getLocalName(); - private static final String OPENCONFIG_VERSION = OpenConfigStatements.OPENCONFIG_VERSION.getStatementName() - .getLocalName(); - private final String name; private final Revision revision; - private final SemVer semVer; private final ImmutableSet submoduleIncludes; private final ImmutableSet moduleImports; private final ImmutableSet dependencies; - YangModelDependencyInfo(final String name, final String formattedRevision, - final ImmutableSet imports, + YangModelDependencyInfo(final String name, final String formattedRevision, final ImmutableSet imports, final ImmutableSet includes) { - this(name, formattedRevision, imports, includes, Optional.empty()); - } - - YangModelDependencyInfo(final String name, final String formattedRevision, - final ImmutableSet imports, - final ImmutableSet includes, - final Optional semVer) { this.name = name; revision = Revision.ofNullable(formattedRevision).orElse(null); moduleImports = imports; submoduleIncludes = includes; dependencies = ImmutableSet.builder() .addAll(moduleImports).addAll(submoduleIncludes).build(); - this.semVer = semVer.orElse(null); } /** @@ -127,41 +110,19 @@ public abstract class YangModelDependencyInfo { return Optional.ofNullable(revision); } - /** - * Returns semantic version of module. - * - * @return semantic version - * @deprecated Semantic versioning is deprecated - */ - @Deprecated(since = "8.0.4", forRemoval = true) - public Optional getSemanticVersion() { - return Optional.ofNullable(semVer); - } - @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + Objects.hashCode(name); result = prime * result + Objects.hashCode(revision); - result = prime * result + Objects.hashCode(semVer); return result; } @Override public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (!(obj instanceof YangModelDependencyInfo)) { - return false; - } - final YangModelDependencyInfo other = (YangModelDependencyInfo) obj; - return Objects.equals(name, other.name) && Objects.equals(revision, other.revision) - && Objects.equals(semVer, other.semVer); + return this == obj || obj instanceof YangModelDependencyInfo other + && Objects.equals(name, other.name) && Objects.equals(revision, other.revision); } /** @@ -217,11 +178,10 @@ public abstract class YangModelDependencyInfo { final SourceIdentifier source) { final String name = safeStringArgument(source, module, "module name"); final String latestRevision = getLatestRevision(module, source); - final Optional semVer = Optional.ofNullable(findSemanticVersion(module, source)); final ImmutableSet imports = parseImports(module, source); final ImmutableSet includes = parseIncludes(module, source); - return new ModuleDependencyInfo(name, latestRevision, imports, includes, semVer); + return new ModuleDependencyInfo(name, latestRevision, imports, includes); } private static ImmutableSet parseImports(final IRStatement module, @@ -231,28 +191,13 @@ public abstract class YangModelDependencyInfo { if (isBuiltin(substatement, IMPORT)) { final String importedModuleName = safeStringArgument(source, substatement, "imported module name"); final String revisionDateStr = getRevisionDateString(substatement, source); - final Revision revisionDate = Revision.ofNullable(revisionDateStr).orElse(null); - final SemVer importSemVer = findSemanticVersion(substatement, source); - result.add(new ModuleImportImpl(importedModuleName, revisionDate, importSemVer)); + result.add(new ModuleImportImpl(UnresolvedQName.Unqualified.of(importedModuleName), + revisionDateStr != null ? Revision.of(revisionDateStr) : null)); } } return ImmutableSet.copyOf(result); } - @Beta - public static SemVer findSemanticVersion(final IRStatement statement, final SourceIdentifier source) { - String semVerString = null; - for (final IRStatement substatement : statement.statements()) { - // FIXME: this should also check we are using a prefix - if (OPENCONFIG_VERSION.equals(substatement.keyword().identifier())) { - semVerString = safeStringArgument(source, substatement, "version string"); - break; - } - } - - return Strings.isNullOrEmpty(semVerString) ? null : SemVer.valueOf(semVerString); - } - private static boolean isBuiltin(final IRStatement stmt, final String localName) { final IRKeyword keyword = stmt.keyword(); return keyword instanceof Unqualified && localName.equals(keyword.identifier()); @@ -263,9 +208,9 @@ public abstract class YangModelDependencyInfo { for (final IRStatement substatement : module.statements()) { if (isBuiltin(substatement, INCLUDE)) { final String revisionDateStr = getRevisionDateString(substatement, source); - final String IncludeModuleName = safeStringArgument(source, substatement, "included submodule name"); - final Revision revisionDate = Revision.ofNullable(revisionDateStr).orElse(null); - result.add(new ModuleImportImpl(IncludeModuleName, revisionDate)); + final String includeModuleName = safeStringArgument(source, substatement, "included submodule name"); + result.add(new ModuleImportImpl(UnresolvedQName.Unqualified.of(includeModuleName), + revisionDateStr == null ? null : Revision.of(revisionDateStr))); } } return ImmutableSet.copyOf(result); @@ -297,7 +242,7 @@ public abstract class YangModelDependencyInfo { private static @NonNull YangModelDependencyInfo parseSubmoduleContext(final IRStatement submodule, final SourceIdentifier source) { final String name = safeStringArgument(source, submodule, "submodule name"); - final String belongsTo = parseBelongsTo(submodule, source); + final UnresolvedQName.Unqualified belongsTo = UnresolvedQName.Unqualified.of(parseBelongsTo(submodule, source)); final String latestRevision = getLatestRevision(submodule, source); final ImmutableSet imports = parseImports(submodule, source); @@ -327,7 +272,7 @@ public abstract class YangModelDependencyInfo { } private static StatementSourceReference getReference(final SourceIdentifier source, final IRStatement stmt) { - return ExplicitStatement.atPosition(source.getName(), stmt.startLine(), stmt.startColumn() + 1); + return ExplicitStatement.atPosition(source.name().getLocalName(), stmt.startLine(), stmt.startColumn() + 1); } /** @@ -335,14 +280,13 @@ public abstract class YangModelDependencyInfo { */ public static final class ModuleDependencyInfo extends YangModelDependencyInfo { ModuleDependencyInfo(final String name, final String latestRevision, final ImmutableSet imports, - final ImmutableSet includes, final Optional semVer) { - super(name, latestRevision, imports, includes, semVer); + final ImmutableSet includes) { + super(name, latestRevision, imports, includes); } @Override public String toString() { return "Module [name=" + getName() + ", revision=" + getRevision() - + ", semanticVersion=" + getSemanticVersion().orElse(null) + ", dependencies=" + getDependencies() + "]"; } @@ -352,10 +296,11 @@ public abstract class YangModelDependencyInfo { * Dependency information for submodule, also provides name for parent module. */ public static final class SubmoduleDependencyInfo extends YangModelDependencyInfo { - private final String belongsTo; + private final UnresolvedQName.Unqualified belongsTo; - private SubmoduleDependencyInfo(final String name, final String latestRevision, final String belongsTo, - final ImmutableSet imports, final ImmutableSet includes) { + private SubmoduleDependencyInfo(final String name, final String latestRevision, + final UnresolvedQName.Unqualified belongsTo, final ImmutableSet imports, + final ImmutableSet includes) { super(name, latestRevision, imports, includes); this.belongsTo = belongsTo; } @@ -365,15 +310,15 @@ public abstract class YangModelDependencyInfo { * * @return The module this info belongs to */ - public String getParentModule() { + public UnresolvedQName.Unqualified getParentModule() { return belongsTo; } @Override public String toString() { - return "Submodule [name=" + getName() + ", revision=" - + getRevision() + ", dependencies=" + getDependencies() - + "]"; + return "Submodule [name=" + getName() + ", revision=" + getRevision() + + ", dependencies=" + getDependencies() + + "]"; } } @@ -382,25 +327,17 @@ public abstract class YangModelDependencyInfo { */ // FIXME: this is a rather nasty misuse of APIs :( private static final class ModuleImportImpl implements ModuleImport { - + private final UnresolvedQName.@NonNull Unqualified moduleName; private final Revision revision; - private final SemVer semVer; - private final String name; - ModuleImportImpl(final @NonNull String moduleName, final @Nullable Revision revision) { - this(moduleName, revision, null); - } - - ModuleImportImpl(final @NonNull String moduleName, final @Nullable Revision revision, - final @Nullable SemVer semVer) { - name = requireNonNull(moduleName, "Module name must not be null."); + ModuleImportImpl(final UnresolvedQName.@NonNull Unqualified moduleName, final @Nullable Revision revision) { + this.moduleName = requireNonNull(moduleName, "Module name must not be null."); this.revision = revision; - this.semVer = semVer; } @Override - public String getModuleName() { - return name; + public UnresolvedQName.Unqualified getModuleName() { + return moduleName; } @Override @@ -408,12 +345,6 @@ public abstract class YangModelDependencyInfo { return Optional.ofNullable(revision); } - @Override - @Deprecated(forRemoval = true) - public Optional getSemanticVersion() { - return Optional.ofNullable(semVer); - } - @Override public String getPrefix() { throw new UnsupportedOperationException(); @@ -438,29 +369,20 @@ public abstract class YangModelDependencyInfo { public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + Objects.hashCode(name); + result = prime * result + Objects.hashCode(moduleName); result = prime * result + Objects.hashCode(revision); - result = prime * result + Objects.hashCode(semVer); return result; } @Override public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof ModuleImportImpl)) { - return false; - } - final ModuleImportImpl other = (ModuleImportImpl) obj; - return name.equals(other.name) && Objects.equals(revision, other.revision) - && Objects.equals(getSemanticVersion(), other.getSemanticVersion()); + return this == obj || obj instanceof ModuleImportImpl other + && moduleName.equals(other.moduleName) && Objects.equals(revision, other.revision); } @Override public String toString() { - return "ModuleImportImpl [name=" + name + ", revision=" - + QName.formattedRevision(Optional.ofNullable(revision)) + ", semanticVersion=" + semVer + "]"; + return "ModuleImportImpl [name=" + moduleName + ", revision=" + revision + "]"; } } }