From 407cc5b8fa20af4306feb158b85243859eedd7d4 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 19 Oct 2017 11:06:36 +0200 Subject: [PATCH] Fix Module.getVersion() We should be returning YangVersion instead of a String, do exactly that. Change-Id: Ieeef1b8f1da9a5084d969cb217f7994374eea425 Signed-off-by: Robert Varga --- .../yangtools/yang/model/api/Module.java | 10 ++++------ .../yang/model/export/SchemaContextEmitter.java | 15 +++++++-------- .../export/EffectiveSchemaContextEmitterTest.java | 5 ++--- .../yang/model/util/ModuleDependencySort.java | 2 +- .../effective/AbstractEffectiveModule.java | 4 ++-- .../yangtools/yang/stmt/EffectiveModuleTest.java | 2 +- .../yangtools/yang/stmt/YangParserTest.java | 2 +- .../yang/stmt/yin/YinFileHeaderStmtsTest.java | 2 +- 8 files changed, 19 insertions(+), 23 deletions(-) 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 1d39a77b32..68ae7c6108 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 @@ -12,6 +12,7 @@ import java.util.Set; import javax.annotation.Nonnull; import javax.annotation.concurrent.Immutable; import org.opendaylight.yangtools.concepts.SemVer; +import org.opendaylight.yangtools.yang.common.YangVersion; /** * This interface contains the methods for getting the data from the YANG @@ -76,14 +77,11 @@ public interface Module extends DataNodeContainer, ModuleIdentifier, Notificatio String getPrefix(); /** - * Returns the YANG version. Default value is 1. + * Returns the YANG version. * - * @return string with the module YANG version which is specified as - * argument of YANG {@link Module yang-version} keyword + * @return YANG version of this module. */ - // FIXME: version 2.0.0: return YangVersion - String getYangVersion(); + YangVersion getYangVersion(); /** * Returns the module description. diff --git a/yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/SchemaContextEmitter.java b/yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/SchemaContextEmitter.java index ebfb5acfaf..364e8f7a4e 100644 --- a/yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/SchemaContextEmitter.java +++ b/yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/SchemaContextEmitter.java @@ -199,17 +199,16 @@ abstract class SchemaContextEmitter { * augment) we can get declared form i.e. ModuleStatement and then * use DeclaredSchemaContextEmitter */ - new DeclaredSchemaContextEmitter(yangSchemaWriter, extensions, - YangVersion.parse(module.getYangVersion()).orElse(null)) - .emitModule(((EffectiveStatement) module).getDeclared()); + new DeclaredSchemaContextEmitter(yangSchemaWriter, extensions, module.getYangVersion()) + .emitModule(((EffectiveStatement) module).getDeclared()); } else { /* * if we don't have access to declared form of supplied module or we * want to emit also instantiated statements (e.g. statements added * by uses or augment), we use EffectiveSchemaContextEmitter. */ - new EffectiveSchemaContextEmitter(yangSchemaWriter, extensions, - YangVersion.parse(module.getYangVersion()).orElse(null), emitInstantiated).emitModule(module); + new EffectiveSchemaContextEmitter(yangSchemaWriter, extensions, module.getYangVersion(), emitInstantiated) + .emitModule(module); } } @@ -1116,7 +1115,7 @@ abstract class SchemaContextEmitter { } else if (child instanceof ConfigStatement) { emitConfigNode((ConfigStatement) child); } else if (child instanceof UnknownStatement) { - emitUnknownStatementNode((UnknownStatement) child); + emitUnknownStatementNode(child); } } super.writer.endNode(); @@ -1259,8 +1258,8 @@ abstract class SchemaContextEmitter { } } - private void emitYangVersionNode(final String input) { - super.writer.startYangVersionNode(input); + private void emitYangVersionNode(final YangVersion input) { + super.writer.startYangVersionNode(input.toString()); super.writer.endNode(); } diff --git a/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/EffectiveSchemaContextEmitterTest.java b/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/EffectiveSchemaContextEmitterTest.java index 00b7403155..c7d683e7de 100644 --- a/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/EffectiveSchemaContextEmitterTest.java +++ b/yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/EffectiveSchemaContextEmitterTest.java @@ -30,7 +30,6 @@ import org.custommonkey.xmlunit.XMLUnit; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil; -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.SchemaContext; @@ -87,8 +86,8 @@ public class EffectiveSchemaContextEmitterTest { prefixToNs); final YangModuleWriter yangSchemaWriter = SchemaToStatementWriterAdaptor.from(statementWriter); final Map extensions = ExtensionStatement.mapFrom(ctx.getExtensions()); - new EffectiveSchemaContextEmitter(yangSchemaWriter, extensions, - YangVersion.parse(module.getYangVersion()).orElse(null), emitInstantiated).emitModule(module); + new EffectiveSchemaContextEmitter(yangSchemaWriter, extensions, module.getYangVersion(), emitInstantiated) + .emitModule(module); } private static Map prefixToNamespace(final SchemaContext ctx, final Module module) { 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 a424e70e39..8bdd17c80d 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 @@ -133,7 +133,7 @@ public final class ModuleDependencySort { * If it is an yang 1 module, check imports: If module is imported twice with different * revisions then throw exception */ - if (YangVersion.VERSION_1.toString().equals(module.getYangVersion())) { + if (module.getYangVersion() == YangVersion.VERSION_1) { final Date impRevision = imported.get(toName); if (impRevision != null && !impRevision.equals(toRevision) && !DEFAULT_DATE_REV.equals(impRevision) && !DEFAULT_DATE_REV.equals(toRevision)) { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveModule.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveModule.java index 7e01ba968a..871d2878e9 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveModule.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/AbstractEffectiveModule.java @@ -299,8 +299,8 @@ abstract class AbstractEffectiveModule> exte } @Override - public String getYangVersion() { - return yangVersion.toString(); + public YangVersion getYangVersion() { + return yangVersion; } @Override diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModuleTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModuleTest.java index 4803e52342..f8aa9f917b 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModuleTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveModuleTest.java @@ -84,7 +84,7 @@ public class EffectiveModuleTest { assertNotNull(rootModule); assertEquals("root-pref", rootModule.getPrefix()); - assertEquals(YangVersion.VERSION_1.toString(), rootModule.getYangVersion()); + assertEquals(YangVersion.VERSION_1, rootModule.getYangVersion()); assertEquals("cisco", rootModule.getOrganization()); assertEquals("cisco email", rootModule.getContact()); diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserTest.java index 855757d027..f6b0cefbe5 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserTest.java @@ -91,7 +91,7 @@ public class YangParserTest { @Test public void testHeaders() throws ParseException { assertEquals("foo", foo.getName()); - assertEquals(YangVersion.VERSION_1.toString(), foo.getYangVersion()); + assertEquals(YangVersion.VERSION_1, foo.getYangVersion()); assertEquals(FOO.getNamespace(), foo.getNamespace()); assertEquals("foo", foo.getPrefix()); diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/yin/YinFileHeaderStmtsTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/yin/YinFileHeaderStmtsTest.java index 47852d18ca..ebe9c06594 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/yin/YinFileHeaderStmtsTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/yin/YinFileHeaderStmtsTest.java @@ -35,7 +35,7 @@ public class YinFileHeaderStmtsTest { public void testYinFileHeader() throws URISyntaxException { Module testModule = TestUtils.findModule(modules, "config").get(); - assertEquals(YangVersion.VERSION_1.toString(), testModule.getYangVersion()); + assertEquals(YangVersion.VERSION_1, testModule.getYangVersion()); assertEquals(new URI("urn:opendaylight:params:xml:ns:yang:controller:config"), testModule.getNamespace()); assertEquals("config", testModule.getPrefix()); } -- 2.36.6