From 85dd59d03439223b29a5e34d7cad2698183bab8a Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 2 Nov 2017 09:46:17 +0100 Subject: [PATCH] Eliminate ModuleIdentifier It has been superseded by SourceIdentifier and its concrete subclasses. Change-Id: I88ae6bd8fae103198ad3caa7957de32f9bbed8e5 Signed-off-by: Robert Varga --- .../yang/model/api/ModuleIdentifier.java | 38 --------- .../util/FilteringSchemaContextProxy.java | 12 +-- .../yang/model/util/ModuleIdentifierImpl.java | 84 ------------------- .../yang/model/util/SchemaContextUtil.java | 11 +-- .../stmt/rfc6020/SubmoduleStatementImpl.java | 10 --- .../yangtools/yang/stmt/Bug6961Test.java | 22 ++--- 6 files changed, 21 insertions(+), 156 deletions(-) delete mode 100644 yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleIdentifier.java delete mode 100644 yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/ModuleIdentifierImpl.java diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleIdentifier.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleIdentifier.java deleted file mode 100644 index e31e1dfadb..0000000000 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleIdentifier.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.yang.model.api; - -import java.util.Optional; -import org.opendaylight.yangtools.yang.common.Revision; -import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; - -/** - * Module identifier. This "identifier" is deprecated and is to be removed in 2.0.0. - * @author Robert Varga - * - * @deprecated Use {@link SourceIdentifier} instead. - */ -@Deprecated -public interface ModuleIdentifier { - /** - * Returns the name of the module which is specified as argument of YANG - * {@link Module module} keyword. - * - * @return string with the name of the module - */ - String getName(); - - /** - * Returns the revision date for the module. - * - * @return date of the module revision which is specified as argument of - * YANG {@link Module revison} - * keyword - */ - Optional getRevision(); -} diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/FilteringSchemaContextProxy.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/FilteringSchemaContextProxy.java index f51462b354..3e3a0f22c5 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/FilteringSchemaContextProxy.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/FilteringSchemaContextProxy.java @@ -11,7 +11,6 @@ package org.opendaylight.yangtools.yang.model.util; import com.google.common.base.Preconditions; import com.google.common.base.Strings; import com.google.common.collect.Collections2; -import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet.Builder; import com.google.common.collect.ImmutableSetMultimap; import com.google.common.collect.Lists; @@ -32,7 +31,6 @@ import java.util.function.Function; import javax.annotation.concurrent.Immutable; import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.Module; -import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier; import org.opendaylight.yangtools.yang.model.api.ModuleImport; import org.opendaylight.yangtools.yang.model.api.SchemaContext; @@ -65,18 +63,16 @@ public final class FilteringSchemaContextProxy extends AbstractSchemaContext { final SetMultimap nameMap = Multimaps.newSetMultimap(new TreeMap<>(), AbstractSchemaContext::createModuleSet); - ImmutableMap.Builder identifiersToSourcesBuilder = ImmutableMap.builder(); - - //preparing map to get all modules with one name but difference in revision + // preparing map to get all modules with one name but difference in revision final TreeMultimap nameToModulesAll = getStringModuleTreeMultimap(); nameToModulesAll.putAll(getStringModuleMap(delegate)); - //in case there is a particular dependancy to view filteredModules/yang models - //dependancy is checked for module name and imports + // in case there is a particular dependancy to view filteredModules/yang models dependancy is checked + // for module name and imports processForRootModules(delegate, rootModules, filteredModulesBuilder); - //adding additional modules + // adding additional modules processForAdditionalModules(delegate, additionalModuleIds, filteredModulesBuilder); filteredModulesBuilder.addAll(getImportedModules( diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/ModuleIdentifierImpl.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/ModuleIdentifierImpl.java deleted file mode 100644 index 1f8b375c7e..0000000000 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/ModuleIdentifierImpl.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.yang.model.util; - -import static com.google.common.base.Preconditions.checkNotNull; - -import com.google.common.annotations.Beta; -import java.util.Optional; -import org.opendaylight.yangtools.yang.common.Revision; -import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier; - -/** - * ModuleIdentifier that can be used for indexing/searching by name. - * Name is only non-null attribute. - * Equality check on namespace and revision is only triggered if they are non-null - * - * @deprecated This class will be removed with {@link ModuleIdentifier} - */ -@Deprecated -@Beta -public final class ModuleIdentifierImpl implements ModuleIdentifier { - private final Revision revision; - private final String name; - - private ModuleIdentifierImpl(final String name, final Optional revision) { - this.name = checkNotNull(name); - this.revision = revision.orElse(null); - } - - public static ModuleIdentifier create(final String name, final Optional revision) { - return new ModuleIdentifierImpl(name, revision); - } - - @Override - public Optional getRevision() { - return Optional.ofNullable(revision); - } - - @Override - public String getName() { - return name; - } - - @Override - public String toString() { - return "ModuleIdentifierImpl{" - + "name='" + name + '\'' - + ", revision=" + revision - + '}'; - } - - @Override - public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof ModuleIdentifier)) { - return false; - } - - ModuleIdentifier other = (ModuleIdentifier) obj; - - if (!name.equals(other.getName())) { - return false; - } - - // only fail if this revision is non-null - if (getRevision() != null && !getRevision().equals(other.getRevision())) { - return false; - } - - return true; - } - - @Override - public int hashCode() { - return name.hashCode(); - } -} diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SchemaContextUtil.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SchemaContextUtil.java index 06ae0d090f..628a1c8be4 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SchemaContextUtil.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SchemaContextUtil.java @@ -32,7 +32,6 @@ import org.opendaylight.yangtools.yang.model.api.GroupingDefinition; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; -import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier; import org.opendaylight.yangtools.yang.model.api.ModuleImport; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; @@ -43,6 +42,8 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.TypedSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition; +import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier; +import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -290,8 +291,8 @@ public final class SchemaContextUtil { * @param context SchemaContext to be examined * @return Set of ModuleIdentifiers. */ - public static Set getConstituentModuleIdentifiers(final SchemaContext context) { - final Set ret = new HashSet<>(); + public static Set getConstituentModuleIdentifiers(final SchemaContext context) { + final Set ret = new HashSet<>(); for (Module module : context.getModules()) { ret.add(moduleToIdentifier(module)); @@ -304,8 +305,8 @@ public final class SchemaContextUtil { return ret; } - private static ModuleIdentifier moduleToIdentifier(final Module module) { - return ModuleIdentifierImpl.create(module.getName(), module.getRevision()); + private static SourceIdentifier moduleToIdentifier(final Module module) { + return RevisionSourceIdentifier.create(module.getName(), module.getRevision()); } private static SchemaNode findNodeInModule(final Module module, final Iterable path) { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/SubmoduleStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/SubmoduleStatementImpl.java index 866eb99e13..0e1f1ae43a 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/SubmoduleStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/SubmoduleStatementImpl.java @@ -10,10 +10,7 @@ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020; import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.findFirstDeclaredSubstatement; import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.firstAttributeOf; -import java.util.Optional; 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.api.YangStmtMapping; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToStatement; @@ -22,7 +19,6 @@ 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; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; @@ -124,12 +120,6 @@ public class SubmoduleStatementImpl extends AbstractRootStatement> stmt) { - final Optional maybeDate = StmtContextUtils.getLatestRevision(stmt.declaredSubstatements()); - return ModuleIdentifierImpl.create(stmt.getStatementArgument(), maybeDate); - } - @Override protected SubstatementValidator getSubstatementValidator() { return SUBSTATEMENT_VALIDATOR; diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug6961Test.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug6961Test.java index 15b6829219..779711da76 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug6961Test.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug6961Test.java @@ -16,9 +16,9 @@ import java.util.Optional; import java.util.Set; import org.junit.Test; import org.opendaylight.yangtools.yang.common.Revision; -import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.util.ModuleIdentifierImpl; +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.SchemaContextUtil; import org.opendaylight.yangtools.yang.model.util.SimpleSchemaContext; @@ -27,21 +27,21 @@ public class Bug6961Test { @Test public void testBug6961SchemaContext() throws Exception { final Optional revision = Revision.ofNullable("2016-01-01"); - final ModuleIdentifier foo = ModuleIdentifierImpl.create("foo", revision); - final ModuleIdentifier sub1Foo = ModuleIdentifierImpl.create("sub1-foo", revision); - final ModuleIdentifier sub2Foo = ModuleIdentifierImpl.create("sub2-foo", revision); - final ModuleIdentifier bar = ModuleIdentifierImpl.create("bar", revision); - final ModuleIdentifier sub1Bar = ModuleIdentifierImpl.create("sub1-bar", revision); - final ModuleIdentifier baz = ModuleIdentifierImpl.create("baz", revision); - final Set testSet = ImmutableSet.of(foo, sub1Foo, sub2Foo, bar, sub1Bar, baz); + final SourceIdentifier foo = RevisionSourceIdentifier.create("foo", revision); + final SourceIdentifier sub1Foo = RevisionSourceIdentifier.create("sub1-foo", revision); + final SourceIdentifier sub2Foo = RevisionSourceIdentifier.create("sub2-foo", revision); + final SourceIdentifier bar = RevisionSourceIdentifier.create("bar", revision); + final SourceIdentifier sub1Bar = RevisionSourceIdentifier.create("sub1-bar", revision); + final SourceIdentifier baz = RevisionSourceIdentifier.create("baz", revision); + final Set testSet = ImmutableSet.of(foo, sub1Foo, sub2Foo, bar, sub1Bar, baz); final SchemaContext context = StmtTestUtils.parseYangSources("/bugs/bug6961/"); assertNotNull(context); - final Set allModuleIdentifiers = SchemaContextUtil.getConstituentModuleIdentifiers(context); + final Set allModuleIdentifiers = SchemaContextUtil.getConstituentModuleIdentifiers(context); assertNotNull(allModuleIdentifiers); assertEquals(6, allModuleIdentifiers.size()); final SchemaContext schemaContext = SimpleSchemaContext.forModules(context.getModules()); assertNotNull(schemaContext); - final Set allModuleIdentifiersResolved = SchemaContextUtil.getConstituentModuleIdentifiers( + final Set allModuleIdentifiersResolved = SchemaContextUtil.getConstituentModuleIdentifiers( schemaContext); assertNotNull(allModuleIdentifiersResolved); assertEquals(6, allModuleIdentifiersResolved.size()); -- 2.36.6