Open main menu

CDOT Wiki β

Changes

Nexjexpress/JSON Adapter

2,723 bytes added, 15:26, 17 September 2010
Created page with '== JSON Adapter == === Goal=== Add ability to access NexJ Server objects as JSON via a RESTful web service <br/>'''current implementation''' <blockquote><pre> <?xml version="1.0"…'
== JSON Adapter ==
=== Goal===
Add ability to access NexJ Server objects as JSON via a RESTful web service
<br/>'''current implementation'''
<blockquote><pre>
<?xml version="1.0" encoding="utf-8"?>
<_Collection xmlns="http://www.nexj.com/xml" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns="http://www.nexj.com/xml">
<item xi:type="Person">
<_version>0</_version>
<_oid>104C083E8A4E8A4AD2BAF3011B6A393C97</_oid>
<_keys>primaryTelcom</_keys>
<_keys>primaryLanguage</_keys>
<_keys>initials</_keys>
<_values xi:nil="true"/>
<_values xi:nil="true"/>
<_values xi:nil="true"/>
<lastName>Bar</lastName>
<locking>0</locking>
<firstName>Foo</firstName>
<company>
<_version>0</_version>
<_oid>10209394A0D92641BC9E0FCF36DDAD1C23</_oid>
</company>
</item>
</_Collection>
</pre></blockquote>
'''JSON implementation'''
<blockquote><pre>
{
"_Collection": {
"item": {
"_keys": ["primaryTelcom", "primaryLanguage", "initials"],
"type": "Person",
"locking": 0,
"_oid": "104C083E8A4E8A4AD2BAF3011B6A393C97",
"_version": 0,
"_values": [
{"nil": true},
{"nil": true},
{"nil": true}
],
"firstName": "Foo",
"company": {
"_oid": "10209394A0D92641BC9E0FCF36DDAD1C23",
"_version": 0
},
"lastName": "Bar"
},
}
}
</pre></blockquote>

===Plan===
=== Phase 1: Design Proposal ===
* Get requirements from NexJ
* Incorporate requirements from NexJ into Design of JSON Adapater
* Proposal proposal for review, make changes as by NexJ until approved

====Phase 2: Coding ====
* JSONMarshaller
** Develop marshaller to transform NexJ Server Objects into JSON representation

* JSONUnmarshaller
** Develop an marshaller to transform JSON representation into NexJ Server Objects

* JSON Server
** Develop a JSON Server to expose NexJ Server objects in JSON

* Demo application that interacts with the Server using JSON
** Read Server Objects
** Update Server Objects
** Create Server objects

====Phase 3: Code Review 1 ====
* Send patch to NexJ for review

====Phase 4: Make Changes as per Code Review 1 ====
* Refactor JSONSever and TextServer to inherit from GenericCharacterStreamHTTPServer
* Optimize marshaling of nested Pair objects
* Rename variables and methods as per NexJ Developer's Guide

====Phase 5: Code Review 2 ====
* Send patch to NexJ for review

===Status===
Phase 1: done
Phase 2: done
Phase 3: done
Phase 4: done
Phase 5: On-going

===Links===
'''JSON''' <br/>
http://www.json.org <br/>

===Current Tasks===
1
edit