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/10 20:22:21 UTC
svn commit: r1549941 - in /cxf/branches/2.7.x-fixes:
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/ syste...
Author: dkulp
Date: Tue Dec 10 19:22:20 2013
New Revision: 1549941
URL: http://svn.apache.org/r1549941
Log:
Merged revisions 1548739 via git cherry-pick from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1548739 | dkulp | 2013-12-06 17:41:09 -0500 (Fri, 06 Dec 2013) | 2 lines
[CXF-5434] Fix some issues where a reply may attempt to be sent to the "none" address.
........
Modified:
cxf/branches/2.7.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCOutInterceptor.java
cxf/branches/2.7.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOutputStream.java
cxf/branches/2.7.x-fixes/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/InternalContextUtils.java
cxf/branches/2.7.x-fixes/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/GreeterImplQueueOneWay.java
cxf/branches/2.7.x-fixes/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java
Modified: cxf/branches/2.7.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCOutInterceptor.java?rev=1549941&r1=1549940&r2=1549941&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCOutInterceptor.java (original)
+++ cxf/branches/2.7.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCOutInterceptor.java Tue Dec 10 19:22:20 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/branches/2.7.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOutputStream.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOutputStream.java?rev=1549941&r1=1549940&r2=1549941&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOutputStream.java (original)
+++ cxf/branches/2.7.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSOutputStream.java Tue Dec 10 19:22:20 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/branches/2.7.x-fixes/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/InternalContextUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/InternalContextUtils.java?rev=1549941&r1=1549940&r2=1549941&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/InternalContextUtils.java (original)
+++ cxf/branches/2.7.x-fixes/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/impl/InternalContextUtils.java Tue Dec 10 19:22:20 2013
@@ -75,6 +75,64 @@ import org.apache.cxf.wsdl.EndpointRefer
* 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,
+ Message partialResponse,
+ EndpointReferenceType address)
+ 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);
+ // 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);
/**
@@ -288,48 +346,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, Message partialResponse,
- EndpointReferenceType address) 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);
- // 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/branches/2.7.x-fixes/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/GreeterImplQueueOneWay.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/GreeterImplQueueOneWay.java?rev=1549941&r1=1549940&r2=1549941&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/GreeterImplQueueOneWay.java (original)
+++ cxf/branches/2.7.x-fixes/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/GreeterImplQueueOneWay.java Tue Dec 10 19:22:20 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/branches/2.7.x-fixes/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java?rev=1549941&r1=1549940&r2=1549941&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java (original)
+++ cxf/branches/2.7.x-fixes/systests/transport-jms/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java Tue Dec 10 19:22:20 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;
@@ -541,7 +542,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);
}