Difference between revisions of "Nexjexpress/JSON Adapter"

From CDOT Wiki
Jump to: navigation, search
(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)
Line 2: Line 2:
 
=== Goal===
 
=== Goal===
 
Add ability to access NexJ Server objects as JSON via a RESTful web service
 
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===
 
===Plan===
 
=== Phase 1: Design Proposal ===
 
=== Phase 1: Design Proposal ===

Revision as of 15:27, 17 September 2010

JSON Adapter

Goal

Add ability to access NexJ Server objects as JSON via a RESTful web service

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

Current Tasks