You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2016/07/22 17:06:10 UTC
[5/9] cxf git commit: [CXF-6930] Make sure the webclient waits until
the reponse chain has run before doing it's processing
[CXF-6930] Make sure the webclient waits until the reponse chain has run before doing it's processing
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/0f66cb02
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/0f66cb02
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/0f66cb02
Branch: refs/heads/3.1.x-fixes
Commit: 0f66cb025baf40cf84207c87f2428c9942fc8328
Parents: 3198d8b
Author: Daniel Kulp <dk...@apache.org>
Authored: Thu Jul 21 16:53:04 2016 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Fri Jul 22 12:13:14 2016 -0400
----------------------------------------------------------------------
.../apache/cxf/jaxrs/client/AbstractClient.java | 19 +++++++++++++++++++
.../cxf/systest/jaxrs/jms/JAXRSJmsTest.java | 2 ++
2 files changed, 21 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/0f66cb02/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 f9d9aec..93d8111 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
@@ -558,6 +558,17 @@ public abstract class AbstractClient implements Client {
Exchange exchange = message.getExchange();
Exception ex = message.getContent(Exception.class);
+ if (ex == null) {
+ ex = message.getExchange().get(Exception.class);
+ }
+ if (ex == null && !exchange.isOneWay()) {
+ synchronized (exchange) {
+ while (exchange.get("IN_CHAIN_COMPLETE") == null) {
+ exchange.wait();
+ }
+ }
+ }
+ ex = message.getContent(Exception.class);
if (ex != null
|| PropertyUtils.isTrue(exchange.get(SERVICE_NOT_AVAIL_PROPERTY))
&& PropertyUtils.isTrue(exchange.get(COMPLETE_IF_SERVICE_NOT_AVAIL_PROPERTY))) {
@@ -1187,6 +1198,10 @@ public abstract class AbstractClient implements Client {
@Override
public void handleMessage(Message message) throws Fault {
+ synchronized (message.getExchange()) {
+ message.getExchange().put("IN_CHAIN_COMPLETE", Boolean.TRUE);
+ message.getExchange().notifyAll();
+ }
if (message.getExchange().isSynchronous()) {
return;
}
@@ -1195,6 +1210,10 @@ public abstract class AbstractClient implements Client {
@Override
public void handleFault(Message message) {
+ synchronized (message.getExchange()) {
+ message.getExchange().put("IN_CHAIN_COMPLETE", Boolean.TRUE);
+ message.getExchange().notifyAll();
+ }
if (message.getExchange().isSynchronous()) {
return;
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/0f66cb02/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jms/JAXRSJmsTest.java
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jms/JAXRSJmsTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jms/JAXRSJmsTest.java
index 4cf23e4..9567618 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jms/JAXRSJmsTest.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/jms/JAXRSJmsTest.java
@@ -42,6 +42,7 @@ import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
+import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
import org.apache.cxf.jaxrs.client.WebClient;
import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
@@ -87,6 +88,7 @@ public class JAXRSJmsTest extends AbstractBusClientServerTestBase {
+ "&jndiURL=tcp://localhost:" + JMS_PORT;
WebClient client = WebClient.create(endpointAddressUrlEncoded);
+ WebClient.getConfig(client).getInInterceptors().add(new LoggingInInterceptor());
WebClient.getConfig(client).getRequestContext()
.put(org.apache.cxf.message.Message.REQUEST_URI, "/bookstore/books/123");