Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "RAP/Protocol"
(→Protocol Format) |
|||
Line 17: | Line 17: | ||
[ http://www.json.org/ ] | [ http://www.json.org/ ] | ||
− | === Message === | + | === Message === |
There has to be exactly one message per request and one per response. (May differ while in development.) | There has to be exactly one message per request and one per response. (May differ while in development.) | ||
Line 50: | Line 50: | ||
{ | { | ||
"action" : "create", | "action" : "create", | ||
− | "target" : | + | "target" : TargetId, |
− | "type" : | + | "type" : TypeName, |
"properties" : CreateProperties | "properties" : CreateProperties | ||
} | } | ||
Line 61: | Line 61: | ||
{ | { | ||
"action" : "set", | "action" : "set", | ||
− | "target" : | + | "target" : TargetId, |
"properties" : SetProperties | "properties" : SetProperties | ||
} | } | ||
Line 71: | Line 71: | ||
{ | { | ||
"action" : "destroy", | "action" : "destroy", | ||
− | "target" : | + | "target" : TargetId |
} | } | ||
</source> | </source> | ||
Line 80: | Line 80: | ||
{ | { | ||
"action" : "call", | "action" : "call", | ||
− | "target" : | + | "target" : TargetId, |
− | "method" : | + | "method" : MethodName, |
"properties" : CallProperties | "properties" : CallProperties | ||
} | } | ||
Line 91: | Line 91: | ||
{ | { | ||
"action" : "listen", | "action" : "listen", | ||
− | "target" : | + | "target" : TargetId, |
"properties" : ListenProperties | "properties" : ListenProperties | ||
} | } | ||
</source> | </source> | ||
+ | |||
+ | |||
+ | ==== TargetId ==== | ||
+ | |||
+ | The id of the target object as string | ||
+ | |||
+ | |||
+ | |||
+ | ==== TypeName ==== | ||
+ | |||
+ | The name of the type to create | ||
+ | |||
+ | |||
+ | ==== MethodName ==== | ||
+ | |||
+ | The name of the method to call | ||
== Data Type Reference == | == Data Type Reference == |
Revision as of 16:42, 20 January 2012
Contents
Introduction
NOTE: All information within this document is subject to change until further notice.
The RAP Protocol is the JSON-based format used within the HTTP-Requests from a RAP-client to a RAP-server. Compared with the previously used JavaScript and HTTP-fields based communication it will provide a number of advantages:
- It allowes to move all client-specific code from the server to the client.
- It produces human readable messages, easing debugging.
- It allowes the client to create more informative error messages.
- It allowes to replace either ends as long as they process and create valid RAP-protocol messages.
- It allowes to add client-independent client-side scripting.
The protocol is currently beeing developed in CVS HEAD. Server-to-Client communication is completed for all RWT-Widgets and will be part of the 1.5 release. Client-to-Server communication will possibly be implemented after 1.5.
Protocol Format
The protocol is based on the JSON fromat as described here: [ http://www.json.org/ ]
Message
There has to be exactly one message per request and one per response. (May differ while in development.)
{ "meta" : Meta, "operations" : [ Operation* ] }
Meta
{ "requestCounter" : <integer number> }
Operation
One of the following types:
CreateOperation | SetOperation | DestroyOperation | CallOperation | ListenOperation
Operations are processed in the order of their appearance in the message. Unkown operations will be ignored.
CreateOperation
{ "action" : "create", "target" : TargetId, "type" : TypeName, "properties" : CreateProperties }
SetOperation
{ "action" : "set", "target" : TargetId, "properties" : SetProperties }
DestroyOperation
{ "action" : "destroy", "target" : TargetId }
CallOperation
{ "action" : "call", "target" : TargetId, "method" : MethodName, "properties" : CallProperties }
ListenOperation
{ "action" : "listen", "target" : TargetId, "properties" : ListenProperties }
TargetId
The id of the target object as string
TypeName
The name of the type to create
MethodName
The name of the method to call
Data Type Reference
In addition to the datatypes recognized by JSON itself, the RAP protocol also uses these composed types:
Bounds
[ int left, int top, int witdh, int height ]
Note that left and top may be negative. No value may be null.
Color
[ int red, int green, int blue, int alpha ]
All values are to be between 0 and 255. The alpha value may be ignored by the client unless its 0.
Image
[ String url, int width, int height ] | null
Gradient
[ Color[] colors, int[] stops, boolean verticalFlag ] | null
The number of colors must match the number of stops. Each stop is a value between 0 and 1, and has to be equal or higher then the previous stop.