[YANGTOOLS-1100] Leafref path resolution fails to account for choice/case nodes Created: 11/Mar/20  Updated: 17/Apr/20  Resolved: 17/Apr/20

Status: Resolved
Project: yangtools
Component/s: model-util
Affects Version/s: None
Fix Version/s: 5.0.0, 4.0.8, 3.0.11

Type: Bug Priority: Medium
Reporter: Miroslav Kovac Assignee: Miroslav Kovac
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

for module:

module a {
  yang-version 1.1;
  namespace "a";
  prefix a;
  container foo {
    list scheduler-node {
      key "name";
      leaf name {
        type string;
      }
      choice children-type {
        case scheduler-node {
          list child-scheduler-nodes {
            key "name";
            leaf name {
              type leafref {
                  path '../../../a:scheduler-node/'
                   + 'a:name';
              }
            }
          }
        }
      }
    }
  }
}

AbstractTypeProvider.provideTypeForLeafref() will fail with:

java.lang.IllegalArgumentException: Failed to find leafref target: ../../../a:scheduler-node/a:name in module mdsal532 (QNameModule{ns=a})	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:459)
	at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.provideTypeForLeafref(AbstractTypeProvider.java:553)
	at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForLeafrefOrIdentityRef(AbstractTypeProvider.java:301)
	at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForSchemaDefinitionType(AbstractTypeProvider.java:198)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.resolveLeafSchemaNodeAsMethod(AbstractTypeGenerator.java:1441)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.addSchemaNodeToListBuilders(AbstractTypeGenerator.java:1840)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.listToGenType(AbstractTypeGenerator.java:346)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.addSchemaNodeToBuilderAsMethod(AbstractTypeGenerator.java:1145)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.resolveDataSchemaNodes(AbstractTypeGenerator.java:1092)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.generateTypesFromChoiceCases(AbstractTypeGenerator.java:1266)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.choiceToGeneratedType(AbstractTypeGenerator.java:1184)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.addSchemaNodeToListBuilders(AbstractTypeGenerator.java:1855)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.listToGenType(AbstractTypeGenerator.java:346)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.addSchemaNodeToBuilderAsMethod(AbstractTypeGenerator.java:1145)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.resolveDataSchemaNodes(AbstractTypeGenerator.java:1092)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.containerToGenType(AbstractTypeGenerator.java:308)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.addSchemaNodeToBuilderAsMethod(AbstractTypeGenerator.java:1143)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.resolveDataSchemaNodes(AbstractTypeGenerator.java:1092)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.moduleToGenTypes(AbstractTypeGenerator.java:248)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.<init>(AbstractTypeGenerator.java:205)
	at org.opendaylight.mdsal.binding.generator.impl.CodegenTypeGenerator.<init>(CodegenTypeGenerator.java:33)
	at org.opendaylight.mdsal.binding.generator.impl.DefaultBindingGenerator.generateFor(DefaultBindingGenerator.java:76)
	at org.opendaylight.mdsal.binding.generator.impl.DefaultBindingGenerator.generateFor(DefaultBindingGenerator.java:43)


 Comments   
Comment by Miroslav Kovac [ 13/Mar/20 ]

This bug has to be fixed in yangtools in schemaContextUtil class. Fix has been pushed to https://git.opendaylight.org/gerrit/c/yangtools/+/88422

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