From 82ad3564487f7f8805d0fa4e951edc87acf67cf8 Mon Sep 17 00:00:00 2001 From: Ray Lee Date: Tue, 2 Aug 2016 00:51:30 -0700 Subject: [PATCH] DRYD-23: Implement JSON to XML conversion. --- .../src/main/webapp/WEB-INF/web.xml | 13 + services/common/pom.xml | 6 + .../common/xmljson/ConversionUtils.java | 107 +++++ .../services/common/xmljson/JsonField.java | 94 +++++ .../common/xmljson/JsonToXmlFilter.java | 87 ++++ .../xmljson/JsonToXmlStreamConverter.java | 366 ++++++++++++++++ .../services/common/xmljson/RequestUtils.java | 11 + .../services/common/xmljson/XmlNode.java | 389 ++++++++++++++++++ .../xmljson/XmlToJsonStreamConverter.java | 341 +++++++++++++-- .../common/xmljson/parsetree/Node.java | 186 --------- .../xmljson/test/ConversionUtilsTest.java | 55 +++ .../common/xmljson/test/JsonFieldTest.java | 34 ++ .../test/JsonToXmlStreamConverterTest.java | 84 ++++ .../common/xmljson/test/RequestUtilsTest.java | 18 + .../common/xmljson/test/XmlNodeTest.java | 133 ++++++ .../test/XmlToJsonStreamConverterTest.java | 12 +- .../test-data/xmljson/boolean-json.json | 10 + .../test-data/xmljson/boolean-json.xml | 6 + .../test-data/xmljson/collectionobject.json | 115 +++++- .../test-data/xmljson/empty-json.json | 1 + .../test-data/xmljson/empty-json.xml | 1 + .../test-data/xmljson/numeric-json.json | 12 + .../test-data/xmljson/numeric-json.xml | 8 + .../resources/test-data/xmljson/record.json | 4 + .../resources/test-data/xmljson/record.xml | 1 + services/report/pom.xml | 5 + 26 files changed, 1863 insertions(+), 236 deletions(-) create mode 100644 services/common/src/main/java/org/collectionspace/services/common/xmljson/ConversionUtils.java create mode 100644 services/common/src/main/java/org/collectionspace/services/common/xmljson/JsonField.java create mode 100644 services/common/src/main/java/org/collectionspace/services/common/xmljson/JsonToXmlFilter.java create mode 100644 services/common/src/main/java/org/collectionspace/services/common/xmljson/JsonToXmlStreamConverter.java create mode 100644 services/common/src/main/java/org/collectionspace/services/common/xmljson/XmlNode.java delete mode 100644 services/common/src/main/java/org/collectionspace/services/common/xmljson/parsetree/Node.java create mode 100644 services/common/src/test/java/org/collectionspace/services/common/xmljson/test/ConversionUtilsTest.java create mode 100644 services/common/src/test/java/org/collectionspace/services/common/xmljson/test/JsonFieldTest.java create mode 100644 services/common/src/test/java/org/collectionspace/services/common/xmljson/test/JsonToXmlStreamConverterTest.java create mode 100644 services/common/src/test/java/org/collectionspace/services/common/xmljson/test/XmlNodeTest.java create mode 100644 services/common/src/test/resources/test-data/xmljson/boolean-json.json create mode 100644 services/common/src/test/resources/test-data/xmljson/boolean-json.xml create mode 100644 services/common/src/test/resources/test-data/xmljson/empty-json.json create mode 100644 services/common/src/test/resources/test-data/xmljson/empty-json.xml create mode 100644 services/common/src/test/resources/test-data/xmljson/numeric-json.json create mode 100644 services/common/src/test/resources/test-data/xmljson/numeric-json.xml diff --git a/services/JaxRsServiceProvider/src/main/webapp/WEB-INF/web.xml b/services/JaxRsServiceProvider/src/main/webapp/WEB-INF/web.xml index c375f1830..5e785a495 100644 --- a/services/JaxRsServiceProvider/src/main/webapp/WEB-INF/web.xml +++ b/services/JaxRsServiceProvider/src/main/webapp/WEB-INF/web.xml @@ -90,6 +90,19 @@ CSpaceFilter /* + + + + JsonToXmlFilter + org.collectionspace.services.common.xmljson.JsonToXmlFilter + + + + JsonToXmlFilter + /* + \ No newline at end of file diff --git a/services/common/src/test/resources/test-data/xmljson/numeric-json.json b/services/common/src/test/resources/test-data/xmljson/numeric-json.json new file mode 100644 index 000000000..12092150f --- /dev/null +++ b/services/common/src/test/resources/test-data/xmljson/numeric-json.json @@ -0,0 +1,12 @@ +{ + "document": { + "@name": "examples", + "ns:examples_common": { + "@xmlns:ns": "http://collectionspace.org/services/example", + "integer": 123, + "negInt": -8, + "float": 3.14159, + "negFloat": -341.24 + } + } +} diff --git a/services/common/src/test/resources/test-data/xmljson/numeric-json.xml b/services/common/src/test/resources/test-data/xmljson/numeric-json.xml new file mode 100644 index 000000000..6c4026e30 --- /dev/null +++ b/services/common/src/test/resources/test-data/xmljson/numeric-json.xml @@ -0,0 +1,8 @@ + + + 123 + -8 + 3.14159 + -341.24 + + diff --git a/services/common/src/test/resources/test-data/xmljson/record.json b/services/common/src/test/resources/test-data/xmljson/record.json index a008f4ddb..6e6b8d081 100644 --- a/services/common/src/test/resources/test-data/xmljson/record.json +++ b/services/common/src/test/resources/test-data/xmljson/record.json @@ -30,6 +30,7 @@ "repeating scalar field value 4" ] }, + "empty": null, "repeatstruct": { "innerstruct": [ { @@ -52,6 +53,9 @@ } } ] + }, + "emptytop": { + "emptynested": null } } } diff --git a/services/common/src/test/resources/test-data/xmljson/record.xml b/services/common/src/test/resources/test-data/xmljson/record.xml index ff18c8aaf..8a613c5d7 100644 --- a/services/common/src/test/resources/test-data/xmljson/record.xml +++ b/services/common/src/test/resources/test-data/xmljson/record.xml @@ -10,6 +10,7 @@ This is a scalar field value + A value in a structured field Another structured field value diff --git a/services/report/pom.xml b/services/report/pom.xml index df07a56f8..22d226d01 100644 --- a/services/report/pom.xml +++ b/services/report/pom.xml @@ -24,6 +24,11 @@ itext com.lowagie + + + jackson-core + com.fasterxml.jackson.core +