From 4d34b74e078e4e7f9c9a3fe6f263a3d04560346d Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 4 May 2022 11:51:16 +0200 Subject: [PATCH] Remove getSemanticVersion() OpenConfig versions are not used anywhere and have been deprecated. Remove them. JIRA: YANGTOOLS-1432 Change-Id: Ibb4a000dca927fa660de68fc18754057c33a4106 Signed-off-by: Robert Varga --- .../yang/model/api/ModuleImport.java | 10 -- .../yangtools/yang/model/api/ModuleLike.java | 12 -- .../eff/ImportEffectiveStatementImpl.java | 12 -- .../model/util/SchemaContextProxyTest.java | 10 +- .../yang/parser/repo/DependencyResolver.java | 6 - .../rfc7950/repo/YangModelDependencyInfo.java | 115 +++--------------- .../rfc7950/stmt/AbstractEffectiveModule.java | 7 -- 7 files changed, 18 insertions(+), 154 deletions(-) diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleImport.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleImport.java index 3e353cd079..30ff0197c1 100644 --- a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleImport.java +++ b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleImport.java @@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.model.api; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.SemVer; import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.stmt.ImportEffectiveStatement; @@ -39,15 +38,6 @@ public interface ModuleImport extends DocumentedNode, EffectiveStatementEquivale */ Optional getRevision(); - /** - * Returns the semantic version to import. - * - * @return Semantic version of module to import - * @deprecated Semantic version imports are deprecated. - */ - @Deprecated(since = "8.0.4", forRemoval = true) - Optional getSemanticVersion(); - /** * Returns the prefix associated with the imported module. * diff --git a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleLike.java b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleLike.java index b275b1a845..dea9d3e3ef 100644 --- a/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleLike.java +++ b/model/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleLike.java @@ -12,7 +12,6 @@ import java.util.Collection; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.concepts.Immutable; -import org.opendaylight.yangtools.concepts.SemVer; import org.opendaylight.yangtools.yang.common.YangVersion; /** @@ -28,17 +27,6 @@ public interface ModuleLike extends DataNodeContainer, DocumentedNode, Immutable */ String getName(); - /** - * Returns the semantic version of YANG module. If the semantic version is not specified, default semantic version - * of module is returned. - * - * @return SemVer semantic version of YANG module which is specified as argument of - * {@code (urn:opendaylight:yang:extension:semantic-version?revision=2016-02-02)semantic-version} statement - * @deprecated Semantic version imports are deprecated. - */ - @Deprecated(since = "8.0.4", forRemoval = true) - Optional getSemanticVersion(); - /** * Returns the prefix of the module. * diff --git a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ImportEffectiveStatementImpl.java b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ImportEffectiveStatementImpl.java index 0a0818b75f..2909933439 100644 --- a/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ImportEffectiveStatementImpl.java +++ b/model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ImportEffectiveStatementImpl.java @@ -11,13 +11,11 @@ import com.google.common.collect.ImmutableList; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.concepts.SemVer; import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.ModuleImport; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ImportEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ImportStatement; -import org.opendaylight.yangtools.yang.model.repo.api.SemVerSourceIdentifier; import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredEffectiveStatement.DefaultArgument.WithSubstatements; import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.DocumentedNodeMixin; @@ -25,16 +23,12 @@ import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.D public final class ImportEffectiveStatementImpl extends WithSubstatements implements ImportEffectiveStatement, ModuleImport, DocumentedNodeMixin { private final @Nullable Revision revision; - private final @Nullable SemVer semVer; public ImportEffectiveStatementImpl(final ImportStatement declared, final ImmutableList> substatements, final @NonNull SourceIdentifier importedSource) { super(declared, substatements); revision = importedSource.getRevision().orElse(null); - semVer = importedSource instanceof SemVerSourceIdentifier - ? ((SemVerSourceIdentifier) importedSource).getSemanticVersion().orElse(null) - : null; } @Override @@ -42,12 +36,6 @@ public final class ImportEffectiveStatementImpl extends WithSubstatements getSemanticVersion() { - return Optional.ofNullable(semVer); - } - @Override public String getPrefix() { return getDeclared().getPrefix().argument(); diff --git a/model/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/SchemaContextProxyTest.java b/model/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/SchemaContextProxyTest.java index 0acdbfe81c..1a3068a67e 100644 --- a/model/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/SchemaContextProxyTest.java +++ b/model/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/SchemaContextProxyTest.java @@ -22,7 +22,6 @@ import java.util.List; import java.util.Optional; import java.util.Set; import org.junit.Test; -import org.opendaylight.yangtools.concepts.SemVer; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.Revision; @@ -411,8 +410,7 @@ public class SchemaContextProxyTest { final ContainerSchemaNode mockedContainer = mock(ContainerSchemaNode.class); doReturn(Set.of(mockedContainer)).when(moduleConfig).getChildNodes(); - final Collection dataDefinitions = - filteringSchemaContextProxy.getDataDefinitions(); + final Collection dataDefinitions = filteringSchemaContextProxy.getDataDefinitions(); assertTrue(dataDefinitions.contains(mockedContainer)); } @@ -598,12 +596,6 @@ public class SchemaContextProxyTest { return module.getName(); } - @Override - @Deprecated(since = "8.0.4", forRemoval = true) - public Optional getSemanticVersion() { - return module.getSemanticVersion(); - } - @Override public Optional getDescription() { return module.getDescription(); diff --git a/parser/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/DependencyResolver.java b/parser/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/DependencyResolver.java index 5598129ede..e87c7d3cfb 100644 --- a/parser/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/DependencyResolver.java +++ b/parser/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/DependencyResolver.java @@ -20,7 +20,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Optional; import java.util.Set; -import org.opendaylight.yangtools.concepts.SemVer; import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.ModuleImport; import org.opendaylight.yangtools.yang.model.api.stmt.ImportEffectiveStatement; @@ -185,11 +184,6 @@ abstract class DependencyResolver { throw new UnsupportedOperationException(); } - @Override - public Optional getSemanticVersion() { - return Optional.empty(); - } - @Override public String toString() { return MoreObjects.toStringHelper(this).add("parent", parent).toString(); 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 ff6173d166..73ca392e20 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,9 +18,6 @@ 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.model.api.ModuleImport; import org.opendaylight.yangtools.yang.model.api.YangStmtMapping; @@ -61,33 +56,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 +109,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 +177,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, @@ -232,28 +191,12 @@ public abstract class YangModelDependencyInfo { 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(importedModuleName, revisionDate)); } } return ImmutableSet.copyOf(result); } - @Beta - @Deprecated(since = "8.0.4", forRemoval = true) - 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()); @@ -336,14 +279,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() + "]"; } @@ -372,9 +314,9 @@ public abstract class YangModelDependencyInfo { @Override public String toString() { - return "Submodule [name=" + getName() + ", revision=" - + getRevision() + ", dependencies=" + getDependencies() - + "]"; + return "Submodule [name=" + getName() + ", revision=" + getRevision() + + ", dependencies=" + getDependencies() + + "]"; } } @@ -383,25 +325,17 @@ public abstract class YangModelDependencyInfo { */ // FIXME: this is a rather nasty misuse of APIs :( private static final class ModuleImportImpl implements ModuleImport { - + private final @NonNull String 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."); + this.moduleName = requireNonNull(moduleName, "Module name must not be null."); this.revision = revision; - this.semVer = semVer; } @Override public String getModuleName() { - return name; + return moduleName; } @Override @@ -409,12 +343,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(); @@ -439,29 +367,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 + "]"; } } } diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java index fb7077ebde..323587af5c 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java @@ -20,8 +20,6 @@ import java.util.LinkedHashSet; import java.util.Optional; import java.util.Set; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.concepts.SemVer; -import org.opendaylight.yangtools.openconfig.model.api.OpenConfigVersionEffectiveStatement; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified; import org.opendaylight.yangtools.yang.common.YangVersion; @@ -195,11 +193,6 @@ public abstract class AbstractEffectiveModule getSemanticVersion() { - return findFirstEffectiveSubstatementArgument(OpenConfigVersionEffectiveStatement.class); - } - protected static final @NonNull String findPrefix(final CommonStmtCtx stmt, final Collection> substatements, final String type, final String name) { return substatements.stream() -- 2.36.6