| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <html> |
| <head> |
| <title>Apache Wink : 7.2 APP</title> |
| <link rel="stylesheet" href="styles/site.css" type="text/css" /> |
| <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| </head> |
| |
| <body> |
| <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff"> |
| <tr> |
| <td valign="top" class="pagebody"> |
| <div class="pageheader"> |
| <span class="pagetitle"> |
| Apache Wink : 7.2 APP |
| </span> |
| </div> |
| <div class="pagesubheading"> |
| This page last changed on Oct 13, 2009 by <font color="#0050B2">michael</font>. |
| </div> |
| |
| <h2><a name="7.2APP-AtomPublishingProtocol%28AtomPub%29Overview"></a>Atom Publishing Protocol (AtomPub) Overview</h2> |
| |
| <p>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.</p> |
| |
| <h3><a name="7.2APP-DataModel"></a>Data Model</h3> |
| |
| <p>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.</p> |
| |
| <div class='panelMacro'><table class='infoMacro'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="images/icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b>Important Note</b><br />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)</td></tr></table></div> |
| |
| <h4><a name="7.2APP-APPServiceDocumentSupport"></a>APP Service Document Support</h4> |
| |
| <p>The following table shows the APP service document data models and the representations in which it can be serialized and de-serialized.</p> |
| |
| |
| |
| <table class='confluenceTable'><tbody> |
| <tr> |
| <th class='confluenceTh'> </th> |
| <th class='confluenceTh'> Supported </th> |
| <th class='confluenceTh'> Media Types <br clear="all" /> </th> |
| <th class='confluenceTh'> Data Model <br clear="all" /> </th> |
| <th class='confluenceTh'> Provider Registration <br clear="all" /> </th> |
| </tr> |
| <tr> |
| <td class='confluenceTd'> Read <br clear="all" /> </td> |
| <td class='confluenceTd'> Yes <br clear="all" /> </td> |
| <td class='confluenceTd'> application/atomsvc+xml </td> |
| <td class='confluenceTd'> org.apache.wink.common<br clear="all" /> |
| .model.app.AppService </td> |
| <td class='confluenceTd'> Not required. Registered by default <br clear="all" /> </td> |
| </tr> |
| <tr> |
| <td class='confluenceTd'> Write <br clear="all" /> </td> |
| <td class='confluenceTd'> Yes </td> |
| <td class='confluenceTd'> application/atomsvc+xml <br clear="all" /> </td> |
| <td class='confluenceTd'> org.apache.wink.common<br clear="all" /> |
| .model.app.AppService </td> |
| <td class='confluenceTd'> Not required. Registered by default </td> |
| </tr> |
| </tbody></table> |
| |
| |
| |
| |
| |
| <h4><a name="7.2APP-APPCategoriesDocumentSupport"></a>APP Categories Document Support</h4> |
| |
| <p>The following table shows the APP Catagories document data models and the representations in which it can be serialized and de-serialized.</p> |
| |
| |
| <table class='confluenceTable'><tbody> |
| <tr> |
| <th class='confluenceTh'> </th> |
| <th class='confluenceTh'> Supported </th> |
| <th class='confluenceTh'> Media Types <br clear="all" /> </th> |
| <th class='confluenceTh'> Data Model <br clear="all" /> </th> |
| <th class='confluenceTh'> Provider Registration <br clear="all" /> </th> |
| </tr> |
| <tr> |
| <td class='confluenceTd'> Read <br clear="all" /> </td> |
| <td class='confluenceTd'> Yes <br clear="all" /> </td> |
| <td class='confluenceTd'> application/atomcat+xml </td> |
| <td class='confluenceTd'> org.apache.wink.common<br clear="all" /> |
| .model.app.AppCategories </td> |
| <td class='confluenceTd'> Not required. Registered by default <br clear="all" /> </td> |
| </tr> |
| <tr> |
| <td class='confluenceTd'> Write <br clear="all" /> </td> |
| <td class='confluenceTd'> Yes </td> |
| <td class='confluenceTd'> application/atomcat+xml <br clear="all" /> </td> |
| <td class='confluenceTd'> org.apache.wink.common<br clear="all" /> |
| .model.app.AppCategories </td> |
| <td class='confluenceTd'> Not required. Registered by default <br clear="all" /> </td> |
| </tr> |
| </tbody></table> |
| |
| |
| |
| |
| |
| <h3><a name="7.2APP-"></a></h3> |
| |
| |
| <h3><a name="7.2APP-ProducinganAPPServiceDocumentExample"></a>Producing an APP Service Document Example</h3> |
| |
| <p>The following code example demonstrates the creation of an APP Service Document.</p> |
| |
| |
| |
| <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent"> |
| <pre class="code-java"> @GET |
| @Produces(MediaTypeUtils.ATOM_SERVICE_DOCUMENT) |
| <span class="code-keyword">public</span> AppService getServiceDocument() { |
| AppService serviceDocument = <span class="code-keyword">new</span> AppService(); |
| List<AppWorkspace> workspaces = serviceDocument.getWorkspace(); |
| AppWorkspace workspace1 = <span class="code-keyword">new</span> AppWorkspace(); |
| workspace1.setTitle(<span class="code-keyword">new</span> AtomText(<span class="code-quote">"Workspace1"</span>)); |
| List<AppCollection> collections = workspace1.getCollection(); |
| AppCollection collection = <span class="code-keyword">new</span> AppCollection(); |
| collection.setTitle(<span class="code-keyword">new</span> AtomText(<span class="code-quote">"Collection1"</span>)); |
| |
| collections.add(collection); |
| workspaces.add(workspace1); |
| ... |
| <span class="code-keyword">return</span> serviceDocument; |
| } |
| </pre> |
| </div></div> |
| |
| <h5><a name="7.2APP-Explanation"></a>Explanation</h5> |
| |
| <p>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. </p> |
| |
| |
| </td> |
| </tr> |
| </table> |
| <table border="0" cellpadding="0" cellspacing="0" width="100%"> |
| <tr> |
| <td height="12" background="http://cwiki.apache.org/confluence/images/border/border_bottom.gif"><img src="images/border/spacer.gif" width="1" height="1" border="0"/></td> |
| </tr> |
| <tr> |
| <td align="center"><font color="grey">Document generated by Confluence on Nov 11, 2009 06:57</font></td> |
| </tr> |
| </table> |
| </body> |
| </html> |