[YANGTOOLS-328] Inner grouping used in outer grouping's choice case Created: 30/Sep/14  Updated: 10/Apr/22  Resolved: 27/Oct/14

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

Type: Bug
Reporter: Adam Brcek Assignee: Martin Ciglan
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: 2117

 Description   

Error is thrown when inner grouping is used in outer grouping's choice case.

yang:

grouping IP-SOURCE-NETWORK {
grouping IP-SOURCE-HOST {
choice ip-src-address-or-name {
mandatory true;
leaf ip-source-host-address

{ type inet:ip-address; }

leaf ip-source-host-name

{ if-feature spf:host-by-name; type inet:domain-name; }

}
}

choice source-address-host-group {
mandatory true;
case source-ip {
leaf ip-source-address

{ type inet:ip-address; mandatory true; }

leaf ip-source-mask

{ type inet:ip-address; mandatory true; }

}
leaf ip-source-any

{ type empty; }

case source-host

{ uses IP-SOURCE-HOST; }

case source-group {
if-feature spf:ip-address-groups;
leaf ip-source-group

{ type spf:ip-address-group-ref; }

}
}
}

build error:

[DEBUG] No node matching (urn:cisco:params:xml:ns:yang:spf-ip?revision=2013-09-03)IP-SOURCE-HOST found in grouping GroupingDefinitionImpl[qname=(urn:cisco:params:xml:ns:yang:spf-ip?revision=2
013-09-03)IP-SOURCE-NETWORK]
[DEBUG] No node matching [(urn:cisco:params:xml:ns:yang:spf-ip?revision=2013-09-03)IP-SOURCE-NETWORK, (urn:cisco:params:xml:ns:yang:spf-ip?revision=2013-09-03)IP-SOURCE-HOST] found in module
ModuleImpl[name=spf-ip, namespace=urn:cisco:params:xml:ns:yang:spf-ip, revision=Tue Sep 03 00:00:00 CEST 2013, prefix=spf-ip, yangVersion=1]
[DEBUG] No node matching (urn:cisco:params:xml:ns:yang:spf-ip?revision=2013-09-03)IP-SOURCE-HOST found in grouping GroupingDefinitionImpl[qname=(urn:cisco:params:xml:ns:yang:spf-ip?revision=2
013-09-03)IP-SOURCE-NETWORK]
[DEBUG] No node matching [(urn:cisco:params:xml:ns:yang:spf-ip?revision=2013-09-03)IP-SOURCE-NETWORK, (urn:cisco:params:xml:ns:yang:spf-ip?revision=2013-09-03)IP-SOURCE-HOST] found in module
ModuleImpl[name=spf-ip, namespace=urn:cisco:params:xml:ns:yang:spf-ip, revision=Tue Sep 03 00:00:00 CEST 2013, prefix=spf-ip, yangVersion=1]
[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.generateTypesFromChoiceCases(BindingGeneratorImpl.java:1236)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.choiceToGeneratedType(BindingGeneratorImpl.java:1160)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.addSchemaNodeToBuilderAsMethod(BindingGeneratorImpl.java:1116)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.resolveDataSchemaNodes(BindingGeneratorImpl.java:1045)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.groupingToGenType(BindingGeneratorImpl.java:707)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.groupingsToGenTypes(BindingGeneratorImpl.java:685)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.addDefaultInterfaceDefinition(BindingGeneratorImpl.java:1642)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.addDefaultInterfaceDefinition(BindingGeneratorImpl.java:1603)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.groupingToGenType(BindingGeneratorImpl.java:705)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.groupingsToGenTypes(BindingGeneratorImpl.java:685)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.moduleToGenTypes(BindingGeneratorImpl.java:259)
at org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl.generateTypes(BindingGeneratorImpl.java:237)
at org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl.generateSources(CodeGeneratorImpl.java:62)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.generateSourcesWithOneGenerator(YangToSourcesProcessor.java:300)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.generateSources(YangToSourcesProcessor.java:243)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.execute(YangToSourcesProcessor.java:84)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesMojo.execute(YangToSourcesMojo.java:122)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)



 Comments   
Comment by Martin Ciglan [ 23/Oct/14 ]

fix under test, will come back with result soon

Comment by Martin Ciglan [ 24/Oct/14 ]

https://git.opendaylight.org/gerrit/#/c/12217/

fix pushed

Comment by Vratko Polak [ 24/Oct/14 ]

> https://git.opendaylight.org/gerrit/#/c/12217/

Just out of curiosity, will this fix also situations with 3 or more nested groupings? I do not see unit tests for that.

Comment by Martin Ciglan [ 24/Oct/14 ]

Yes, recursion takes care about it.
I tested it with n inner groupings, expanding given example:

.
.
.
grouping IP-SOURCE-NETWORK {
grouping IP-SOURCE-HOST {
grouping IP-SOURCE-HOST2 {
choice ip-src-address-or-name {
mandatory true;
leaf ip-source-host-address

{ type string; }

leaf ip-source-host-name

{ if-feature spf:host-by-name; type string; }

}
}
uses IP-SOURCE-HOST2;
}
.
.
.

}

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