[YANGTOOLS-1029] Attempting to emit multiple leave nodes in JSON causes nesting problem Created: 07/Oct/19 Updated: 03/Dec/19 Resolved: 07/Oct/19 |
|
| Status: | Resolved |
| Project: | yangtools |
| Component/s: | codecs |
| Affects Version/s: | None |
| Fix Version/s: | 3.0.6, 2.1.13, 4.0.2 |
| Type: | Bug | Priority: | Medium |
| Reporter: | Robert Varga | Assignee: | Robert Varga |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||
| Description |
|
This was discovered during java.io.IOException: Incomplete document at com.google.gson.stream.JsonWriter.close(JsonWriter.java:559) at org.opendaylight.yangtools.yang.data.codec.gson.JSONNormalizedNodeStreamWriter.closeWriter(JSONNormalizedNodeStreamWriter.java:319) at org.opendaylight.yangtools.yang.data.codec.gson.JSONNormalizedNodeStreamWriter$Exclusive.close(JSONNormalizedNodeStreamWriter.java:53) at org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter.close(NormalizedNodeWriter.java:116) at org.opendaylight.yangtools.yang.data.codec.gson.AbstractYT1027Test.toJSON(AbstractYT1027Test.java:158) at org.opendaylight.yangtools.yang.data.codec.gson.AbstractYT1027Test.testUint64Serialization(AbstractYT1027Test.java:116) which we're not getting on 3.0.x or 4.0.x. Those newer branches emit a single leaf, whose endNode() event ends up also closing the root, hence masking the above. An attempt to emit two leaf nodes, though, will result in: java.lang.IllegalStateException: Nesting problem. at com.google.gson.stream.JsonWriter.beforeName(JsonWriter.java:616) at com.google.gson.stream.JsonWriter.writeDeferredName(JsonWriter.java:401) at com.google.gson.stream.JsonWriter.value(JsonWriter.java:527) at org.opendaylight.yangtools.yang.data.codec.gson.NumberJSONCodec.writeValue(NumberJSONCodec.java:26) at org.opendaylight.yangtools.yang.data.codec.gson.NumberJSONCodec.writeValue(NumberJSONCodec.java:1) at org.opendaylight.yangtools.yang.data.codec.gson.JSONNormalizedNodeStreamWriter.writeValue(JSONNormalizedNodeStreamWriter.java:377) at org.opendaylight.yangtools.yang.data.codec.gson.JSONNormalizedNodeStreamWriter.scalarValue(JSONNormalizedNodeStreamWriter.java:359) 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.codec.gson.AbstractYT1027Test.toJSON(AbstractYT1027Test.java:157) at org.opendaylight.yangtools.yang.data.codec.gson.AbstractYT1027Test.testDecimalSerialization(AbstractYT1027Test.java:106) |