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 2013/12/06 23:41:09 UTC
svn commit: r1548739 - in /cxf/trunk:
rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/
rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/
rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/
systests/transport-j...
Author: dkulp
Date: Fri Dec 6 22:41:09 2013
New Revision: 1548739
URL: http://svn.apache.org/r1548739
Log:
[CXF-5434] Fix some issues where a reply may attempt to be sent to the "none" address.
Modified:
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCOutInterceptor.java
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOutputStream.java
cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/InternalContextUtils.java
cxf/trunk/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/GreeterImplQueueOneWay.java
cxf/trunk/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java
Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCOutInterceptor.java?rev=1548739&r1=1548738&r2=1548739&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCOutInterceptor.java (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCOutInterceptor.java Fri Dec 6 22:41:09 2013
@@ -62,6 +62,9 @@ public class RPCOutInterceptor extends A
boolean output = false;
if (!isRequestor(message)) {
+ if (operation.getOutput() == null) {
+ return;
+ }
parts = operation.getOutput().getMessageParts();
output = true;
} else {
Modified: cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOutputStream.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOutputStream.java?rev=1548739&r1=1548738&r2=1548739&view=diff
==============================================================================
--- cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOutputStream.java (original)
+++ cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOutputStream.java Fri Dec 6 22:41:09 2013
@@ -76,7 +76,11 @@ class JMSOutputStream extends CachedOutp
throw new IOException("Error creating request Object from Message content, exception " + ex);
}
if (LOG.isLoggable(Level.FINE)) {
- LOG.log(Level.FINE, "Payload to be sent out is :[" + request + "]");
+ Object o = request;
+ if (o instanceof byte[]) {
+ o = new String((byte[])o, "utf-8");
+ }
+ LOG.log(Level.FINE, "Payload to be sent out is :[" + o + "]");
}
return request;
}
Modified: cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/InternalContextUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/InternalContextUtils.java?rev=1548739&r1=1548738&r2=1548739&view=diff
==============================================================================
--- cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/InternalContextUtils.java (original)
+++ cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/InternalContextUtils.java Fri Dec 6 22:41:09 2013
@@ -75,6 +75,61 @@ import org.apache.cxf.ws.addressing.Name
* Holder for utility methods relating to contexts.
*/
final class InternalContextUtils {
+ private static final class DecoupledDestination implements Destination {
+ private final EndpointInfo ei;
+ private final EndpointReferenceType reference;
+
+ private DecoupledDestination(EndpointInfo ei, EndpointReferenceType reference) {
+ this.ei = ei;
+ this.reference = reference;
+ }
+
+ public EndpointReferenceType getAddress() {
+ return reference;
+ }
+
+ public Conduit getBackChannel(Message inMessage) throws IOException {
+ if (ContextUtils.isNoneAddress(reference)) {
+ return null;
+ }
+ Bus bus = inMessage.getExchange().get(Bus.class);
+ //this is a response targeting a decoupled endpoint. Treat it as a oneway so
+ //we don't wait for a response.
+ inMessage.getExchange().setOneWay(true);
+ ConduitInitiator conduitInitiator
+ = bus.getExtension(ConduitInitiatorManager.class)
+ .getConduitInitiatorForUri(reference.getAddress().getValue());
+ if (conduitInitiator != null) {
+ Conduit c = conduitInitiator.getConduit(ei, reference, bus);
+ // ensure decoupled back channel input stream is closed
+ c.setMessageObserver(new MessageObserver() {
+ public void onMessage(Message m) {
+ InputStream is = m.getContent(InputStream.class);
+ if (is != null) {
+ try {
+ is.close();
+ } catch (Exception e) {
+ // ignore
+ }
+ }
+ }
+ });
+ return c;
+ }
+ return null;
+ }
+
+ public MessageObserver getMessageObserver() {
+ return null;
+ }
+
+ public void shutdown() {
+ }
+
+ public void setMessageObserver(MessageObserver observer) {
+ }
+ }
+
private static final Logger LOG = LogUtils.getL7dLogger(InternalContextUtils.class);
/**
@@ -286,47 +341,8 @@ final class InternalContextUtils {
public static Destination createDecoupledDestination(
Exchange exchange, final EndpointReferenceType reference) {
-
final EndpointInfo ei = exchange.get(Endpoint.class).getEndpointInfo();
- return new Destination() {
- public EndpointReferenceType getAddress() {
- return reference;
- }
- public Conduit getBackChannel(Message inMessage) throws IOException {
- Bus bus = inMessage.getExchange().get(Bus.class);
- //this is a response targeting a decoupled endpoint. Treat it as a oneway so
- //we don't wait for a response.
- inMessage.getExchange().setOneWay(true);
- ConduitInitiator conduitInitiator
- = bus.getExtension(ConduitInitiatorManager.class)
- .getConduitInitiatorForUri(reference.getAddress().getValue());
- if (conduitInitiator != null) {
- Conduit c = conduitInitiator.getConduit(ei, reference, bus);
- // ensure decoupled back channel input stream is closed
- c.setMessageObserver(new MessageObserver() {
- public void onMessage(Message m) {
- InputStream is = m.getContent(InputStream.class);
- if (is != null) {
- try {
- is.close();
- } catch (Exception e) {
- // ignore
- }
- }
- }
- });
- return c;
- }
- return null;
- }
- public MessageObserver getMessageObserver() {
- return null;
- }
- public void shutdown() {
- }
- public void setMessageObserver(MessageObserver observer) {
- }
- };
+ return new DecoupledDestination(ei, reference);
}
/**
Modified: cxf/trunk/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/GreeterImplQueueOneWay.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/GreeterImplQueueOneWay.java?rev=1548739&r1=1548738&r2=1548739&view=diff
==============================================================================
--- cxf/trunk/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/GreeterImplQueueOneWay.java (original)
+++ cxf/trunk/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/GreeterImplQueueOneWay.java Fri Dec 6 22:41:09 2013
@@ -19,6 +19,7 @@
package org.apache.cxf.systest.jms;
import javax.jws.WebService;
+import javax.xml.ws.soap.Addressing;
import org.apache.cxf.hello_world_jms.HelloWorldOneWayPort;
@@ -29,6 +30,7 @@ import org.apache.cxf.hello_world_jms.He
endpointInterface = "org.apache.cxf.hello_world_jms.HelloWorldOneWayPort",
targetNamespace = "http://cxf.apache.org/hello_world_jms",
wsdlLocation = "testutils/jms_test.wsdl")
+@Addressing(required = true)
public class GreeterImplQueueOneWay implements HelloWorldOneWayPort {
public void greetMeOneWay(String stringParam0) {
Modified: cxf/trunk/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java?rev=1548739&r1=1548738&r2=1548739&view=diff
==============================================================================
--- cxf/trunk/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java (original)
+++ cxf/trunk/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java Fri Dec 6 22:41:09 2013
@@ -40,10 +40,10 @@ import javax.xml.ws.BindingProvider;
import javax.xml.ws.Endpoint;
import javax.xml.ws.Holder;
import javax.xml.ws.Response;
+import javax.xml.ws.soap.AddressingFeature;
import javax.xml.ws.soap.SOAPBinding;
import javax.xml.ws.soap.SOAPFaultException;
-
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.binding.soap.interceptor.TibcoSoapActionInterceptor;
@@ -93,6 +93,7 @@ import org.apache.hello_world_doc_lit.Gr
import org.apache.hello_world_doc_lit.PingMeFault;
import org.apache.hello_world_doc_lit.SOAPService2;
import org.apache.hello_world_doc_lit.SOAPService7;
+
import org.junit.BeforeClass;
import org.junit.Test;
@@ -542,7 +543,8 @@ public class JMSClientServerTest extends
assertNotNull(service);
try {
- HelloWorldOneWayPort greeter = service.getPort(portName, HelloWorldOneWayPort.class);
+ HelloWorldOneWayPort greeter = service.getPort(portName, HelloWorldOneWayPort.class,
+ new AddressingFeature(true, true));
for (int idx = 0; idx < 5; idx++) {
greeter.greetMeOneWay("JMS:Queue:Milestone-" + idx);
}