[MDSAL-133] Augmenting a choice without a case from another module causes NPE Created: 04/Mar/16  Updated: 09/Mar/18  Resolved: 03/May/16

Status: Resolved
Project: mdsal
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug
Reporter: Lori Jakab Assignee: Filip Gregor
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


External issue ID: 5461

 Description   

I tried to add the following grouping to odl-lisp-proto.yang (https://git.opendaylight.org/gerrit/gitweb?p=lispflowmapping.git;a=blob;f=mappingservice/lisp-proto/src/main/yang/odl-lisp-proto.yang;h=58bf372611c9937ec6c9a373966a3c8275f548a4;hb=HEAD):

grouping augmented-lisp-address {
uses lisp-address:lisp-address {
augment "address" {
leaf ipv4-binary

{ type bin:ipv4-address-binary; description "IPv4 (binary) address."; }

}
}
}

I'm not saying that what I'm trying to do is correct, but I recall Robert saying that a NPE is generally a bug, so here's the resulting trace, when building:

[INFO] yang-to-sources: Sources will be generated to /Users/lojakab/src/opendaylight/lispflowmapping/mappingservice/lisp-proto/target/generated-sources/mdsal-binding
[ERROR] yang-to-sources: Unable to generate sources with org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl generator
java.lang.NullPointerException
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.generateTypesFromAugmentedChoiceCases(BindingGeneratorImpl.java:1333)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.usesAugmentationToGenTypes(BindingGeneratorImpl.java:873)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.processUsesAugments(BindingGeneratorImpl.java:377)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.groupingToGenType(BindingGeneratorImpl.java:709)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.groupingsToGenTypes(BindingGeneratorImpl.java:684)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.moduleToGenTypes(BindingGeneratorImpl.java:262)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.generateTypes(BindingGeneratorImpl.java:240)
at org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl.generateSources(CodeGeneratorImpl.java:61)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.generateSourcesWithOneGenerator(YangToSourcesProcessor.java:340)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.generateSources(YangToSourcesProcessor.java:285)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.execute(YangToSourcesProcessor.java:95)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesMojo.execute(YangToSourcesMojo.java:116)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
[ERROR] yang-to-sources: One or more code generators failed, including failed list(generatorClass=exception)

{org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl=java.lang.NullPointerException}

 Comments   
Comment by Martin Ciglan [ 07/Mar/16 ]

Hi

Could you confirm this is Lithium code base? Thank you

Comment by Lori Jakab [ 07/Mar/16 ]

I haven't checked Lithium, but it happens to me in the current master (Boron).

Comment by Martin Ciglan [ 07/Mar/16 ]

Thanks for additional info, I will re-check this use case and let you know.
If this is a blocker for you, please try to wrap your leaf with case statement.

Comment by Lori Jakab [ 07/Mar/16 ]

Hmm, I just tried wrapping the leaf in a 'case', but it doesn't help... I get a slightly different trace though:

[ERROR] yang-to-sources: Unable to generate sources with org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl generator
java.lang.NullPointerException
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.createDescription(BindingGeneratorImpl.java:2141)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.addRawInterfaceDefinition(BindingGeneratorImpl.java:1809)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.addDefaultInterfaceDefinition(BindingGeneratorImpl.java:1732)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.addDefaultInterfaceDefinition(BindingGeneratorImpl.java:1704)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.generateTypesFromAugmentedChoiceCases(BindingGeneratorImpl.java:1305)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.usesAugmentationToGenTypes(BindingGeneratorImpl.java:873)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.processUsesAugments(BindingGeneratorImpl.java:377)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.groupingToGenType(BindingGeneratorImpl.java:709)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.groupingsToGenTypes(BindingGeneratorImpl.java:684)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.moduleToGenTypes(BindingGeneratorImpl.java:262)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.generateTypes(BindingGeneratorImpl.java:240)
at org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl.generateSources(CodeGeneratorImpl.java:61)

Comment by Martin Ciglan [ 07/Mar/16 ]

Thank you for your feedback, we will have to look into it and let you know.

Comment by Filip Gregor [ 16/Mar/16 ]

Proposed fix https://git.opendaylight.org/gerrit/#/c/36249/

Comment by Lori Jakab [ 26/Apr/16 ]

(In reply to Filip Gregor from comment #6)
> Proposed fix https://git.opendaylight.org/gerrit/#/c/36249/

Patch set 4 fixes the bug.

Comment by Robert Varga [ 03/May/16 ]

Be: https://git.opendaylight.org/gerrit/38309

Comment by Lori Jakab [ 03/May/16 ]

Thanks everyone!

Generated at Wed Feb 07 20:08:43 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.