From: Robert Varga Date: Sun, 4 Oct 2020 20:11:40 +0000 (+0200) Subject: Separate out Module and Submodule interfaces X-Git-Tag: v6.0.0~25 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=f4d26d44b4e398a183586429040d718a86b7a6d0;p=yangtools.git Separate out Module and Submodule interfaces Introduce ModuleLike to hold the common information and specialize the two interfaces properly. This allows them to be properly tied to EffectiveStatement world. JIRA: YANGTOOLS-1119 Change-Id: I4eee11311c6aad70de16f235da935a42b84874e0 Signed-off-by: Robert Varga --- diff --git a/yang/yang-maven-plugin-spi/src/main/java/org/opendaylight/yangtools/yang2sources/spi/ModuleResourceResolver.java b/yang/yang-maven-plugin-spi/src/main/java/org/opendaylight/yangtools/yang2sources/spi/ModuleResourceResolver.java index 2162eebc3a..d1e0c5b82f 100644 --- a/yang/yang-maven-plugin-spi/src/main/java/org/opendaylight/yangtools/yang2sources/spi/ModuleResourceResolver.java +++ b/yang/yang-maven-plugin-spi/src/main/java/org/opendaylight/yangtools/yang2sources/spi/ModuleResourceResolver.java @@ -9,7 +9,7 @@ package org.opendaylight.yangtools.yang2sources.spi; import com.google.common.annotations.Beta; import java.util.Optional; -import org.opendaylight.yangtools.yang.model.api.Module; +import org.opendaylight.yangtools.yang.model.api.ModuleLike; import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceRepresentation; /** @@ -28,5 +28,6 @@ public interface ModuleResourceResolver { * @throws NullPointerException if any argument is null * @throws IllegalArgumentException if the requested representation is not supported by this resolver */ - Optional findModuleResourcePath(Module module, Class representation); + Optional findModuleResourcePath(ModuleLike module, + Class representation); } diff --git a/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/ContextHolder.java b/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/ContextHolder.java index a26b0fec1d..ffe1d99d9f 100644 --- a/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/ContextHolder.java +++ b/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/ContextHolder.java @@ -16,6 +16,7 @@ import java.util.Set; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.Module; +import org.opendaylight.yangtools.yang.model.api.ModuleLike; import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceRepresentation; import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource; @@ -33,7 +34,7 @@ final class ContextHolder implements Immutable, ModuleResourceResolver { } @Override - public Optional findModuleResourcePath(final Module module, + public Optional findModuleResourcePath(final ModuleLike module, final Class representation) { checkArgument(YangTextSchemaSource.class.equals(requireNonNull(representation)), "Unsupported representation %s", representation); diff --git a/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/ProcessorModuleReactor.java b/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/ProcessorModuleReactor.java index af0b8a85dc..fa1a2353e6 100644 --- a/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/ProcessorModuleReactor.java +++ b/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/ProcessorModuleReactor.java @@ -26,6 +26,7 @@ import java.util.Map; import java.util.Set; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.Module; +import org.opendaylight.yangtools.yang.model.api.Submodule; import org.opendaylight.yangtools.yang.model.parser.api.YangParser; import org.opendaylight.yangtools.yang.model.parser.api.YangParserException; import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; @@ -74,7 +75,7 @@ final class ProcessorModuleReactor { LOG.debug("Module {} belongs to current project", module); modules.add(module); - for (Module sub : module.getSubmodules()) { + for (Submodule sub : module.getSubmodules()) { final SourceIdentifier subId = Util.moduleToIdentifier(sub); if (!modelsInProject.containsKey(subId)) { LOG.warn("Submodule {} not found in input files", sub); diff --git a/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/Util.java b/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/Util.java index c2c5252f55..07cf2e2ccd 100644 --- a/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/Util.java +++ b/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/Util.java @@ -24,7 +24,7 @@ import org.apache.maven.model.Dependency; import org.apache.maven.model.Plugin; import org.apache.maven.project.MavenProject; import org.apache.maven.repository.RepositorySystem; -import org.opendaylight.yangtools.yang.model.api.Module; +import org.opendaylight.yangtools.yang.model.api.ModuleLike; import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier; import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; import org.slf4j.Logger; @@ -144,7 +144,7 @@ final class Util { return element.isFile() && element.getName().endsWith(".jar"); } - static SourceIdentifier moduleToIdentifier(final Module module) { + static SourceIdentifier moduleToIdentifier(final ModuleLike module) { return RevisionSourceIdentifier.create(module.getName(), module.getRevision()); } } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/Module.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/Module.java index 3192d72cb3..9a3aacde77 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/Module.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/Module.java @@ -7,160 +7,11 @@ */ package org.opendaylight.yangtools.yang.model.api; -import java.net.URI; -import java.util.Collection; -import java.util.Optional; -import org.opendaylight.yangtools.concepts.Immutable; -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.common.YangVersion; +import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement; /** * This interface contains the methods for getting the data from the YANG module. */ -// FIXME: YANGTOOLS-1119: we need specializations for Module and Submodule -public interface Module extends DataNodeContainer, DocumentedNode, Immutable, NotificationNodeContainer, - NamespaceRevisionAware { - /** - * Returns the name of the module which is specified as argument of YANG {@code module} statement. - * - * @return string with the name of the module - */ - String getName(); +public interface Module extends ModuleLike, EffectiveStatementEquivalent { - /** - * Returns a {@link QNameModule}, which contains the namespace and the revision of the module. - * - * @return QNameModule identifier. - */ - QNameModule getQNameModule(); - - /** - * Returns the namespace of the module which is specified as argument of YANG {@code namespace} - * keyword. If you need both namespace and revision, please consider using {@link #getQNameModule()}. - * - * @return URI format of the namespace of the module - */ - @Override - default URI getNamespace() { - return getQNameModule().getNamespace(); - } - - /** - * Returns the revision date for the module. If you need both namespace and - * revision, please consider using {@link #getQNameModule()}. - * - * @return date of the module revision which is specified as argument of YANG {@code revison} statement - */ - @Override - default Optional getRevision() { - return getQNameModule().getRevision(); - } - - /** - * 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 - */ - Optional getSemanticVersion(); - - /** - * Returns the prefix of the module. - * - * @return string with the module prefix which is specified as argument of YANG {@code prefix} statement - */ - String getPrefix(); - - /** - * Returns the YANG version. - * - * @return YANG version of this module. - */ - YangVersion getYangVersion(); - - /** - * Returns the module organization. - * - * @return string with the name of the organization specified in the module as the argument of YANG - * {@code organization} statement - */ - Optional getOrganization(); - - /** - * Returns the module contact. - * - *

- * The contact represents the person or persons to whom technical queries concerning this module should be sent, - * such as their name, postal address, telephone number, and electronic mail address. - * - * @return string with the contact data specified in the module as the argument of YANG {@code contact} statement - */ - Optional getContact(); - - /** - * Returns imports which represents YANG modules which are imported to this module via {@code import} statement. - * - * @return set of module imports which are specified in the module as the argument of YANG {@code import} - * statements. - */ - Collection getImports(); - - Collection getSubmodules(); - - /** - * Returns {@link FeatureDefinition} instances which contain data from {@code feature} statements defined in the - * module. - * - *

- * The feature is used to define a mechanism by which portions of the schema are marked as conditional. - * - * @return feature statements in lexicographical order which are specified in the module as the argument of YANG - * {@code feature} statements. - */ - Collection getFeatures(); - - /** - * Returns {@link AugmentationSchemaNode} instances which contain data from {@code augment} statements defined - * in the module. - * - * @return set of the augmentation schema instances which are specified in the module as YANG {@code augment} - * statement and are lexicographically ordered - */ - Collection getAugmentations(); - - /** - * Returns {@link RpcDefinition} instances which contain data from {@code rpc} statements defined in the module. - * - * @return set of the RPC definition instances which are specified in the module as YANG {@code rpc} statements and - * are lexicographicaly ordered - */ - Collection getRpcs(); - - /** - * Returns {@link Deviation} instances which contain data from {@code deviation} statements defined in the module. - * - * @return set of the deviation instances - */ - Collection getDeviations(); - - /** - * Returns {@link IdentitySchemaNode} instances which contain data from {@code identity} statements defined in the - * module. - * - * @return set of identity schema node instances which are specified in the module as YANG {@code identity} - * statements and are lexicographically ordered - */ - Collection getIdentities(); - - /** - * Returns {@link ExtensionDefinition} instances which contain data from {@code extension} statements defined in - * the module. - * - * @return set of extension definition instances which are specified in the module as YANG {@code extension} - * statements and are lexicographically ordered - */ - Collection getExtensionSchemaNodes(); } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleLike.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleLike.java new file mode 100644 index 0000000000..04367814cf --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleLike.java @@ -0,0 +1,168 @@ +/* + * 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 com.google.common.annotations.Beta; +import java.net.URI; +import java.util.Collection; +import java.util.Optional; +import org.opendaylight.yangtools.concepts.Immutable; +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.common.YangVersion; + +/** + * This interface contains common methods for getting the schema contents from a YANG module or submodule. + */ +@Beta +public interface ModuleLike extends DataNodeContainer, DocumentedNode, Immutable, NotificationNodeContainer, + NamespaceRevisionAware { + /** + * Returns the name of the module which is specified as argument of YANG {@code module} statement. + * + * @return string with the name of the module + */ + String getName(); + + /** + * Returns a {@link QNameModule}, which contains the namespace and the revision of the module. + * + * @return QNameModule identifier. + */ + QNameModule getQNameModule(); + + /** + * Returns the namespace of the module which is specified as argument of YANG {@code namespace} + * keyword. If you need both namespace and revision, please consider using {@link #getQNameModule()}. + * + * @return URI format of the namespace of the module + */ + @Override + default URI getNamespace() { + return getQNameModule().getNamespace(); + } + + /** + * Returns the revision date for the module. If you need both namespace and + * revision, please consider using {@link #getQNameModule()}. + * + * @return date of the module revision which is specified as argument of YANG {@code revison} statement + */ + @Override + default Optional getRevision() { + return getQNameModule().getRevision(); + } + + /** + * 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 + */ + Optional getSemanticVersion(); + + /** + * Returns the prefix of the module. + * + * @return string with the module prefix which is specified as argument of YANG {@code prefix} statement + */ + String getPrefix(); + + /** + * Returns the YANG version. + * + * @return YANG version of this module. + */ + YangVersion getYangVersion(); + + /** + * Returns the module organization. + * + * @return string with the name of the organization specified in the module as the argument of YANG + * {@code organization} statement + */ + Optional getOrganization(); + + /** + * Returns the module contact. + * + *

+ * The contact represents the person or persons to whom technical queries concerning this module should be sent, + * such as their name, postal address, telephone number, and electronic mail address. + * + * @return string with the contact data specified in the module as the argument of YANG {@code contact} statement + */ + Optional getContact(); + + /** + * Returns imports which represents YANG modules which are imported to this module via {@code import} statement. + * + * @return set of module imports which are specified in the module as the argument of YANG {@code import} + * statements. + */ + Collection getImports(); + + // FIXME: YANGTOOLS-1006: this should be only in Module + Collection getSubmodules(); + + /** + * Returns {@link FeatureDefinition} instances which contain data from {@code feature} statements defined in the + * module. + * + *

+ * The feature is used to define a mechanism by which portions of the schema are marked as conditional. + * + * @return feature statements in lexicographical order which are specified in the module as the argument of YANG + * {@code feature} statements. + */ + Collection getFeatures(); + + /** + * Returns {@link AugmentationSchemaNode} instances which contain data from {@code augment} statements defined + * in the module. + * + * @return set of the augmentation schema instances which are specified in the module as YANG {@code augment} + * statement and are lexicographically ordered + */ + Collection getAugmentations(); + + /** + * Returns {@link RpcDefinition} instances which contain data from {@code rpc} statements defined in the module. + * + * @return set of the RPC definition instances which are specified in the module as YANG {@code rpc} statements and + * are lexicographicaly ordered + */ + Collection getRpcs(); + + /** + * Returns {@link Deviation} instances which contain data from {@code deviation} statements defined in the module. + * + * @return set of the deviation instances + */ + Collection getDeviations(); + + /** + * Returns {@link IdentitySchemaNode} instances which contain data from {@code identity} statements defined in the + * module. + * + * @return set of identity schema node instances which are specified in the module as YANG {@code identity} + * statements and are lexicographically ordered + */ + Collection getIdentities(); + + /** + * Returns {@link ExtensionDefinition} instances which contain data from {@code extension} statements defined in + * the module. + * + * @return set of extension definition instances which are specified in the module as YANG {@code extension} + * statements and are lexicographically ordered + */ + Collection getExtensionSchemaNodes(); +} diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/Submodule.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/Submodule.java new file mode 100644 index 0000000000..5dcb443521 --- /dev/null +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/Submodule.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2020 PANTHEO.tech, s.r.o. 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 org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleEffectiveStatement; + +/** + * This interface contains the methods for getting the data from the YANG submodule. + */ +public interface Submodule extends ModuleLike, EffectiveStatementEquivalent { + +} diff --git a/yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/YinExportUtils.java b/yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/YinExportUtils.java index 084b161649..ce289805e8 100644 --- a/yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/YinExportUtils.java +++ b/yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/YinExportUtils.java @@ -7,7 +7,6 @@ */ package org.opendaylight.yangtools.yang.model.export; -import static com.google.common.base.Preconditions.checkArgument; import static java.util.Objects.requireNonNull; import com.google.common.annotations.Beta; @@ -24,6 +23,7 @@ import javax.xml.transform.stream.StreamResult; import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.common.YangConstants; import org.opendaylight.yangtools.yang.model.api.Module; +import org.opendaylight.yangtools.yang.model.api.Submodule; import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleEffectiveStatement; @@ -73,10 +73,7 @@ public final class YinExportUtils { @Beta @Deprecated public static void writeModuleAsYinText(final Module module, final OutputStream output) throws XMLStreamException { - requireNonNull(module); - checkArgument(module instanceof ModuleEffectiveStatement, "Module %s is not a ModuleEffectiveStatement", - module); - writeModuleAsYinText((ModuleEffectiveStatement) module, output); + writeModuleAsYinText(module.asEffectiveStatement(), output); } /** @@ -109,16 +106,9 @@ public final class YinExportUtils { */ @Beta @Deprecated - public static void writeSubmoduleAsYinText(final Module parentModule, final Module submodule, + public static void writeSubmoduleAsYinText(final Module parentModule, final Submodule submodule, final OutputStream output) throws XMLStreamException { - requireNonNull(parentModule); - checkArgument(parentModule instanceof ModuleEffectiveStatement, "Parent %s is not a ModuleEffectiveStatement", - parentModule); - requireNonNull(submodule); - checkArgument(submodule instanceof SubmoduleEffectiveStatement, - "Submodule %s is not a SubmoduleEffectiveStatement", submodule); - writeSubmoduleAsYinText((ModuleEffectiveStatement) parentModule, (SubmoduleEffectiveStatement)submodule, - output); + writeSubmoduleAsYinText(parentModule.asEffectiveStatement(), submodule.asEffectiveStatement(), output); } /** diff --git a/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/AbstractYinExportTest.java b/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/AbstractYinExportTest.java index 59a4921a19..004ea00c73 100644 --- a/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/AbstractYinExportTest.java +++ b/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/AbstractYinExportTest.java @@ -20,6 +20,7 @@ import org.custommonkey.xmlunit.XMLAssert; import org.custommonkey.xmlunit.XMLUnit; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.Submodule; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.Document; import org.xml.sax.SAXException; @@ -34,7 +35,7 @@ abstract class AbstractYinExportTest { for (Module module : modules) { readAndValidateModule(schemaContext, module, yinDir); - for (Module submodule : module.getSubmodules()) { + for (Submodule submodule : module.getSubmodules()) { readAndValidateSubmodule(schemaContext, module, submodule, yinDir); } } @@ -56,7 +57,7 @@ abstract class AbstractYinExportTest { } private void readAndValidateSubmodule(final SchemaContext schemaContext, final Module module, - final Module submodule, final String yinDir) throws XMLStreamException, IOException, SAXException { + final Submodule submodule, final String yinDir) throws XMLStreamException, IOException, SAXException { final String fileName = YinExportUtils.wellFormedYinName(submodule.getName(), submodule.getRevision()); validateOutput(yinDir, fileName, export(module, submodule)); } @@ -67,7 +68,7 @@ abstract class AbstractYinExportTest { return new String(bos.toByteArray(), StandardCharsets.UTF_8); } - private static String export(final Module module, final Module submodule) throws XMLStreamException { + private static String export(final Module module, final Submodule submodule) throws XMLStreamException { final ByteArrayOutputStream bos = new ByteArrayOutputStream(); YinExportUtils.writeSubmoduleAsYinText(module, submodule, bos); return new String(bos.toByteArray(), StandardCharsets.UTF_8); 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 2e387ad13b..ec3c9e958a 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 @@ -37,7 +37,9 @@ import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.ModuleImport; +import org.opendaylight.yangtools.yang.model.api.ModuleLike; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.Submodule; public final class FilteringSchemaContextProxy extends AbstractSchemaContext { private final ImmutableMap moduleMap; @@ -175,7 +177,7 @@ public final class FilteringSchemaContextProxy extends AbstractSchemaContext { } //check for any dependency regarding given string - private boolean checkModuleDependency(final Module module, final Collection rootModules) { + private boolean checkModuleDependency(final ModuleLike module, final Collection rootModules) { for (ModuleId rootModule : rootModules) { if (rootModule.equals(new ModuleId(module.getName(), module.getRevision()))) { return true; @@ -190,7 +192,7 @@ public final class FilteringSchemaContextProxy extends AbstractSchemaContext { } //submodules handling - for (Module moduleSub : module.getSubmodules()) { + for (Submodule moduleSub : module.getSubmodules()) { return checkModuleDependency(moduleSub, rootModules); } } diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/ModuleDependencySort.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/ModuleDependencySort.java index 255875b9f4..5e9ba484de 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/ModuleDependencySort.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/ModuleDependencySort.java @@ -28,6 +28,7 @@ import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.common.YangVersion; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.ModuleImport; +import org.opendaylight.yangtools.yang.model.api.Submodule; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -144,7 +145,7 @@ public final class ModuleDependencySort { final Collection concat = new LinkedHashSet<>(); concat.addAll(mod.getImports()); - for (Module sub : mod.getSubmodules()) { + for (Submodule sub : mod.getSubmodules()) { concat.addAll(sub.getImports()); } return concat; 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 423d4c43b7..62e59cca60 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 @@ -44,6 +44,7 @@ import org.opendaylight.yangtools.yang.model.api.GroupingDefinition; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.ModuleImport; +import org.opendaylight.yangtools.yang.model.api.ModuleLike; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.NotificationNodeContainer; import org.opendaylight.yangtools.yang.model.api.OperationDefinition; @@ -55,6 +56,7 @@ import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.Submodule; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.TypedDataSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition; @@ -362,7 +364,7 @@ public final class SchemaContextUtil { for (Module module : context.getModules()) { ret.add(moduleToIdentifier(module)); - for (Module submodule : module.getSubmodules()) { + for (Submodule submodule : module.getSubmodules()) { ret.add(moduleToIdentifier(submodule)); } } @@ -370,7 +372,7 @@ public final class SchemaContextUtil { return ret; } - private static SourceIdentifier moduleToIdentifier(final Module module) { + private static SourceIdentifier moduleToIdentifier(final ModuleLike module) { return RevisionSourceIdentifier.create(module.getName(), module.getRevision()); } diff --git a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/ModuleDependencySortTest.java b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/ModuleDependencySortTest.java index b8b4f602ce..9086f37642 100644 --- a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/ModuleDependencySortTest.java +++ b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/ModuleDependencySortTest.java @@ -24,6 +24,7 @@ import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.YangVersion; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.ModuleImport; +import org.opendaylight.yangtools.yang.model.api.Submodule; @RunWith(MockitoJUnitRunner.class) public class ModuleDependencySortTest { @@ -40,7 +41,7 @@ public class ModuleDependencySortTest { private Module bar; @Mock - private Module barSubmodule; + private Submodule barSubmodule; @Before public void before() { diff --git a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/SchemaContextProxyTest.java b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/SchemaContextProxyTest.java index 9ad046d51c..4181d8ca06 100644 --- a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/SchemaContextProxyTest.java +++ b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/SchemaContextProxyTest.java @@ -33,9 +33,11 @@ import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition; import org.opendaylight.yangtools.yang.model.api.GroupingDefinition; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.ModuleImport; +import org.opendaylight.yangtools.yang.model.api.ModuleLike; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.Submodule; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.stmt.ImportEffectiveStatement; @@ -336,7 +338,7 @@ public class SchemaContextProxyTest { Module module2 = mockModule(MODULE2_NAME); Module module3 = mockModule(MODULE3_NAME); Module module4 = mockModule(MODULE4_NAME); - Module module41 = mockModule(MODULE41_NAME); + Submodule module41 = mockSubmodule(MODULE41_NAME); mockSubmodules(module4, module41); mockModuleImport(module2, moduleConfig, module3); @@ -584,14 +586,14 @@ public class SchemaContextProxyTest { return moduleIds; } - private static void mockSubmodules(final Module mainModule, final Module... submodules) { - Set submodulesSet = new HashSet<>(); + private static void mockSubmodules(final Module mainModule, final Submodule... submodules) { + Set submodulesSet = new HashSet<>(); submodulesSet.addAll(Arrays.asList(submodules)); doReturn(submodulesSet).when(mainModule).getSubmodules(); } - private static void mockModuleImport(final Module importer, final Module... imports) { + private static void mockModuleImport(final ModuleLike importer, final Module... imports) { Set mockedImports = new HashSet<>(); for (final Module module : imports) { mockedImports.add(new ModuleImport() { @@ -653,8 +655,18 @@ public class SchemaContextProxyTest { //mock module with default revision private static Module mockModule(final String name) { - Module mockedModule = mock(Module.class); + mockModuleLike(mockedModule, name); + return mockedModule; + } + + private static Submodule mockSubmodule(final String name) { + Submodule mockedModule = mock(Submodule.class); + mockModuleLike(mockedModule, name); + return mockedModule; + } + + private static void mockModuleLike(final ModuleLike mockedModule, final String name) { doReturn(name).when(mockedModule).getName(); doReturn(Optional.of(REVISION)).when(mockedModule).getRevision(); final URI newNamespace = URI.create(NAMESPACE.toString() + ":" + name); @@ -663,7 +675,5 @@ public class SchemaContextProxyTest { doReturn(new HashSet<>()).when(mockedModule).getSubmodules(); doReturn(mockedModule.getQNameModule().toString()).when(mockedModule).toString(); mockModuleImport(mockedModule); - - return mockedModule; } } diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java index 376bf624ee..4f6ef50f3c 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java @@ -34,8 +34,8 @@ import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition; import org.opendaylight.yangtools.yang.model.api.FeatureDefinition; import org.opendaylight.yangtools.yang.model.api.GroupingDefinition; import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode; -import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.ModuleImport; +import org.opendaylight.yangtools.yang.model.api.ModuleLike; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; @@ -65,7 +65,7 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; @Beta public abstract class AbstractEffectiveModule, E extends DataTreeAwareEffectiveStatement> extends WithSubstatements - implements Module, DocumentedNodeMixin, NotificationNodeContainerCompat { + implements ModuleLike, DocumentedNodeMixin, NotificationNodeContainerCompat { private final String prefix; private final ImmutableSet groupings; private final ImmutableSet uses; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/AbstractModuleStatementSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/AbstractModuleStatementSupport.java index bfeacc7b82..ee0b1c70ad 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/AbstractModuleStatementSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/AbstractModuleStatementSupport.java @@ -21,8 +21,8 @@ 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.DataNodeContainer; -import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaNode; +import org.opendaylight.yangtools.yang.model.api.Submodule; import org.opendaylight.yangtools.yang.model.api.YangStmtMapping; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; @@ -170,11 +170,11 @@ abstract class AbstractModuleStatementSupport protected final ModuleEffectiveStatement createEffective( final StmtContext ctx, final ModuleStatement declared, final ImmutableList> substatements) { - final List submodules = new ArrayList<>(); + final List submodules = new ArrayList<>(); for (StmtContext submoduleCtx : submoduleContexts(ctx)) { final EffectiveStatement submodule = submoduleCtx.buildEffective(); - verify(submodule instanceof Module, "Submodule statement %s is not a Module", submodule); - submodules.add((Module) submodule); + verify(submodule instanceof Submodule, "Submodule statement %s is not a Submodule", submodule); + submodules.add((Submodule) submodule); } return new ModuleEffectiveStatementImpl(ctx, declared, substatements, submodules); diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleEffectiveStatementImpl.java index 26a73b4e64..93fe4f0260 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleEffectiveStatementImpl.java @@ -21,6 +21,7 @@ import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.model.api.Module; +import org.opendaylight.yangtools.yang.model.api.Submodule; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace; import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionEffectiveStatement; @@ -45,7 +46,7 @@ import org.opendaylight.yangtools.yang.parser.spi.source.IncludedSubmoduleNameTo import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleQName; final class ModuleEffectiveStatementImpl extends AbstractEffectiveModule - implements ModuleEffectiveStatement { + implements Module, ModuleEffectiveStatement { private final ImmutableMap nameToSubmodule; private final ImmutableMap qnameToExtension; private final ImmutableMap qnameToFeature; @@ -53,11 +54,11 @@ final class ModuleEffectiveStatementImpl extends AbstractEffectiveModule prefixToModule; private final ImmutableMap namespaceToPrefix; private final @NonNull QNameModule qnameModule; - private final ImmutableList submodules; + private final ImmutableList submodules; ModuleEffectiveStatementImpl(final StmtContext ctx, final ModuleStatement declared, final ImmutableList> substatements, - final Collection submodules) { + final Collection submodules) { super(declared, ctx, substatements, findPrefix(ctx, "module", ctx.getStatementArgument())); qnameModule = verifyNotNull(ctx.getFromNamespace(ModuleCtxToModuleQName.class, ctx)); @@ -107,10 +108,15 @@ final class ModuleEffectiveStatementImpl extends AbstractEffectiveModule getSubmodules() { + public Collection getSubmodules() { return submodules; } + @Override + public ModuleEffectiveStatement asEffectiveStatement() { + return this; + } + @Override @SuppressWarnings("unchecked") public > Optional> getNamespaceContents( diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/submodule/SubmoduleEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/submodule/SubmoduleEffectiveStatementImpl.java index 473ae8ba82..14b8d3b83c 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/submodule/SubmoduleEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/submodule/SubmoduleEffectiveStatementImpl.java @@ -16,6 +16,7 @@ import com.google.common.collect.ImmutableMap.Builder; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.Maps; +import java.util.Collection; import java.util.HashSet; import java.util.Map; import java.util.Map.Entry; @@ -24,7 +25,7 @@ import java.util.Set; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.Revision; -import org.opendaylight.yangtools.yang.model.api.Module; +import org.opendaylight.yangtools.yang.model.api.Submodule; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace; import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToStatement; @@ -45,13 +46,13 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; final class SubmoduleEffectiveStatementImpl extends AbstractEffectiveModule - implements SubmoduleEffectiveStatement, MutableStatement { + implements Submodule, SubmoduleEffectiveStatement, MutableStatement { private final ImmutableMap prefixToModule; private final ImmutableMap namespaceToPrefix; private final QNameModule qnameModule; private Set>> submoduleContexts; - private ImmutableSet submodules; + private ImmutableSet submodules; private boolean sealed; SubmoduleEffectiveStatementImpl(final StmtContext ctx, @@ -123,17 +124,22 @@ final class SubmoduleEffectiveStatementImpl } @Override - public Set getSubmodules() { + public Collection getSubmodules() { checkState(sealed, "Attempt to get base submodules from unsealed submodule effective statement %s", qnameModule); return submodules; } + @Override + public SubmoduleEffectiveStatement asEffectiveStatement() { + return this; + } + @Override public void seal() { if (!sealed) { submodules = ImmutableSet.copyOf(Iterables.transform(submoduleContexts, - ctx -> (Module) ctx.buildEffective())); + ctx -> (Submodule) ctx.buildEffective())); submoduleContexts = ImmutableSet.of(); sealed = true; } diff --git a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug3799Test.java b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug3799Test.java index fc985465ce..f4137be82d 100644 --- a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug3799Test.java +++ b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug3799Test.java @@ -18,6 +18,7 @@ import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.Submodule; public class Bug3799Test { @@ -31,11 +32,11 @@ public class Bug3799Test { assertEquals(1, modules.size()); Module testModule = modules.iterator().next(); - Collection subModules = testModule.getSubmodules(); + Collection subModules = testModule.getSubmodules(); assertNotNull(subModules); assertEquals(1, subModules.size()); - Module testSubmodule = subModules.iterator().next(); + Submodule testSubmodule = subModules.iterator().next(); Collection notifications = testSubmodule.getNotifications(); assertNotNull(notifications); diff --git a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug7480Test.java b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug7480Test.java index aa6200ff87..94b4d19b51 100644 --- a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug7480Test.java +++ b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug7480Test.java @@ -18,6 +18,7 @@ import org.junit.Test; import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.Submodule; import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.RFC7950Reactors; import org.opendaylight.yangtools.yang.parser.spi.meta.SomeModifiersUnresolvedException; @@ -38,7 +39,7 @@ public class Bug7480Test { assertTrue(context.findModule(new URI("baz-imp"), Revision.of("2002-01-01")).isPresent()); final Collection foo = context.findModules(new URI("foo")); assertEquals(1, foo.size()); - final Collection subFoos = foo.iterator().next().getSubmodules(); + final Collection subFoos = foo.iterator().next().getSubmodules(); assertEquals(1, subFoos.size()); final Module parentMod = context.findModule(new URI("parent-mod-ns"), Revision.of("2017-09-07")).get(); diff --git a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug9005Test.java b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug9005Test.java index 70ee79318e..c62daf64ba 100644 --- a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug9005Test.java +++ b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug9005Test.java @@ -16,6 +16,7 @@ import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.ModuleImport; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.Submodule; public class Bug9005Test { @Test @@ -32,9 +33,9 @@ public class Bug9005Test { assertEquals("bar", imp1.getPrefix()); assertEquals(Revision.ofNullable("2000-01-02"), imp1.getRevision()); - final Collection submodules = foo.getSubmodules(); + final Collection submodules = foo.getSubmodules(); assertEquals(1, submodules.size()); - final Module submodule = submodules.iterator().next(); + final Submodule submodule = submodules.iterator().next(); final Collection subImports = submodule.getImports(); assertEquals(1, subImports.size()); diff --git a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/DeclaredStatementsTest.java b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/DeclaredStatementsTest.java index 684ba2627e..2f51b0f3ed 100644 --- a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/DeclaredStatementsTest.java +++ b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/DeclaredStatementsTest.java @@ -29,6 +29,7 @@ import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.Status; +import org.opendaylight.yangtools.yang.model.api.Submodule; import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ArgumentStatement; @@ -245,11 +246,11 @@ public class DeclaredStatementsTest { final IncludeStatement includeStatement = moduleStatement.getIncludes().iterator().next(); assertEquals("child-module-declared-test", includeStatement.getModule()); - final Collection submodules = testModule.getSubmodules(); + final Collection submodules = testModule.getSubmodules(); assertNotNull(submodules); assertEquals(1, submodules.size()); - final Module submodule = submodules.iterator().next(); + final Submodule submodule = submodules.iterator().next(); final SubmoduleStatement submoduleStatement = ((SubmoduleEffectiveStatement) submodule).getDeclared(); final String submoduleStatementName = submoduleStatement.getName(); diff --git a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModuleTest.java b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModuleTest.java index 78e396c535..6b8a9e85e3 100644 --- a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModuleTest.java +++ b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModuleTest.java @@ -33,6 +33,7 @@ import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; +import org.opendaylight.yangtools.yang.model.api.Submodule; import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute; import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.RFC7950Reactors; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; @@ -88,7 +89,7 @@ public class EffectiveModuleTest { assertEquals(Optional.of(REVISION), importStmt.getRevision()); assertEquals("imp-pref", importStmt.getPrefix()); - final Collection submodules = rootModule.getSubmodules(); + final Collection submodules = rootModule.getSubmodules(); assertEquals(1, submodules.size()); assertEquals("submod", submodules.iterator().next().getName()); diff --git a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModulesAndSubmodulesTest.java b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModulesAndSubmodulesTest.java index 5659212a1f..305723d2e9 100644 --- a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModulesAndSubmodulesTest.java +++ b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModulesAndSubmodulesTest.java @@ -21,6 +21,7 @@ import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.Submodule; import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.RFC7950Reactors; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource; @@ -80,8 +81,8 @@ public class EffectiveModulesAndSubmodulesTest { assertEquals(3, rootChildNodes.size()); assertEquals(1, importedChildNodes.size()); - final Collection rootSubmodules = root.getSubmodules(); - final Collection importedSubmodules = imported.getSubmodules(); + final Collection rootSubmodules = root.getSubmodules(); + final Collection importedSubmodules = imported.getSubmodules(); assertNotNull(rootSubmodules); assertNotNull(importedSubmodules); @@ -89,9 +90,9 @@ public class EffectiveModulesAndSubmodulesTest { assertEquals(2, rootSubmodules.size()); assertEquals(0, importedSubmodules.size()); - Module sub1 = null; - Module sub2 = null; - for (final Module rootSubmodule : rootSubmodules) { + Submodule sub1 = null; + Submodule sub2 = null; + for (final Submodule rootSubmodule : rootSubmodules) { switch (rootSubmodule.getName()) { case "submodule-1": sub1 = rootSubmodule; @@ -118,8 +119,8 @@ public class EffectiveModulesAndSubmodulesTest { assertEquals(1, sub1ChildNodes.size()); assertEquals(1, sub2ChildNodes.size()); - final Collection sub1Submodules = sub1.getSubmodules(); - final Collection sub2Submodules = sub2.getSubmodules(); + final Collection sub1Submodules = sub1.getSubmodules(); + final Collection sub2Submodules = sub2.getSubmodules(); assertNotNull(sub1Submodules); assertNotNull(sub2Submodules); @@ -127,8 +128,8 @@ public class EffectiveModulesAndSubmodulesTest { assertEquals(1, sub1Submodules.size()); assertEquals(0, sub2Submodules.size()); - Module sub1Submodule = null; - for (final Module submodule : sub1Submodules) { + Submodule sub1Submodule = null; + for (final Submodule submodule : sub1Submodules) { switch (submodule.getName()) { case "submodule-to-submodule-1": sub1Submodule = submodule; @@ -145,7 +146,7 @@ public class EffectiveModulesAndSubmodulesTest { assertNotNull(sub1SubmoduleChildNodes); assertEquals(1, sub1SubmoduleChildNodes.size()); - final Collection sub1SubmoduleSubmodules = sub1Submodule.getSubmodules(); + final Collection sub1SubmoduleSubmodules = sub1Submodule.getSubmodules(); assertNotNull(sub1SubmoduleSubmodules); assertEquals(0, sub1SubmoduleSubmodules.size()); diff --git a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/IncludedStmtsTest.java b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/IncludedStmtsTest.java index c3d0c1575b..1968e1f992 100644 --- a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/IncludedStmtsTest.java +++ b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/IncludedStmtsTest.java @@ -25,6 +25,7 @@ import org.opendaylight.yangtools.yang.model.api.FeatureDefinition; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.Submodule; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.RFC7950Reactors; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; @@ -102,7 +103,7 @@ public class IncludedStmtsTest { final Module testModule = result.findModules("root-module").iterator().next(); assertNotNull(testModule); - final Module subModule = testModule.getSubmodules().iterator().next(); + final Submodule subModule = testModule.getSubmodules().iterator().next(); assertEquals("urn:opendaylight.org/root-module", subModule.getNamespace().toString()); } } diff --git a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/StmtTestUtils.java b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/StmtTestUtils.java index 04af526725..a4c26fb24f 100644 --- a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/StmtTestUtils.java +++ b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/StmtTestUtils.java @@ -25,7 +25,9 @@ import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.ModuleImport; +import org.opendaylight.yangtools.yang.model.api.ModuleLike; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.Submodule; import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException; import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; import org.opendaylight.yangtools.yang.model.repo.api.StatementParserMode; @@ -83,9 +85,9 @@ public final class StmtTestUtils { } } - public static void printReferences(final Module module, final boolean isSubmodule, final String indent) { + public static void printReferences(final ModuleLike module, final boolean isSubmodule, final String indent) { LOG.debug("{}{} {}", indent, isSubmodule ? "Submodule" : "Module", module.getName()); - for (final Module submodule : module.getSubmodules()) { + for (final Submodule submodule : module.getSubmodules()) { printReferences(submodule, true, indent + " "); printChilds(submodule.getChildNodes(), indent + " "); } diff --git a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/yin/YinFileIncludeStmtTest.java b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/yin/YinFileIncludeStmtTest.java index c2cd1fb8f7..ccd0d8c192 100644 --- a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/yin/YinFileIncludeStmtTest.java +++ b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/yin/YinFileIncludeStmtTest.java @@ -18,6 +18,7 @@ import org.junit.Before; import org.junit.Test; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.Submodule; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.stmt.TestUtils; import org.xml.sax.SAXException; @@ -39,9 +40,9 @@ public class YinFileIncludeStmtTest { assertNotNull(parentModule); assertEquals(1, parentModule.getSubmodules().size()); - Iterator submodulesIterator = parentModule.getSubmodules().iterator(); + Iterator submodulesIterator = parentModule.getSubmodules().iterator(); - Module childModule = submodulesIterator.next() ; + Submodule childModule = submodulesIterator.next() ; assertNotNull(childModule); assertEquals("child", childModule.getName()); assertEquals(new URI("urn:opendaylight/parent"), childModule.getNamespace());