Uploaded image for project: 'yangtools'
  1. yangtools
  2. YANGTOOLS-1283

SchemaInferenceStack is cannot handle leafs under choice/case

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Highest Highest
    • 7.0.1
    • 7.0.0
    • model-util
    • None

      Attempting to resolve a leafref path via SchemaInferenceStack results in:

      java.lang.IllegalStateException: Unexpected current DeclaredCaseEffectiveStatement[qname=(urn:ietf:params:xml:ns:yang:ietf-te-topology?revision=2020-08-06)bundle] 
          at com.google.common.base.Preconditions.checkState (Preconditions.java:591) 
          at org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.exitToDataTree (SchemaInferenceStack.java:483) 
          at org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.resolveLocationPath (SchemaInferenceStack.java:573) 
          at org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.resolvePathExpression (SchemaInferenceStack.java:523) 
          at org.opendaylight.mdsal.binding.generator.impl.reactor.GeneratorReactor.strictResolvePath (GeneratorReactor.java:306) 
          at org.opendaylight.mdsal.binding.generator.impl.reactor.GeneratorReactor.resolveLeafref (GeneratorReactor.java:297) 
          at org.opendaylight.mdsal.binding.generator.impl.reactor.AbstractTypeObjectGenerator.bindTypeDefinition (AbstractTypeObjectGenerator.java:323) 
          at org.opendaylight.mdsal.binding.generator.impl.reactor.AbstractTypeAwareGenerator.bindTypeDefinition (AbstractTypeAwareGenerator.java:53) 
          at org.opendaylight.mdsal.binding.generator.impl.reactor.GeneratorReactor.bindTypeDefinition (GeneratorReactor.java:399) 
          at org.opendaylight.mdsal.binding.generator.impl.reactor.GeneratorReactor.bindTypeDefinition (GeneratorReactor.java:401) 
          at org.opendaylight.mdsal.binding.generator.impl.reactor.GeneratorReactor.bindTypeDefinition (GeneratorReactor.java:401) 
          at org.opendaylight.mdsal.binding.generator.impl.reactor.GeneratorReactor.execute (GeneratorReactor.java:155) 
          at org.opendaylight.mdsal.binding.generator.impl.DefaultBindingGenerator.generateFor (DefaultBindingGenerator.java:78) 
          at org.opendaylight.mdsal.binding.generator.impl.DefaultBindingGenerator.generateTypes (DefaultBindingGenerator.java:48) 
          at org.opendaylight.mdsal.binding.maven.api.gen.plugin.CodeGeneratorImpl.generateSources (CodeGeneratorImpl.java:79) 
          at org.opendaylight.yangtools.yang2sources.plugin.CodeGeneratorTask.execute (CodeGeneratorTask.java:49) 
          at org.opendaylight.yangtools.yang2sources.plugin.CodeGeneratorTask.execute (CodeGeneratorTask.java:24) 
          at org.opendaylight.yangtools.yang2sources.plugin.GeneratorTask.execute (GeneratorTask.java:36) 
          at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.generateSources (YangToSourcesProcessor.java:335) 
          at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.conditionalExecute (YangToSourcesProcessor.java:214) 
          at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesMojo.execute (YangToSourcesMojo.java:139)

      when faced with something like:

      module foo {
        container foo {
          choice foo {
            case foo {
              leaf foo {
                type leafref {
                  path ../../bar;
                }
              }
            }
          }
        }
      
        leaf bar {
          type string;
        }
      }

       

       

            rovarga Robert Varga
            rovarga Robert Varga
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: