Updated Json Stream Writer to use gson JsonWriter. 74/13574/14
authorPeter Kajsa <pkajsa@cisco.com>
Thu, 11 Dec 2014 15:43:02 +0000 (16:43 +0100)
committerTony Tkacik <ttkacik@cisco.com>
Mon, 16 Feb 2015 11:31:32 +0000 (11:31 +0000)
commitdcbf1f7b9b958a345204494514d568b59aca6096
tree83335761b80570ad630f057363083cadb6a147ec
parent57d0869957b54e0f05fd5e141341f58f5472cf22
Updated Json Stream Writer to use gson JsonWriter.

Custom implementation of JSON writing methods has been replaced with native
com.google.gson.stream.JsonWriter methods. Among other things, this rework
resolves issues (bugs) with escape characters in string values being written
into Json (e.g. new lines in strings etc.).

Important notice: com.google.gson.stream.JsonWriter enforces that output
must start with '{' and end with '}', otherwise
'java.lang.IllegalStateException:Nesting problem' is thrown.

So our original output looks for an example like:
"my-module:top-container": {
...
}

Now, new output looks as following:
{
  "my-module:top-container": {
  ...
  }
}
.

Change-Id: I8073285d003015721d54887ddbff0484d7db89c8
Signed-off-by: Peter Kajsa <pkajsa@cisco.com>
19 files changed:
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/AbstractJSONCodec.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/BooleanJSONCodec.java [new file with mode: 0644]
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONCodec.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONCodecFactory.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONLeafrefCodec.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONNormalizedNodeStreamWriter.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterContext.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterInvisibleContext.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterListContext.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterNamedObjectContext.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterObjectContext.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterRootContext.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterURIContext.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStringIdentityrefCodec.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStringInstanceIdentifierCodec.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonWriterFactory.java [new file with mode: 0644]
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/NumberJSONCodec.java [moved from yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/UnquotedJSONCodec.java with 58% similarity]
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/QuotedJSONCodec.java
yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/NormalizedNodeToJsonStreamTest.java