cxf git commit: [CXF-6252] Initial support for handling async connect exceptions

2015-02-10 Thread sergeyb
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

2015-02-10 Thread sergeyb
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