Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "RAP/Protocol"
m |
(Changed grammar notation) |
||
Line 18: | Line 18: | ||
=== Message === | === Message === | ||
− | <source lang="javascript"> | + | |
+ | There has to be exactly one message per request and one per response. (May differ while in development.) | ||
+ | |||
+ | <source lang="javascript"> | ||
{ | { | ||
− | "meta" : | + | "meta" : Meta, |
− | "operations" : | + | "operations" : [ Operation* ] |
} | } | ||
</source> | </source> | ||
− | + | === Meta === | |
− | |||
<source lang="javascript"> | <source lang="javascript"> | ||
− | { | + | { |
− | "requestCounter" : | + | "requestCounter" : <integer number> |
} | } | ||
</source> | </source> | ||
− | === | + | === Operation === |
+ | |||
+ | One of the following types: | ||
+ | <source lang="javascript"> | ||
+ | CreateOperation | SetOperation | DestroyOperation | CallOperation | ListenOperation | ExecuteScriptOperation | ||
+ | </source> | ||
− | + | Operations are processed in the order of their appearance in the message. Unkown operations will be ignored. | |
− | ==== | + | ==== CreateOperation ==== |
<source lang="javascript"> | <source lang="javascript"> | ||
{ | { | ||
"action" : "create", | "action" : "create", | ||
− | "target" : | + | "target" : <target id as string>, |
"type" : String rwt-type, | "type" : String rwt-type, | ||
− | "properties" : | + | "properties" : CreateProperties |
} | } | ||
</source> | </source> | ||
− | ==== | + | ==== SetOperation ==== |
<source lang="javascript"> | <source lang="javascript"> | ||
{ | { | ||
"action" : "set", | "action" : "set", | ||
− | "target" : | + | "target" : <target id as string>, |
− | "properties" : | + | "properties" : SetProperties |
} | } | ||
</source> | </source> | ||
− | ==== | + | ==== DestroyOperation ==== |
<source lang="javascript"> | <source lang="javascript"> | ||
{ | { | ||
"action" : "destroy", | "action" : "destroy", | ||
− | "target" : | + | "target" : <target id as string> |
} | } | ||
</source> | </source> | ||
− | ==== | + | ==== CallOperation ==== |
<source lang="javascript"> | <source lang="javascript"> | ||
{ | { | ||
"action" : "call", | "action" : "call", | ||
− | "target" : | + | "target" : <target id as string>, |
− | "method" : | + | "method" : <method name as string>, |
− | "properties" : | + | "properties" : CallProperties |
} | } | ||
</source> | </source> | ||
− | ==== | + | ==== ListenOperation ==== |
<source lang="javascript"> | <source lang="javascript"> | ||
{ | { | ||
"action" : "listen", | "action" : "listen", | ||
− | "target" : | + | "target" : <target id as string>, |
− | "properties" : | + | "properties" : ListenProperties |
} | } | ||
</source> | </source> | ||
− | ==== | + | ==== ExecuteScriptOperation ==== |
<source lang="javascript"> | <source lang="javascript"> | ||
{ | { | ||
"action" : "executeScript", | "action" : "executeScript", | ||
− | "target" : | + | "target" : <target id as string>, |
− | "scriptType" : | + | "scriptType" : <script type as string> |
− | "content" : | + | "content" : <script code as string> |
} | } | ||
</source> | </source> |
Revision as of 11:08, 16 December 2011
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 | ExecuteScriptOperation
Operations are processed in the order of their appearance in the message. Unkown operations will be ignored.
CreateOperation
{ "action" : "create", "target" : <target id as string>, "type" : String rwt-type, "properties" : CreateProperties }
SetOperation
{ "action" : "set", "target" : <target id as string>, "properties" : SetProperties }
DestroyOperation
{ "action" : "destroy", "target" : <target id as string> }
CallOperation
{ "action" : "call", "target" : <target id as string>, "method" : <method name as string>, "properties" : CallProperties }
ListenOperation
{ "action" : "listen", "target" : <target id as string>, "properties" : ListenProperties }
ExecuteScriptOperation
{ "action" : "executeScript", "target" : <target id as string>, "scriptType" : <script type as string> "content" : <script code as string> }
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.