Repository: cxf Updated Branches: refs/heads/3.0.x-fixes 5922df4e4 -> 3578b39b9
[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/3578b39b Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/3578b39b Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/3578b39b Branch: refs/heads/3.0.x-fixes Commit: 3578b39b93932bde1e447281395690434bd9339b Parents: 5922df4 Author: Sergey Beryozkin <[email protected]> Authored: Tue Mar 1 12:09:46 2016 +0000 Committer: Sergey Beryozkin <[email protected]> Committed: Tue Mar 1 12:12:07 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/3578b39b/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 cb74ed8..0a5956e 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/3578b39b/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"
