Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 6653F200B4C for ; Fri, 22 Jul 2016 19:06:08 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 65364160A5A; Fri, 22 Jul 2016 17:06:08 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id C03EE160A93 for ; Fri, 22 Jul 2016 19:06:07 +0200 (CEST) Received: (qmail 20172 invoked by uid 500); 22 Jul 2016 17:06:06 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 19979 invoked by uid 99); 22 Jul 2016 17:06:06 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 22 Jul 2016 17:06:06 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 7623EE1101; Fri, 22 Jul 2016 17:06:06 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: dkulp@apache.org To: commits@cxf.apache.org Date: Fri, 22 Jul 2016 17:06:10 -0000 Message-Id: <21b6a62f50db4dcf9cd3f4d4e07edffd@git.apache.org> In-Reply-To: <9315493051f7496e8e959b24d8c2a950@git.apache.org> References: <9315493051f7496e8e959b24d8c2a950@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [5/9] cxf git commit: [CXF-6930] Make sure the webclient waits until the reponse chain has run before doing it's processing archived-at: Fri, 22 Jul 2016 17:06:08 -0000 [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 Authored: Thu Jul 21 16:53:04 2016 -0400 Committer: Daniel Kulp 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");