Repository: cxf Updated Branches: refs/heads/master 6958418ec -> bbda68b6d
[CXF-6889] Adding a basic exception test Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/bbda68b6 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/bbda68b6 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/bbda68b6 Branch: refs/heads/master Commit: bbda68b6d7948d098ee598d248266f4ce81c820a Parents: 6958418 Author: Sergey Beryozkin <sberyoz...@gmail.com> Authored: Mon Oct 10 13:28:29 2016 +0100 Committer: Sergey Beryozkin <sberyoz...@gmail.com> Committed: Mon Oct 10 13:28:29 2016 +0100 ---------------------------------------------------------------------- .../cxf/jaxrs/client/JaxrsClientStageCallback.java | 6 +++--- .../apache/cxf/systest/jaxrs/JAXRSAsyncClientTest.java | 13 +++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/bbda68b6/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/JaxrsClientStageCallback.java ---------------------------------------------------------------------- diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/JaxrsClientStageCallback.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/JaxrsClientStageCallback.java index 822d235..c26ffb4 100644 --- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/JaxrsClientStageCallback.java +++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/JaxrsClientStageCallback.java @@ -21,6 +21,7 @@ package org.apache.cxf.jaxrs.client; import java.lang.reflect.Type; import java.util.Map; +import java.util.concurrent.CancellationException; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.concurrent.Executor; @@ -47,7 +48,6 @@ class JaxrsClientStageCallback<T> extends JaxrsClientCallback<T> { public void handleResponse(Map<String, Object> ctx, Object[] res) { context = ctx; result = res; - //consumer.accept((T)res[0]); done = true; synchronized (this) { notifyAll(); @@ -58,7 +58,7 @@ class JaxrsClientStageCallback<T> extends JaxrsClientCallback<T> { public void handleException(Map<String, Object> ctx, final Throwable ex) { context = ctx; exception = ex; - //handler.failed(exception); + cf.completeExceptionally(ex); done = true; synchronized (this) { notifyAll(); @@ -68,7 +68,7 @@ class JaxrsClientStageCallback<T> extends JaxrsClientCallback<T> { public boolean cancel(boolean mayInterruptIfRunning) { boolean result = super.cancel(mayInterruptIfRunning); if (result) { - //handler.failed(new CancellationException()); + cf.completeExceptionally(new CancellationException()); } return result; } http://git-wip-us.apache.org/repos/asf/cxf/blob/bbda68b6/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSAsyncClientTest.java ---------------------------------------------------------------------- diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSAsyncClientTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSAsyncClientTest.java index 568e520..4d32750 100644 --- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSAsyncClientTest.java +++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSAsyncClientTest.java @@ -375,6 +375,19 @@ public class JAXRSAsyncClientTest extends AbstractBusClientServerTestBase { Book book = stage.toCompletableFuture().join(); assertEquals(123L, book.getId()); } + @Test + public void testGetBookAsyncStage404() throws Exception { + String address = "http://localhost:" + PORT + "/bookstore/bookheaders/404"; + WebClient wc = createWebClient(address); + CompletionStage<Book> stage = wc.path("123").rx().get(Book.class); + try { + stage.toCompletableFuture().get(); + fail("Exception expected"); + } catch (ExecutionException ex) { + assertTrue(ex.getCause() instanceof NotFoundException); + } + + } private WebClient createWebClient(String address) { List<Object> providers = new ArrayList<Object>(); return WebClient.create(address, providers);