Atom Publishing Protocol (AtomPub) Overview
The Atom Publishing Protocol (AtomPub) is an application-level protocol for publishing and editing Web resources. The protocol is based on HTTP transport of Atom-formatted representations. The Atom format is documented in the Atom Syndication Format.
Data Model
Apache Wink provides an Atom Publishing Protocol data model for producing Service Documents (application/atomsvc+xml) and Categories Documents (application/atomcat+xml). All of the model classes are located under the org.apache.wink.common.model.app package.
Important Note
The APP data model can also be used to produce Service and Categories documents in HTML (text/html) and JSON (application/json) formats. For more details regarding HTML see section HTML (TBD). For JSON format see section (TBD)
APP Service Document Support
The following table shows the APP service document data models and the representations in which it can be serialized and de-serialized.
|
Supported |
Media Types |
Data Model |
Provider Registration |
---|---|---|---|---|
Read |
Yes |
application/atomsvc+xml |
org.apache.wink.common |
Not required. Registered by default |
Write |
Yes |
application/atomsvc+xml |
org.apache.wink.common |
Not required. Registered by default |
APP Categories Document Support
The following table shows the APP Catagories document data models and the representations in which it can be serialized and de-serialized.
|
Supported |
Media Types |
Data Model |
Provider Registration |
---|---|---|---|---|
Read |
Yes |
application/atomcat+xml |
org.apache.wink.common |
Not required. Registered by default |
Write |
Yes |
application/atomcat+xml |
org.apache.wink.common |
Not required. Registered by default |
Producing an APP Service Document Example
The following code example demonstrates the creation of an APP Service Document.
@GET @Produces(MediaTypeUtils.ATOM_SERVICE_DOCUMENT) public AppService getServiceDocument() { AppService serviceDocument = new AppService(); List<AppWorkspace> workspaces = serviceDocument.getWorkspace(); AppWorkspace workspace1 = new AppWorkspace(); workspace1.setTitle(new AtomText("Workspace1")); List<AppCollection> collections = workspace1.getCollection(); AppCollection collection = new AppCollection(); collection.setTitle(new AtomText("Collection1")); collections.add(collection); workspaces.add(workspace1); ... return serviceDocument; }
Explanation
AppService class is JAXB annotated POJO. An instance of an AppService class is created, populated and returned by the resource. A generic JAXB provider is used to serializes this class into an XML representation.