Repository: cxf Updated Branches: refs/heads/master d26570e26 -> 527cd1c81
[CXF-6810] Defaulting a null response code to 202 for one-way non-HTTP requests Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/0d29a387 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/0d29a387 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/0d29a387 Branch: refs/heads/master Commit: 0d29a38798709f345dfc58b16e55a40caac48d7d Parents: e510d3e Author: Sergey Beryozkin <[email protected]> Authored: Tue Mar 1 12:09:46 2016 +0000 Committer: Sergey Beryozkin <[email protected]> Committed: Tue Mar 1 12:09:46 2016 +0000 ---------------------------------------------------------------------- .../apache/cxf/jaxrs/client/AbstractClient.java | 5 ++- .../cxf/systest/jaxrs/jms/JAXRSJmsTest.java | 40 ++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/0d29a387/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 d190fc4..d98c34d 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 @@ -604,11 +604,14 @@ public abstract class AbstractClient implements Client { } } - private static Integer getResponseCode(Exchange exchange) { + private Integer getResponseCode(Exchange exchange) { Integer responseCode = (Integer)exchange.get(Message.RESPONSE_CODE); if (responseCode == null && exchange.getInMessage() != null) { responseCode = (Integer)exchange.getInMessage().get(Message.RESPONSE_CODE); } + if (responseCode == null && exchange.isOneWay() && !state.getBaseURI().toString().startsWith("http")) { + responseCode = 202; + } return responseCode; } http://git-wip-us.apache.org/repos/asf/cxf/blob/0d29a387/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 49e8e0d..b7e6a21 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 @@ -37,6 +37,7 @@ import javax.jms.MessageProducer; import javax.jms.Session; import javax.naming.Context; import javax.naming.InitialContext; +import javax.ws.rs.core.Response; import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; @@ -48,6 +49,7 @@ import org.apache.cxf.systest.jaxrs.Book; import org.apache.cxf.systest.jaxrs.JMSBookStore; import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase; import org.apache.cxf.testutil.common.EmbeddedJMSBrokerLauncher; + import org.junit.BeforeClass; import org.junit.Test; @@ -94,6 +96,44 @@ public class JAXRSJmsTest extends AbstractBusClientServerTestBase { } @Test + public void testPutBookOneWayWithWebClient() throws Exception { + // setup the the client + String endpointAddressUrlEncoded = "jms:jndi:dynamicQueues/test.jmstransport.text" + + "?replyToName=dynamicQueues/test.jmstransport.response" + + "&jndiInitialContextFactory=org.apache.activemq.jndi.ActiveMQInitialContextFactory" + + "&jndiURL=tcp://localhost:" + JMS_PORT; + + WebClient client = WebClient.create(endpointAddressUrlEncoded); + WebClient.getConfig(client).getRequestContext() + .put(org.apache.cxf.message.Message.REQUEST_URI, "/bookstore/oneway"); + client.header("OnewayRequest", "true"); + Response r = client.put(new Book("OneWay From WebClient", 129L)); + assertEquals(202, r.getStatus()); + assertFalse(r.hasEntity()); + + Context ctx = getContext(); + ConnectionFactory factory = (ConnectionFactory)ctx.lookup("ConnectionFactory"); + + Destination replyToDestination = (Destination)ctx.lookup("dynamicQueues/test.jmstransport.response"); + + Connection connection = null; + try { + connection = factory.createConnection(); + connection.start(); + Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + checkBookInResponse(session, replyToDestination, 129L, "OneWay From WebClient"); + session.close(); + } finally { + try { + connection.stop(); + connection.close(); + } catch (JMSException ex) { + // ignore + } + } + } + + @Test public void testGetBookFromWebClientWithPath() throws Exception { // setup the the client String endpointAddressUrlEncoded = "jms:jndi:dynamicQueues/test.jmstransport.text"
