From ed8cc45db25fae9daf61a5fb81fa0e681634420c Mon Sep 17 00:00:00 2001 From: Filip Gregor Date: Tue, 26 Apr 2016 10:54:54 +0200 Subject: [PATCH] Bug 5788: enum used as a key does not work fixed Qname check for enum as key from grouping in bindingGeneratorImpl Change-Id: Id6521d28a4b9aebcd1dfca2d33e8dfed68e9a269 Signed-off-by: Filip Gregor --- .../generator/impl/BindingGeneratorImpl.java | 2 +- .../stmt/parser/retest/CompilationTest.java | 15 ++++++++++++ .../resources/compilation/bug5788/foo.yang | 23 +++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 binding/mdsal-binding-java-api-generator/src/test/resources/compilation/bug5788/foo.yang diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.java b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.java index a3eb8cd50a..b028ed78cd 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.java +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.java @@ -1534,7 +1534,7 @@ public class BindingGeneratorImpl implements BindingGenerator { qname.getRevision()); final ModuleContext mc = genCtx.get(unionModule); returnType = mc.getTypedefs().get(typeDef.getPath()); - } else if (typeDef instanceof EnumTypeDefinition && BaseTypes.ENUMERATION_QNAME.equals(typeDef.getQName())) { + } else if (typeDef instanceof EnumTypeDefinition && typeDef.getBaseType() == null) { // Annonymous enumeration (already generated, since it is inherited via uses). LeafSchemaNode originalLeaf = (LeafSchemaNode) SchemaNodeUtils.getRootOriginalIfPossible(leaf); QName qname = originalLeaf.getQName(); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/stmt/parser/retest/CompilationTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/stmt/parser/retest/CompilationTest.java index 6b2c523277..67cd6b0e28 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/stmt/parser/retest/CompilationTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/stmt/parser/retest/CompilationTest.java @@ -574,6 +574,21 @@ public class CompilationTest extends BaseCompilationTest { cleanUp(sourcesOutputDir, compiledOutputDir); } + @Test + public void testBug5788() throws Exception { + final File sourcesOutputDir = new File(GENERATOR_OUTPUT_PATH + FS + "bug5788"); + assertTrue("Failed to create test file '" + sourcesOutputDir + "'", sourcesOutputDir.mkdir()); + final File compiledOutputDir = new File(COMPILER_OUTPUT_PATH + FS + "bug5788"); + assertTrue("Failed to create test file '" + compiledOutputDir + "'", compiledOutputDir.mkdir()); + + generateTestSources("/compilation/bug5788", sourcesOutputDir); + + // Test if sources are compilable + testCompilation(sourcesOutputDir, compiledOutputDir); + + cleanUp(sourcesOutputDir, compiledOutputDir); + } + /** * Test if class generated for node from grouping implements ChildOf. * diff --git a/binding/mdsal-binding-java-api-generator/src/test/resources/compilation/bug5788/foo.yang b/binding/mdsal-binding-java-api-generator/src/test/resources/compilation/bug5788/foo.yang new file mode 100644 index 0000000000..d62125e737 --- /dev/null +++ b/binding/mdsal-binding-java-api-generator/src/test/resources/compilation/bug5788/foo.yang @@ -0,0 +1,23 @@ +module foo { + namespace "urn:yang.foo"; + prefix "foo"; + + revision "2016-01-02" { + } + + grouping A { + leaf B { + type enumeration { + enum X {} + enum Y {} + } + } + } + + container C { + list D { + key "B"; + uses A; + } + } +} \ No newline at end of file -- 2.36.6