Uploaded image for project: 'mdsal'
  1. mdsal
  2. MDSAL-124

Can not define a list as a subordinate element of a choice

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved
    • Resolution: Done
    • None
    • None
    • None
    • None
    • Operating System: Windows
      Platform: PC

    • 4798

    Description

      The yang model is like:

      choice darknessFactor {

      case knessFactorA{
      list darknessFactorAList {
      key "key-id";
      leaf key-id

      { type uint32; config true; description "The key id"; }

      }
      }
      case knessFactorB{
      leaf FactorBName

      { type uint32; config true; description "The darkness factor."; }

      }
      }

      When we define a list as a subordinate element of a choice,and register it in datachange service. When we invoke change.getCreatedData() in onDataChanged method it whill throw java.lang.NullPointerException:

      Error notifying listener com.zte.ngip.ipsdn.vipran.vr.provider.VrUniBindImp
      java.lang.NullPointerException
      at org.opendaylight.yangtools.binding.data.codec.impl.ChoiceNodeCodecContext.yangPathArgumentChild(ChoiceNodeCodecContext.java:144)[101:org.opendaylight.yangtools.binding-data-codec:0.7.2.Lithium-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.getCodecContextNode(BindingCodecContext.java:153)[101:org.opendaylight.yangtools.binding-data-codec:0.7.2.Lithium-SR2]
      at org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry.fromNormalizedNode(BindingNormalizedNodeCodecRegistry.java:182)[101:org.opendaylight.yangtools.binding-data-codec:0.7.2.Lithium-SR2]
      at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBinding(BindingToNormalizedNodeCodec.java:222)[151:org.opendaylight.controller.sal-binding-broker-impl:1.2.2.Lithium-SR2]
      at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker.toBinding(AbstractForwardedDataBroker.java:89)[151:org.opendaylight.controller.sal-binding-broker-impl:1.2.2.Lithium-SR2]
      at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatedDataChangeEvent.getCreatedData(AbstractForwardedDataBroker.java:187)[151:org.opendaylight.controller.sal-binding-broker-impl:1.2.2.Lithium-SR2]
      at com.zte.ngip.ipsdn.vipran.collaboration.AbstractDataChangeListener.onDataChanged(AbstractDataChangeListener.java:43)[216:com.zte.ngip.ipsdn.vipran.vr-provider:0.3.0.SNAPSHOT]
      at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatingDataChangeInvoker.onDataChanged(AbstractForwardedDataBroker.java:143)[151:org.opendaylight.controller.sal-binding-broker-impl:1.2.2.Lithium-SR2]
      at org.opendaylight.controller.cluster.datastore.DataChangeListener.dataChanged(DataChangeListener.java:66)[173:org.opendaylight.controller.sal-distributed-datastore:1.2.2.Lithium-SR2]
      at org.opendaylight.controller.cluster.datastore.DataChangeListener.handleReceive(DataChangeListener.java:39)[173:org.opendaylight.controller.sal-distributed-datastore:1.2.2.Lithium-SR2]
      at org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:34)[165:org.opendaylight.controller.sal-clustering-commons:1.2.2.Lithium-SR2]

      We think in method yangPathArgumentChild of org.opendaylight.yangtools.binding.data.codec.impl.ChoiceNodeCodecContext.java should add
      if(arg instanceof NodeIdentifierWithPredicates)

      { cazeProto = byYangCaseChild.get(new NodeIdentifier(arg.getNodeType())); }

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            filip.gregor@pantheon.tech Filip Gregor
            hou.jin@zte.com.cn Hou Jin
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: