You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by as...@apache.org on 2013/02/12 11:22:25 UTC
svn commit: r1445090 - in /cxf/trunk:
rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/
systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/
systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jaxws/
Author: ashakirin
Date: Tue Feb 12 10:22:25 2013
New Revision: 1445090
URL: http://svn.apache.org/r1445090
Log:
[CXF-4800] Extended using of exception mapper for methods returning Response
Modified:
cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jaxws/BookStoreJaxrsJaxws.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jaxws/BookStoreSoapRestImpl.java
Modified: cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java?rev=1445090&r1=1445089&r2=1445090&view=diff
==============================================================================
--- cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java (original)
+++ cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java Tue Feb 12 10:22:25 2013
@@ -275,9 +275,6 @@ public class ClientProxyImpl extends Abs
int status = r.getStatus();
if (status >= 300) {
- if (m.getReturnType() == Response.class && m.getExceptionTypes().length == 0) {
- return;
- }
ResponseExceptionMapper<?> mapper = findExceptionMapper(m, inMessage);
if (mapper != null) {
t = mapper.fromResponse(r);
@@ -285,7 +282,11 @@ public class ClientProxyImpl extends Abs
throw t;
}
}
-
+
+ if ((t == null) && (m.getReturnType() == Response.class) && (m.getExceptionTypes().length == 0)) {
+ return;
+ }
+
t = convertToWebApplicationException(r);
if (inMessage.getExchange().get(Message.RESPONSE_CODE) == null) {
Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java?rev=1445090&r1=1445089&r2=1445090&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java Tue Feb 12 10:22:25 2013
@@ -30,6 +30,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import javax.ws.rs.NotFoundException;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
@@ -81,6 +82,7 @@ import org.apache.cxf.systest.jaxrs.jaxw
import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
import org.apache.cxf.transport.http.HTTPConduit;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
+import org.apache.http.HttpStatus;
import org.junit.BeforeClass;
import org.junit.Ignore;
@@ -436,7 +438,28 @@ public class JAXRSSoapBookTest extends A
assertEquals("No Book with id 356 is available", ex.getMessage());
}
}
-
+
+ @Test(expected = NotFoundException.class)
+ public void testCheckBookClientException() {
+
+ String baseAddress = "http://localhost:" + PORT + "/test/services/rest";
+ BookStoreJaxrsJaxws proxy = JAXRSClientFactory.create(baseAddress,
+ BookStoreJaxrsJaxws.class,
+ Collections.singletonList(new NotFoundResponseExceptionMapper()));
+ proxy.checkBook(100L);
+ }
+
+ @Test
+ public void testCheckBookClientErrorResponse() {
+
+ String baseAddress = "http://localhost:" + PORT + "/test/services/rest";
+ BookStoreJaxrsJaxws proxy = JAXRSClientFactory.create(baseAddress,
+ BookStoreJaxrsJaxws.class,
+ Collections.singletonList(new DummyResponseExceptionMapper()));
+ Response response = proxy.checkBook(100L);
+ assertEquals(HttpStatus.SC_NOT_FOUND, response.getStatus());
+ }
+
@Test
public void testNoBook357WebClient() throws Exception {
@@ -928,6 +951,26 @@ public class JAXRSSoapBookTest extends A
}
+ @Ignore
+ public static class NotFoundResponseExceptionMapper implements ResponseExceptionMapper<Exception> {
+
+ public Exception fromResponse(Response r) {
+ if (r.getStatus() == HttpStatus.SC_NOT_FOUND) {
+ return new NotFoundException();
+ } else {
+ return null;
+ }
+ }
+ }
+
+ @Ignore
+ public static class DummyResponseExceptionMapper implements ResponseExceptionMapper<Exception> {
+
+ public Exception fromResponse(Response r) {
+ return null;
+ }
+ }
+
@Ignore
public class TestStreamDrainInterptor extends AbstractPhaseInterceptor<Message> {
public TestStreamDrainInterptor() {
Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jaxws/BookStoreJaxrsJaxws.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jaxws/BookStoreJaxrsJaxws.java?rev=1445090&r1=1445089&r2=1445090&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jaxws/BookStoreJaxrsJaxws.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jaxws/BookStoreJaxrsJaxws.java Tue Feb 12 10:22:25 2013
@@ -28,6 +28,7 @@ import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.Response;
import org.apache.cxf.systest.jaxrs.Book;
import org.apache.cxf.systest.jaxrs.BookNotFoundFault;
@@ -66,4 +67,8 @@ public interface BookStoreJaxrsJaxws {
@Path("/fastinfoset2")
@Produces({"application/fastinfoset", "text/xml", "application/xml" })
Book getFastinfoBook();
+
+ @GET
+ @Path("/check/{id}")
+ Response checkBook(@PathParam("id") Long id);
}
Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jaxws/BookStoreSoapRestImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jaxws/BookStoreSoapRestImpl.java?rev=1445090&r1=1445089&r2=1445090&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jaxws/BookStoreSoapRestImpl.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jaxws/BookStoreSoapRestImpl.java Tue Feb 12 10:22:25 2013
@@ -40,6 +40,7 @@ import org.apache.cxf.systest.jaxrs.Book
import org.apache.cxf.systest.jaxrs.BookNotFoundFault;
import org.apache.cxf.systest.jaxrs.BookSubresource;
import org.apache.cxf.systest.jaxrs.BookSubresourceImpl;
+import org.apache.http.HttpStatus;
@SchemaValidation
public class BookStoreSoapRestImpl implements BookStoreJaxrsJaxws {
@@ -150,5 +151,14 @@ public class BookStoreSoapRestImpl imple
public Book getFastinfoBook() {
return new Book("CXF2", 2L);
}
+
+ @Override
+ public Response checkBook(Long id) {
+ if (id.longValue() != 0L) {
+ return Response.status(HttpStatus.SC_NOT_FOUND).build();
+ } else {
+ return Response.ok().build();
+ }
+ }
}