<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Apache Wink : 5.2 Annotations</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 : 5.2 Annotations
                                                    </span>
				    </div>
				    <div class="pagesubheading">
					    This page last changed on Oct 13, 2009 by <font color="#0050B2">michael</font>.
				    </div>

				    <h1><a name="5.2Annotations-Annotations"></a>Annotations</h1>

<p>Apache Wink provides several annotations in addition to those defined by the JAX-RS specification. The following section describes these annotations in detail.</p>


<h2><a name="5.2Annotations-@WorkspaceAnnotation"></a>@Workspace Annotation</h2>

<p>The purpose of the @Workspace annotation is to associate a "Collection Resource" with a workspace element and collection elements in an APP Service Document.</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>Reference</b><br />For more information regarding the APP Service Document, refer to section <a href="5.4 APP Service Document.html" title="5.4 APP Service Document">5.4 APP Service Document</a></td></tr></table></div>
<p>The workspaceTitle annotation parameter specifies the title of the workspace and the collectionTitle annotation parameter specifies the title of the collection.</p>

<h3><a name="5.2Annotations-@WorkspaceAnnotationSpecification"></a>@Workspace Annotation Specification</h3>

<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Value </th>
<th class='confluenceTh'> Description </th>
</tr>
<tr>
<td class='confluenceTd'> <b>Mandatory</b> </td>
<td class='confluenceTd'> No </td>
</tr>
<tr>
<td class='confluenceTd'> <b>Target</b> </td>
<td class='confluenceTd'> Resource class </td>
</tr>
<tr>
<td class='confluenceTd'> <b>Parameters</b> </td>
<td class='confluenceTd'> <b>Name</b> </td>
<td class='confluenceTd'> <b>Type</b> <br clear="all" /> </td>
</tr>
<tr>
<td class='confluenceTd'>&nbsp;</td>
<td class='confluenceTd'> workspaceTitle <br clear="all" /> </td>
<td class='confluenceTd'> String <br clear="all" /> </td>
</tr>
<tr>
<td class='confluenceTd'>&nbsp;</td>
<td class='confluenceTd'> collectionTitle <br clear="all" /> </td>
<td class='confluenceTd'> String <br clear="all" /> </td>
</tr>
<tr>
<td class='confluenceTd'> <b>Example</b> </td>
<td class='confluenceTd'> @Workspace(workspaceTitle = "Title", <br clear="all" />
collectionTitle = "Collection") x <br clear="all" /> </td>
</tr>
</tbody></table>

<h3><a name="5.2Annotations-@WorkspaceAnnotationExample"></a>@Workspace Annotation Example</h3>

<p>The following example demonstrates the use of @Workspace annotation on two resources in order to have the auto-generated APP service document contain the information about them.</p>

<p>Given the following collection Resources definitions, ResourceA and ResourceB, the result is displayed in the "Auto Generated APP Service Document" table that follows.</p>

<h4><a name="5.2Annotations-ResourceADefinition"></a>ResourceA Definition</h4>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-xml">@Workspace(workspaceTitle = <span class="code-quote">"Services"</span>, collectionTitle = <span class="code-quote">"Service1"</span>)
@Path(<span class="code-quote">"services/service1"</span>)
public class ResourceA {
    @POST
    @Produces(<span class="code-quote">"text/plain"</span>)
    @Consumes({<span class="code-quote">"application/atom+xml"</span>, <span class="code-quote">"application/xml"</span>})
    public String getText() {return <span class="code-quote">"hey there1"</span>;}
}
</pre>
</div></div>

<h4><a name="5.2Annotations-ResourceBDefinition"></a>ResourceB Definition</h4>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-xml">@Workspace(workspaceTitle = <span class="code-quote">"Services"</span>, collectionTitle = <span class="code-quote">"Service2"</span>)
@Path(<span class="code-quote">"services/service2"</span>)
public class ResourceB {
    @POST
    @Produces(<span class="code-quote">"text/plain"</span>)
    @Consumes({<span class="code-quote">"application/atom+xml"</span>, <span class="code-quote">"application/xml"</span>})
    public String getText() {return <span class="code-quote">"hey there2"</span>;}
}
</pre>
</div></div>
<p>The auto-generated APP Service Document is as follows:</p>

<h4><a name="5.2Annotations-AutoGeneratedAPPServiceDocument"></a>Auto Generated APP Service Document</h4>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-xml">&lt;service <span class="code-keyword">xmlns:atom</span>=http://www.w3.org/2005/Atom
         xmlns=<span class="code-quote">"http://www.w3.org/2007/app"</span>&gt;
    <span class="code-tag">&lt;workspace&gt;</span>
        <span class="code-tag">&lt;atom:title&gt;</span>Services<span class="code-tag">&lt;/atom:title&gt;</span>
        <span class="code-tag">&lt;collection href=<span class="code-quote">"services/service1"</span>&gt;</span>
            <span class="code-tag">&lt;atom:title&gt;</span>Service1<span class="code-tag">&lt;/atom:title&gt;</span>
            <span class="code-tag">&lt;accept&gt;</span>application/xml<span class="code-tag">&lt;/accept&gt;</span>
            <span class="code-tag">&lt;accept&gt;</span>application/atom+xml<span class="code-tag">&lt;/accept&gt;</span>
        <span class="code-tag">&lt;/collection&gt;</span>
        <span class="code-tag">&lt;collection href=<span class="code-quote">"services/service2"</span>&gt;</span>
            <span class="code-tag">&lt;atom:title&gt;</span>Service2<span class="code-tag">&lt;/atom:title&gt;</span>
            <span class="code-tag">&lt;accept&gt;</span>application/xml<span class="code-tag">&lt;/accept&gt;</span>
            <span class="code-tag">&lt;accept&gt;</span>application/atom+xml<span class="code-tag">&lt;/accept&gt;</span>
        <span class="code-tag">&lt;/collection&gt;</span>
    <span class="code-tag">&lt;/workspace&gt;</span>
<span class="code-tag">&lt;/service&gt;</span>
</pre>
</div></div>

<h2><a name="5.2Annotations-@AssetAnnotation"></a>@Asset Annotation</h2>

<p>The @Asset annotation is a marker annotation used by the Apache Wink runtime in order to identify an entity as an Asset.</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>Reference</b><br />For more information about Assets refer to section <a href="5.9 Assets.html" title="5.9 Assets">5.9 Assets</a>.</td></tr></table></div>

<h3><a name="5.2Annotations-@AssetAnnotationSpecification"></a>@Asset Annotation Specification</h3>

<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Value <br clear="all" /> </th>
<th class='confluenceTh'> Description <br clear="all" /> </th>
</tr>
<tr>
<td class='confluenceTd'> Mandatory <br clear="all" /> </td>
<td class='confluenceTd'> No <br clear="all" /> </td>
</tr>
<tr>
<td class='confluenceTd'> Target <br clear="all" /> </td>
<td class='confluenceTd'> Resource class <br clear="all" /> </td>
</tr>
<tr>
<td class='confluenceTd'> Parameters <br clear="all" /> </td>
<td class='confluenceTd'> None <br clear="all" /> </td>
</tr>
<tr>
<td class='confluenceTd'> Example <br clear="all" /> </td>
<td class='confluenceTd'> @Asset <br clear="all" /> </td>
</tr>
</tbody></table>

<h2><a name="5.2Annotations-@ScopeAnnotation"></a>@Scope Annotation</h2>

<p>The JAX-RS specification defines the default lifecycle behavior for resources and providers, and the option for controlling the lifecycle through the javax.ws.rs.core.Application class.</p>

<p>Apache Wink provides the @Scope annotation to specify the lifecycle of a provider or resource.</p>

<h3><a name="5.2Annotations-@ScopeAnnotationSpecification"></a>@Scope Annotation Specification</h3>

<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Value </th>
<th class='confluenceTh'> Description </th>
</tr>
<tr>
<td class='confluenceTd'> <b>Mandatory</b> </td>
<td class='confluenceTd'> No </td>
</tr>
<tr>
<td class='confluenceTd'> <b>Target</b> </td>
<td class='confluenceTd'> Provider class or Resource class </td>
</tr>
<tr>
<td class='confluenceTd'> <b>Parameters</b> </td>
<td class='confluenceTd'> <b>Name</b> </td>
<td class='confluenceTd'> <b>Type</b> <br clear="all" /> </td>
</tr>
<tr>
<td class='confluenceTd'>&nbsp;</td>
<td class='confluenceTd'> Value <br clear="all" /> </td>
<td class='confluenceTd'> ScopeType enum <br clear="all" /> </td>
</tr>
<tr>
<td class='confluenceTd'> <b>Example</b> </td>
<td class='confluenceTd'> @Scope(ScopeType.PROTOTYPE) <br clear="all" /> </td>
</tr>
</tbody></table>

<h3><a name="5.2Annotations-ResourceExample"></a>Resource Example</h3>

<p>The following example illustrates how to define a resource with a singleton lifecycle.</p>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-xml">@Scope(ScopeType.SINGLETON)
@Path(<span class="code-quote">"service1"</span>)
public class ResourceA {
    ...
}
</pre>
</div></div>

<h3><a name="5.2Annotations-ProviderExample"></a>Provider Example</h3>

<p>The following example illustrates how to define a provider with a prototype lifecycle.</p>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-xml">@Scope(ScopeType.PROTOTYPE)
@Provider
public class EntityProvider implements MessageBodyReader<span class="code-tag">&lt;String&gt;</span> {
    ...
}
</pre>
</div></div>

<h2><a name="5.2Annotations-@ParentAnnotation"></a>@Parent Annotation</h2>

<p>The @Parent annotation provides the ability to define a base template URI for the URI specified in a resources @Path annotation.<br/>
If a resource is annotated with the @Parent annotation, the Apache Wink runtime calculates the final resource template by first retrieving the value of the @Parent annotation, which holds the parent resource class, and then concatenates the resource path template definition to the path template definition of the parent resource.</p>

<h3><a name="5.2Annotations-@ParentAnnotationSpecification"></a>@Parent Annotation Specification</h3>

<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Value </th>
<th class='confluenceTh'> Description </th>
</tr>
<tr>
<td class='confluenceTd'> <b>Mandatory</b> </td>
<td class='confluenceTd'> No </td>
</tr>
<tr>
<td class='confluenceTd'> <b>Target</b> </td>
<td class='confluenceTd'> Provider class or Resource class </td>
</tr>
<tr>
<td class='confluenceTd'> <b>Parameters</b> </td>
<td class='confluenceTd'> <b>Name</b> </td>
<td class='confluenceTd'> <b>Type</b> <br clear="all" /> </td>
</tr>
<tr>
<td class='confluenceTd'>&nbsp;</td>
<td class='confluenceTd'> Value <br clear="all" /> </td>
<td class='confluenceTd'> Class&lt;?&gt; <br clear="all" /> </td>
</tr>
<tr>
<td class='confluenceTd'> <b>Example</b> </td>
<td class='confluenceTd'> @Parent(ParentResource.class) <br clear="all" /> </td>
</tr>
</tbody></table>

<h4><a name="5.2Annotations-Example1"></a>Example 1</h4>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-xml">@Path(<span class="code-quote">"services"</span>)
public class ParentResource {
    ...
}
</pre>
</div></div>

<h4><a name="5.2Annotations-Example2"></a>Example 2</h4>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-xml">@Parent(BaseResource.class)
@Path(<span class="code-quote">"service1"</span>)
public class ResourceA {
    ...
}
</pre>
</div></div>

<h5><a name="5.2Annotations-Explanation"></a>Explanation</h5>

<p>In the example, the user defined two resources: A ParentResource and ResourceA. ParentResource defines the @Path annotation to associate it with "<b>services</b>" URI. ResourceA defines the @Path annotation to associate it with "<b>service1</b>" URI and defines ParentResource to be its parent by specifying it in the @Parent annotation. In this case, the final URI path for ResourceA is "<b>services/service1</b>".</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>