Core web service API
- Understand the object model. All grouper-ws services are operations based on simple data structures. The structures support Strings, ints, arrays, and structure references.
- Core web service API
- Example structure (only "getters" and "setters" are applicable properties)
- Each operation has many samples (authmated captures, versioned, and up to date). Here is an example
- Most options has a sensible default (e.g. MemberFilter defaults to All members)
- Lookup objects in various (consistent) ways. e.g. to delete a group, you can pass the name or uuid of the group.
- Decide if you are using SOAP or REST (this is real REST, not Axis HTTP/XML)
- Both SOAP and REST support the same API
- Inside SOAP and REST, each operation has two levels of complexity, the normal one, and the Lite one.
- Normal operation: can usually be batched (support a list of inputs, e.g. add multiple groups at once), supports complex inputs (arrays or structures)
- Lite operation: supports only inputs of scalars (no structures, no arrays... only Strings, ints, etc). In REST this also means that the request can be sent via query string only
- If SOAP:
- Implement based on WSDL. Note, you cant get the 1.4 WSDL out of a 2.0 server, since it has backwards compatible changes from 1.5 and 1.6. You could get this 1.4 WSDL from SVN though...
- If REST:
- Decide what format you want to send and receive data. grouper-ws supports XHTML, XML, and JSON, as well as query strings for input (in URL or message body)
- For example, in the URL you can set the content type you want back:
- Or you can set the content type of the request and it will use that for the response
- There are many samples
- Understand versioning
Note the WS is included in the Grouper Installer. (it will build and configure it). The build script for grouper-ws is pretty basic. Generally just do the default (dist). There is also an "ant grouper" target to build a new grouper jar, and "ant quick" to do everything but generate the Axis files (takes 3 minutes).