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

org.opendaylight.mdsal.binding.model.ietf.rfc8776 generated classes from typedef -> typedef -> enumeration

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Medium Medium
    • 8.0.0
    • None
    • Binding codegen

      In ietf-te-types yang model there is a type definition “te-common-status” which type is enumeration. This type definition is used to declare 2 another type definitions:

        typedef te-oper-status {
          type te-common-status;
          description
            "Defines a type representing the operational status of
             a TE resource.";
        }
      
        typedef te-admin-status {
          type te-common-status;
          description
            "Defines a type representing the administrative status of
             a TE resource.";
        }
      

      The generated classes from te-oper-status (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev200610. TeOperStatus) and te-admin-status (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev200610. TeAdminStatus) are empty Class. Shouldn’t they be Enum instead ? I ask this question because when I try to serialize object using them I got the following exception

      Exception in thread "main" java.lang.IllegalArgumentException
                  at com.google.common.base.Preconditions.checkArgument(Preconditions.java:128)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.EnumerationCodec.loader(EnumerationCodec.java:38)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.ValueTypeCodec.getCodecLoader(ValueTypeCodec.java:87)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.ValueTypeCodec.getCodecFor(ValueTypeCodec.java:65)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext.getCodecForBindingClass(BindingCodecContext.java:448)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext.getCodec(BindingCodecContext.java:421)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext.getLeafNodesUsingReflection(BindingCodecContext.java:371)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext.getLeafNodes(BindingCodecContext.java:356)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.DataObjectCodecContext.<init>(DataObjectCodecContext.java:112)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.DataObjectCodecContext.<init>(DataObjectCodecContext.java:104)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.ContainerNodeCodecContext.<init>(ContainerNodeCodecContext.java:20)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.DataContainerCodecPrototype.createInstance(DataContainerCodecPrototype.java:261)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.DataContainerCodecPrototype.loadInstance(DataContainerCodecPrototype.java:245)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.DataContainerCodecPrototype.get(DataContainerCodecPrototype.java:238)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.DataObjectCodecContext.streamChild(DataObjectCodecContext.java:266)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.BindingToNormalizedStreamWriter.enter(BindingToNormalizedStreamWriter.java:80)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.BindingToNormalizedStreamWriter.startContainerNode(BindingToNormalizedStreamWriter.java:179)
                  at org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev200806.networks.network.link.Te$$$streamer.serialize(Unknown Source)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.DataObjectStreamer.streamContainer(DataObjectStreamer.java:90)
                  at org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.topology.rev200806.Link1$$$streamer.serialize(Unknown Source)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext$DataObjectSerializerProxy.serialize(BindingCodecContext.java:122)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.DataObjectStreamer.emitAugmentation(DataObjectStreamer.java:176)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.DataObjectStreamer.streamAugmentations(DataObjectStreamer.java:63)
                  at org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link$$$streamer.serialize(Unknown Source)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.DataObjectStreamer.commonStreamList(DataObjectStreamer.java:153)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.DataObjectStreamer.streamMap(DataObjectStreamer.java:133)
                  at org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1$$$streamer.serialize(Unknown Source)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext$DataObjectSerializerProxy.serialize(BindingCodecContext.java:122)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.DataObjectStreamer.emitAugmentation(DataObjectStreamer.java:176)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.DataObjectStreamer.streamAugmentations(DataObjectStreamer.java:63)
                  at org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network$$$streamer.serialize(Unknown Source)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.DataObjectStreamer.commonStreamList(DataObjectStreamer.java:153)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.DataObjectStreamer.streamMap(DataObjectStreamer.java:133)
                  at org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks$$$streamer.serialize(Unknown Source)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext$DataObjectSerializerProxy.serialize(BindingCodecContext.java:122)
                  at org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext.toNormalizedNode(BindingCodecContext.java:506)
                  at org.opendaylight.mdsal.binding.dom.codec.spi.ForwardingBindingDOMCodecServices.toNormalizedNode(ForwardingBindingDOMCodecServices.java:67)
                  at org.test.Serialization.serialize(Serialization.java:136)
                  at org.test.Serialization.main(Serialization.java:147)
      

      I have attached to this mail a code sample to reproduce the problem.

            rovarga Robert Varga
            manuedelf Emmanuelle Delfour
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: