Nexjexpress/JSON Adapter
JSON Adapter
Goal
Add ability to access NexJ Server objects as JSON via a RESTful web service
current implementation
<?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>
JSON implementation
{ "_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" }, } }
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
http://www.json.org