cxf git commit: [CXF-6252] Initial support for handling async connect exceptions
Repository: cxf Updated Branches: refs/heads/3.0.x-fixes 491424b20 -> 272b8533f [CXF-6252] Initial support for handling async connect exceptions Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/272b8533 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/272b8533 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/272b8533 Branch: refs/heads/3.0.x-fixes Commit: 272b8533f84653a9da0d462600d64dd3c44829f3 Parents: 491424b Author: Sergey Beryozkin Authored: Tue Feb 10 22:16:36 2015 + Committer: Sergey Beryozkin Committed: Tue Feb 10 22:24:15 2015 + -- .../apache/cxf/jaxrs/client/AbstractClient.java | 32 +- .../cxf/systest/jaxrs/JAXRSAsyncClientTest.java | 35 +++- 2 files changed, 50 insertions(+), 17 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/272b8533/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java -- diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java index a745d77..f87498d 100644 --- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java +++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java @@ -25,6 +25,7 @@ import java.io.OutputStream; import java.lang.annotation.Annotation; import java.lang.reflect.Constructor; import java.lang.reflect.Type; +import java.net.ConnectException; import java.net.HttpURLConnection; import java.net.URI; import java.text.SimpleDateFormat; @@ -83,6 +84,7 @@ import org.apache.cxf.message.ExchangeImpl; import org.apache.cxf.message.Message; import org.apache.cxf.message.MessageContentsList; import org.apache.cxf.message.MessageUtils; +import org.apache.cxf.phase.AbstractPhaseInterceptor; import org.apache.cxf.phase.Phase; import org.apache.cxf.phase.PhaseChainCache; import org.apache.cxf.phase.PhaseInterceptorChain; @@ -860,15 +862,12 @@ public abstract class AbstractClient implements Client { } protected static MessageObserver setupInFaultObserver(final ClientConfiguration cfg) { -if (!cfg.getInFaultInterceptors().isEmpty()) { -return new InFaultChainInitiatorObserver(cfg.getBus()) { -protected void initializeInterceptors(Exchange ex, PhaseInterceptorChain chain) { -chain.add(cfg.getInFaultInterceptors()); -} -}; -} else { -return null; -} +return new InFaultChainInitiatorObserver(cfg.getBus()) { +protected void initializeInterceptors(Exchange ex, PhaseInterceptorChain chain) { +chain.add(cfg.getInFaultInterceptors()); +chain.add(new ConnectionFaultInterceptor()); +} +}; } protected void setSupportOnewayResponseProperty(Message outMessage) { @@ -1059,4 +1058,19 @@ public abstract class AbstractClient implements Client { } } +private static class ConnectionFaultInterceptor extends AbstractPhaseInterceptor { +public ConnectionFaultInterceptor() { +super(Phase.PRE_STREAM); +} + +public void handleMessage(Message message) throws Fault { +Exception ex = message.getContent(Exception.class); +if (!message.getExchange().isSynchronous() +&& ex instanceof ConnectException) { +//TODO: make sure it works with the failover feature +JaxrsClientCallback cb = message.getExchange().get(JaxrsClientCallback.class); +cb.handleException(message, new ProcessingException(ex)); +} +} +} } http://git-wip-us.apache.org/repos/asf/cxf/blob/272b8533/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 225743c..b870f45 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 @@ -68,8 +68,8 @@ public class JAXRSAsyncClientTest extends AbstractBusClientServerTestBase { Thread.sleep(Long.valueOf(property)); } } - -@Test + +//@Test public void testRetrieveBookCustomMethodAsyncSync() throws Exception { String address = "http://localhost:"; + PORT + "/bookstore/retrieve"; WebClient wc = WebClient.creat
cxf git commit: [CXF-6252] Initial support for handling async connect exceptions
Repository: cxf Updated Branches: refs/heads/master fe5eedda5 -> 0cb64ee2b [CXF-6252] Initial support for handling async connect exceptions Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/0cb64ee2 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/0cb64ee2 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/0cb64ee2 Branch: refs/heads/master Commit: 0cb64ee2bb66e4249c4a0f8d7ae62068e2a95dcd Parents: fe5eedd Author: Sergey Beryozkin Authored: Tue Feb 10 22:16:36 2015 + Committer: Sergey Beryozkin Committed: Tue Feb 10 22:16:36 2015 + -- .../apache/cxf/jaxrs/client/AbstractClient.java | 32 ++-- .../cxf/systest/jaxrs/JAXRSAsyncClientTest.java | 18 +-- 2 files changed, 31 insertions(+), 19 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cxf/blob/0cb64ee2/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java -- diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java index a745d77..f87498d 100644 --- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java +++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java @@ -25,6 +25,7 @@ import java.io.OutputStream; import java.lang.annotation.Annotation; import java.lang.reflect.Constructor; import java.lang.reflect.Type; +import java.net.ConnectException; import java.net.HttpURLConnection; import java.net.URI; import java.text.SimpleDateFormat; @@ -83,6 +84,7 @@ import org.apache.cxf.message.ExchangeImpl; import org.apache.cxf.message.Message; import org.apache.cxf.message.MessageContentsList; import org.apache.cxf.message.MessageUtils; +import org.apache.cxf.phase.AbstractPhaseInterceptor; import org.apache.cxf.phase.Phase; import org.apache.cxf.phase.PhaseChainCache; import org.apache.cxf.phase.PhaseInterceptorChain; @@ -860,15 +862,12 @@ public abstract class AbstractClient implements Client { } protected static MessageObserver setupInFaultObserver(final ClientConfiguration cfg) { -if (!cfg.getInFaultInterceptors().isEmpty()) { -return new InFaultChainInitiatorObserver(cfg.getBus()) { -protected void initializeInterceptors(Exchange ex, PhaseInterceptorChain chain) { -chain.add(cfg.getInFaultInterceptors()); -} -}; -} else { -return null; -} +return new InFaultChainInitiatorObserver(cfg.getBus()) { +protected void initializeInterceptors(Exchange ex, PhaseInterceptorChain chain) { +chain.add(cfg.getInFaultInterceptors()); +chain.add(new ConnectionFaultInterceptor()); +} +}; } protected void setSupportOnewayResponseProperty(Message outMessage) { @@ -1059,4 +1058,19 @@ public abstract class AbstractClient implements Client { } } +private static class ConnectionFaultInterceptor extends AbstractPhaseInterceptor { +public ConnectionFaultInterceptor() { +super(Phase.PRE_STREAM); +} + +public void handleMessage(Message message) throws Fault { +Exception ex = message.getContent(Exception.class); +if (!message.getExchange().isSynchronous() +&& ex instanceof ConnectException) { +//TODO: make sure it works with the failover feature +JaxrsClientCallback cb = message.getExchange().get(JaxrsClientCallback.class); +cb.handleException(message, new ProcessingException(ex)); +} +} +} } http://git-wip-us.apache.org/repos/asf/cxf/blob/0cb64ee2/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 7bd8d27..40d38ce 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 @@ -52,7 +52,6 @@ import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase; import org.junit.Before; import org.junit.BeforeClass; -import org.junit.Ignore; import org.junit.Test; public class JAXRSAsyncClientTest extends AbstractBusClientServerTestBase { @@ -73,7 +72,7 @@ public class JAXRSAsyncClientTest extends AbstractBusClientServerTestBase { Thread.sleep(Long.val