<!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> |