[MDSAL-199] Notification does not allow leafref to enum Created: 27/Sep/16  Updated: 09/Mar/18  Resolved: 24/Oct/16

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

Type: Bug
Reporter: Matej Petrak Assignee: Unassigned
Resolution: Duplicate Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issue Links:
Duplicate
duplicates MDSAL-181 Java binding v1: IAE from provideType... Resolved
External issue ID: 6815

 Description   

module IF-MIB {
yang-version 1;
namespace "urn:opendaylight:params:xml:ns:yang:nms:core:device-drivers:IF_MIB";
prefix "if-mib";

revision "2016-09-05"

{ description ""; }

container ifTable {
list ifEntry {
leaf ifAdminStatus {
type enumeration {
enum up

{ value 1; }

enum down

{ value 2; }

enum testing

{ value 3; }

}
}
}
}

notification linkDown {
leaf ifAdminStatus {
type leafref

{ path "/if-mib:ifTable/if-mib:ifEntry/if-mib:ifAdminStatus"; }

}
}
}

I am unable to generate java class for this yang model in version 1.1.0-SNAPSHOT. If I change notification keyword to containter for linkDown it's working, but with keyword notification I get this error message:

[ERROR] yang-to-sources: Unable to generate sources with org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl generator
java.lang.IllegalArgumentException: Failed to find leafref target: /if-mib:ifTable/if-mib:ifEntry/if-mib:ifOperStatus in module IF-MIB (QNameModule

{ns=urn:ietf:params:xml:ns:yang:smiv2:IF-MIB, rev=2000-06-14}

) [org.opendaylight.yangtools.sal.binding.yang.types.TypeProviderImpl@3209d497]
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145)
at org.opendaylight.yangtools.sal.binding.yang.types.TypeProviderImpl.provideTypeForLeafref(TypeProviderImpl.java:512)
at org.opendaylight.yangtools.sal.binding.yang.types.TypeProviderImpl.javaTypeForLeafrefOrIdentityRef(TypeProviderImpl.java:320)
at org.opendaylight.yangtools.sal.binding.yang.types.TypeProviderImpl.javaTypeForSchemaDefinitionType(TypeProviderImpl.java:213)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.resolveLeafSchemaNodeAsMethod(BindingGeneratorImpl.java:1445)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.addSchemaNodeToBuilderAsMethod(BindingGeneratorImpl.java:1141)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.resolveDataSchemaNodes(BindingGeneratorImpl.java:1078)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.containerToGenType(BindingGeneratorImpl.java:353)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.addSchemaNodeToBuilderAsMethod(BindingGeneratorImpl.java:1145)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.resolveDataSchemaNodes(BindingGeneratorImpl.java:1078)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.notificationsToGenType(BindingGeneratorImpl.java:589)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.moduleToGenTypes(BindingGeneratorImpl.java:283)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.generateTypes(BindingGeneratorImpl.java:258)
at org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl.generateSources(CodeGeneratorImpl.java:61)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.generateSourcesWithOneGenerator(YangToSourcesProcessor.java:362)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.generateSources(YangToSourcesProcessor.java:307)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.execute(YangToSourcesProcessor.java:96)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.conditionalExecute(YangToSourcesProcessor.java:117)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesMojo.execute(YangToSourcesMojo.java:119)
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.MojoExecutor.executeForkedExecutions(MojoExecutor.java:352)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:197)
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.IllegalArgumentException}

 Comments   
Comment by Peter Kajsa [ 28/Sep/16 ]

It seems like binding generator issue, so the bug has been moved to MD-SAL.

However, the error message says it cannot find if-mib:ifOperStatus, but in the yang model in the example is if-mib:ifAdminStatus only .. ?

Comment by Matej Petrak [ 29/Sep/16 ]

Yes, yang model in the example is for if-mib:ifAdminStatus, but I mistakenly attached wrong log, but it is same error message as for if-mib:ifOperStatus.

Comment by Martin Ciglan [ 24/Oct/16 ]

based on quick debug session, root cause is the same as in 6135

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