Author: buildbot
Date: Thu Nov 1 16:48:28 2012
New Revision: 836902
Log:
Production update by buildbot for cxf
Modified:
websites/production/cxf/content/cache/docs.pageCache
websites/production/cxf/content/docs/jax-rs-redirection.html
Modified: websites/production/cxf/content/cache/docs.pageCache
==============================================================================
Binary files - no diff available.
Modified: websites/production/cxf/content/docs/jax-rs-redirection.html
==============================================================================
--- websites/production/cxf/content/docs/jax-rs-redirection.html (original)
+++ websites/production/cxf/content/docs/jax-rs-redirection.html Thu Nov 1
16:48:28 2012
@@ -238,10 +238,101 @@ Note that RequestDispatcherProvider can
</pre>
</div></div>
-<p>Given that the same ReservationStatus bean is returned in both cases, it is
actually the original request URI fragments which are used to match which view
handler will deal with a given ReservationStatus.</p>
+<p>Given that the same ReservationStatus bean is returned in both cases, it is
actually the original request URI fragments which are used to match which view
handler will deal with a given ReservationStatus, example, a response to
request URI "http://localhost:8080/reservations/reserve/complete" will be
handled by "/forms/reservationConfirm.jsp". </p>
<p>Note that RequestDispatcherProvider has a 'dispatcherName' property - that
can be handy when redirecting to named servlets (example, MyServlet)
including<br clear="none">
-such ones as "jsp" or "default", especially when CXFServlet handling a given
invocation has a uri pattern that may also capture the redirection
requestwell-known servlets such as "default", see the next section for more
information. </p>
+such ones as "jsp" or "default", especially when CXFServlet handling a given
invocation has a uri pattern (typically, wildcard) that may also capture the
redirection request, see the next section for more information. </p>
+
+<p>Next, imagine a scenario like this: we have a single resource method
accepting some data and the response view will need to be different depending
on the status of the request processing. Using enumerations is the most
effective option in this case:</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent
panelContent">
+<pre class="code-java">
+<span class="code-keyword">package</span> resource;
+
+<span class="code-keyword">public</span> class Status {
+ UPDATE_SUCCESS,
+ UPDATE_FAILURE
+}
+
+@Path(<span class="code-quote">"/"</span>)
+<span class="code-keyword">public</span> class Resource {
+
+ @PUT
+ @Produces(<span class="code-quote">"text/html"</span>)
+ <span class="code-keyword">public</span> Response update(SomeData data) {
+ <span class="code-keyword">if</span> (update(data)) {
+ <span class="code-keyword">return</span>
Response.ok(Status.UPDATE_SUCCESS).build();
+ } <span class="code-keyword">else</span> {
+ <span class="code-keyword">return</span>
Response.ok(Status.UPDATE_FAILURE).build();
+ }
+ }
+}
+</pre>
+</div></div>
+
+
+<p>Next, you may have a single JSP handler which will check whether it is
Status.UPDATE_SUCCESS or Status.UPDATE_FAILURE and format the response
accordingly. In this case a basic RequestDispatcherProvider configuration will
do:</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent
panelContent">
+<pre class="code-xml">
+
+<span class="code-tag"><bean id=<span
class="code-quote">"dispatchProvider"</span> class=<span
class="code-quote">"org.apache.cxf.jaxrs.provider.RequestDispatcherProvider"</span>></span>
+ <span class="code-tag"><property name=<span
class="code-quote">"resourcePath"</span> value=<span
class="code-quote">"/updateStatus.jsp"</span>/></span>
+<span class="code-tag"></bean></span>
+
+</pre>
+</div></div>
+
+<p>Alternatively you may have a dedicated view handler dealing with the
specific status, in this case either: </p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent
panelContent">
+<pre class="code-xml">
+<span class="code-tag"><bean id=<span
class="code-quote">"reserveRegistrationViews"</span> class=<span
class="code-quote">"org.apache.cxf.jaxrs.provider.RequestDispatcherProvider"</span>></span>
+ <span class="code-tag"><property name=<span
class="code-quote">"classResources"</span>></span>
+ <span class="code-tag"><map></span>
+ <span class="code-tag"><entry key=<span
class="code-quote">"resource.Status.UPDATE_SUCCESS"</span> value=<span
class="code-quote">"/forms/updateSuccess.jsp"</span>/></span>
+ <span class="code-tag"><entry key=<span
class="code-quote">"resource.Status.UPDATE_FAILURE"</span> value=<span
class="code-quote">"/forms/updateFailure.jsp"</span>/></span>
+ <span class="code-tag"></map></span>
+ <span class="code-tag"></property></span>
+<span class="code-tag"></bean></span>
+</pre>
+</div></div>
+
+<p>or, starting from CXF 2.7.1,</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent
panelContent">
+<pre class="code-xml">
+<beans xmlns=<span
class="code-quote">"http://www.springframework.org/schema/beans"</span>
+ <span class="code-keyword">xmlns:xsi</span>=<span
class="code-quote">"http://www.w3.org/2001/XMLSchema-instance"</span>
+ <span class="code-keyword">xmlns:util</span>=<span
class="code-quote">"http://www.springframework.org/schema/util"</span>
+ xsi:schemaLocation="
+http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
+http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd">
+
+<span class="code-tag"><bean id=<span
class="code-quote">"reserveRegistrationViews"</span> class=<span
class="code-quote">"org.apache.cxf.jaxrs.provider.RequestDispatcherProvider"</span>></span>
+ <span class="code-tag"><property name=<span
class="code-quote">"enumResources"</span>></span>
+ <span class="code-tag"><map></span>
+ <entry
+ <span class="code-tag"><key></span>
+ <span class="code-tag"><util:constant
static-field=<span
class="code-quote">"resource.Status.UPDATE_SUCCESS"</span>/></span>
+ <span class="code-tag"></key></span>
+ <span
class="code-tag"><value></span>/forms/updateSuccess.jsp<span
class="code-tag"></value></span>
+ <span class="code-tag"></entry></span>
+ <entry
+ <span class="code-tag"><key></span>
+ <span class="code-tag"><util:constant
static-field=<span
class="code-quote">"resource.Status.UPDATE_FAILURE"</span>/></span>
+ <span class="code-tag"></key></span>
+ <span
class="code-tag"><value></span>/forms/updateFailure.jsp<span
class="code-tag"></value></span>
+ <span class="code-tag"></entry></span>
+ <span class="code-tag"><map></span>
+ <span class="code-tag"></property></span>
+<span class="code-tag"></bean></span>
+<span class="code-tag"></beans></span>
+</pre>
+</div></div>
+
+<p>will help.</p>
+
<p>Starting from CXF 2.6.1 it is possible to configure the provider to check
if the current class has an associated view handler or not, for example:</p>