[YANGTOOLS-1087] Enum with underscores in name encoded without underscores Created: 27/Feb/20 Updated: 06/Mar/20 Resolved: 06/Mar/20 |
|
| Status: | Resolved |
| Project: | yangtools |
| Component/s: | None |
| Affects Version/s: | 2.1.8, 3.0.4, 4.0.7 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Medium |
| Reporter: | Tomas Janciga | Assignee: | Robert Varga |
| Resolution: | Won't Do | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Attachments: |
|
| Description |
|
Enum with a name which includes underscore is encoded as XML string without underscores. This issue has been reproduced with a notification containing leafref referencing leaf of enumeration type with an enum name containing underscores. Stack trace: WARN [Thread-1] (XMLStreamWriterUtils.java:92) - Provided node value RXEARLY did not have type BaseEnumerationType{path=AbsoluteSchemaPath{path=[(urn:o-ran:performance-management:1.0?revision=2019-02-04)performance-measurement-objects, (urn:o-ran:performance-management:1.0?revision=2019-02-04)rx-window-measurement-objects, (urn:o-ran:performance-management:1.0?revision=2019-02-04)measurement-object, (urn:o-ran:performance-management:1.0?revision=2019-02-04)enumeration]}, status=CURRENT, values=[EnumPairImpl{name=RX_ON_TIME, value=0}, EnumPairImpl{name=RX_EARLY, value=1}, EnumPairImpl{name=RX_LATE, value=2}, EnumPairImpl{name=RX_CORRUPT, value=3}, EnumPairImpl{name=RX_DUPL, value=4}, EnumPairImpl{name=RX_TOTAL, value=5}]} required by mapping. Using stream instead.
java.lang.ClassCastException: class org.opendaylight.yang.gen.v1.urn.o.ran.performance.management._1._0.rev190204.performance.measurement.objects.RxWindowMeasurementObjects$MeasurementObject cannot be cast to class java.lang.String (org.opendaylight.yang.gen.v1.urn.o.ran.performance.management._1._0.rev190204.performance.measurement.objects.RxWindowMeasurementObjects$MeasurementObject is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap')
at org.opendaylight.yangtools.yang.data.impl.codec.EnumStringCodec.serializeImpl(EnumStringCodec.java:25)
at org.opendaylight.yangtools.concepts.AbstractCodec.serialize(AbstractCodec.java:34)
at org.opendaylight.yangtools.yang.data.codec.xml.XMLStreamWriterUtils.serialize(XMLStreamWriterUtils.java:90)
at org.opendaylight.yangtools.yang.data.codec.xml.XMLStreamWriterUtils.encodeValue(XMLStreamWriterUtils.java:78)
at org.opendaylight.yangtools.yang.data.codec.xml.XMLStreamWriterUtils.encodeValue(XMLStreamWriterUtils.java:57)
at org.opendaylight.yangtools.yang.data.codec.xml.SchemaAwareXMLStreamNormalizedNodeStreamWriter.encodeValue(SchemaAwareXMLStreamNormalizedNodeStreamWriter.java:53)
at org.opendaylight.yangtools.yang.data.codec.xml.SchemaAwareXMLStreamNormalizedNodeStreamWriter.encodeValue(SchemaAwareXMLStreamNormalizedNodeStreamWriter.java:38)
at org.opendaylight.yangtools.yang.data.codec.xml.XMLStreamNormalizedNodeStreamWriter.writeValue(XMLStreamNormalizedNodeStreamWriter.java:132)
at org.opendaylight.yangtools.yang.data.codec.xml.SchemaAwareXMLStreamNormalizedNodeStreamWriter.scalarValue(SchemaAwareXMLStreamNormalizedNodeStreamWriter.java:159)
at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessAsSimpleNode(NormalizedNodeWriter.java:147)
at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:107)
at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter$OrderedNormalizedNodeWriter.writeMapEntryNode(NormalizedNodeWriter.java:277)
at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:214)
at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:103)
at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.writeChildren(NormalizedNodeWriter.java:190)
at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.wasProcessedAsCompositeNode(NormalizedNodeWriter.java:244)
at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.write(NormalizedNodeWriter.java:103)
at io.lighty.codecs.XmlNodeConverter.serializeRpc(XmlNodeConverter.java:127)
at io.lighty.netconf.device.requests.notification.NotificationOperation.sendMessage(NotificationOperation.java:79)
at io.lighty.netconf.device.requests.notification.NotificationPublishServiceImpl.publish(NotificationPublishServiceImpl.java:32)
at tech.pantheon.oran.ru.simulator.OranNotificationService.run(OranNotificationService.java:81)
The set of used YANG models can be found at: https://wiki.onap.org/display/DW/O-RAN+Fronthaul+Specification+1.0 Issue can be reproduced with notification: measurement-result-stats, which is defined in model: |
| Comments |
| Comment by Robert Varga [ 06/Mar/20 ] |
|
tjanciga please provide the model (or at least a minimal example) and the yangtools version in use. |
| Comment by Tomas Janciga [ 06/Mar/20 ] |
|
OK, I've updated affected versions and added links to the YANG models used. |
| Comment by Robert Varga [ 06/Mar/20 ] |
|
So the error is quite obvious: java.lang.ClassCastException: class org.opendaylight.yang.gen.v1.urn.o.ran.performance.management._1._0.rev190204.performance.measurement.objects.RxWindowMeasurementObjects$MeasurementObject cannot be cast to class java.lang.String So what is a Binding class doing in a NormalizedNode value? Check your application logic.
|