This was discovered during YANGTOOLS-1027 backport to 2.1.x. On that branch leaf nodes do not emit an endNode() event, hence when they are written out and the stream is closed, we get:
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)
- relates to
-
YANGTOOLS-1046 The generated Json is missing a closing curly bracket
- Resolved