You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ay...@apache.org on 2012/03/06 09:01:34 UTC
svn commit: r1297373 - in /cxf/branches/2.4.x-fixes: ./
rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/
systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/
Author: ay
Date: Tue Mar 6 08:01:34 2012
New Revision: 1297373
URL: http://svn.apache.org/viewvc?rev=1297373&view=rev
Log:
Merged revisions 1297370 via svnmerge from
https://svn.apache.org/repos/asf/cxf/branches/2.5.x-fixes
................
r1297370 | ay | 2012-03-06 08:51:02 +0100 (Tue, 06 Mar 2012) | 9 lines
Merged revisions 1297296 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1297296 | ay | 2012-03-06 00:57:14 +0100 (Tue, 06 Mar 2012) | 1 line
[CXF-4164] Robust-InOnly processing with WS-RM must delay updating the sequence until message delivery
........
................
Added:
cxf/branches/2.4.x-fixes/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/ServiceInvocationAckBase.java
- copied unchanged from r1297370, cxf/branches/2.5.x-fixes/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/ServiceInvocationAckBase.java
cxf/branches/2.4.x-fixes/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/ServiceInvocationAckPersistenceTest.java
- copied unchanged from r1297370, cxf/branches/2.5.x-fixes/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/ServiceInvocationAckPersistenceTest.java
cxf/branches/2.4.x-fixes/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/sync-ack-persistent-server.xml
- copied unchanged from r1297370, cxf/branches/2.5.x-fixes/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/sync-ack-persistent-server.xml
Modified:
cxf/branches/2.4.x-fixes/ (props changed)
cxf/branches/2.4.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMDeliveryInterceptor.java
cxf/branches/2.4.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java
cxf/branches/2.4.x-fixes/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/ServiceInvocationAckTest.java
Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Tue Mar 6 08:01:34 2012
@@ -0,0 +1,2 @@
+/cxf/branches/2.5.x-fixes:1297370
+/cxf/trunk:1297296
Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.4.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMDeliveryInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMDeliveryInterceptor.java?rev=1297373&r1=1297372&r2=1297373&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMDeliveryInterceptor.java (original)
+++ cxf/branches/2.4.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMDeliveryInterceptor.java Tue Mar 6 08:01:34 2012
@@ -23,6 +23,7 @@ import java.util.logging.Logger;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageUtils;
import org.apache.cxf.phase.Phase;
/**
@@ -42,6 +43,12 @@ public class RMDeliveryInterceptor exten
public void handle(Message message) throws SequenceFault, RMException {
LOG.entering(getClass().getName(), "handleMessage");
- getManager().getDestination(message).processingComplete(message);
+ Destination dest = getManager().getDestination(message);
+ final boolean robust =
+ MessageUtils.isTrue(message.getContextualProperty(Message.ROBUST_ONEWAY));
+ if (robust) {
+ dest.acknowledge(message);
+ }
+ dest.processingComplete(message);
}
}
Modified: cxf/branches/2.4.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java?rev=1297373&r1=1297372&r2=1297373&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java (original)
+++ cxf/branches/2.4.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java Tue Mar 6 08:01:34 2012
@@ -25,6 +25,7 @@ import java.util.logging.Logger;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageUtils;
import org.apache.cxf.ws.addressing.AddressingPropertiesImpl;
import org.apache.cxf.ws.addressing.ContextUtils;
import org.apache.cxf.ws.addressing.MAPAggregator;
@@ -142,7 +143,11 @@ public class RMInInterceptor extends Abs
void processSequence(Destination destination, Message message)
throws SequenceFault, RMException {
- destination.acknowledge(message);
+ final boolean robust =
+ MessageUtils.isTrue(message.getContextualProperty(Message.ROBUST_ONEWAY));
+ if (!robust) {
+ destination.acknowledge(message);
+ }
}
void processDeliveryAssurance(RMProperties rmps) {
Modified: cxf/branches/2.4.x-fixes/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/ServiceInvocationAckTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/ServiceInvocationAckTest.java?rev=1297373&r1=1297372&r2=1297373&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/ServiceInvocationAckTest.java (original)
+++ cxf/branches/2.4.x-fixes/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/rm/ServiceInvocationAckTest.java Tue Mar 6 08:01:34 2012
@@ -18,186 +18,12 @@
*/
package org.apache.cxf.systest.ws.rm;
-import java.net.MalformedURLException;
-import java.util.logging.Logger;
-
-import javax.xml.ws.Endpoint;
-
-import org.apache.cxf.Bus;
-import org.apache.cxf.BusFactory;
-import org.apache.cxf.bus.spring.SpringBusFactory;
-import org.apache.cxf.common.logging.LogUtils;
-import org.apache.cxf.greeter_control.Control;
-import org.apache.cxf.greeter_control.ControlService;
-import org.apache.cxf.greeter_control.Greeter;
-import org.apache.cxf.greeter_control.GreeterService;
-import org.apache.cxf.greeter_control.types.FaultLocation;
-import org.apache.cxf.interceptor.ServiceInvokerInterceptor;
-import org.apache.cxf.phase.Phase;
-import org.apache.cxf.test.TestUtilities;
-import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
-import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
-import org.apache.cxf.ws.rm.RMManager;
-
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
/**
* Tests the acknowledgement delivery back to the non-decoupled port when there is some
* error at the provider side and how its behavior is affected by the robust in-only mode setting.
*/
-public class ServiceInvocationAckTest extends AbstractBusClientServerTestBase {
- public static final String PORT = allocatePort(Server.class);
-
- private static final Logger LOG = LogUtils.getLogger(ServiceInvocationAckTest.class);
-
- private static final String CONTROL_PORT_ADDRESS =
- "http://localhost:" + PORT + "/SoapContext/ControlPort";
-
- public static class Server extends AbstractBusTestServerBase {
-
- protected void run() {
- SpringBusFactory factory = new SpringBusFactory();
- Bus bus = factory.createBus();
- BusFactory.setDefaultBus(bus);
- setBus(bus);
-
- ControlImpl implementor = new ControlImpl();
- implementor.setAddress("http://localhost:" + PORT + "/SoapContext/GreeterPort");
- GreeterImpl greeterImplementor = new GreeterImpl();
- implementor.setImplementor(greeterImplementor);
- Endpoint.publish(CONTROL_PORT_ADDRESS, implementor);
- LOG.fine("Published control endpoint.");
- }
-
- public static void main(String[] args) {
- try {
- Server s = new Server();
- s.start();
- } catch (Exception ex) {
- ex.printStackTrace();
- System.exit(-1);
- } finally {
- System.out.println("done!");
- }
- }
- }
-
- private Bus controlBus;
- private Control control;
- private Bus greeterBus;
- private Greeter greeter;
-
-
- @BeforeClass
- public static void startServers() throws Exception {
- TestUtilities.setKeepAliveSystemProperty(false);
- assertTrue("server did not launch correctly", launchServer(Server.class, true));
- }
-
- @AfterClass
- public static void cleanup() {
- TestUtilities.recoverKeepAliveSystemProperty();
- }
-
- @After
- public void tearDown() {
- if (null != greeter) {
- assertTrue("Failed to stop greeter.", control.stopGreeter(null));
- greeterBus.shutdown(true);
- greeterBus = null;
- }
- if (null != control) {
- assertTrue("Failed to stop greeter", control.stopGreeter(null));
- controlBus.shutdown(true);
- }
- }
-
- @Test
- public void testDefaultInvocationHandling() throws Exception {
+public class ServiceInvocationAckTest extends ServiceInvocationAckBase {
+ protected void setupGreeter() throws Exception {
setupGreeter("org/apache/cxf/systest/ws/rm/sync-ack-server.xml");
-
- control.setRobustInOnlyMode(false);
-
- FaultLocation location = new org.apache.cxf.greeter_control.types.ObjectFactory()
- .createFaultLocation();
- location.setPhase(Phase.INVOKE);
- location.setBefore(ServiceInvokerInterceptor.class.getName());
-
- RMManager manager = greeterBus.getExtension(RMManager.class);
-
- // the message is acked and the invocation takes place
- greeter.greetMeOneWay("one");
- Thread.sleep(6000L);
- assertTrue("RetransmissionQueue must be empty", manager.getRetransmissionQueue().isEmpty());
-
- control.setFaultLocation(location);
-
- // the invocation fails but the message is acked because the delivery succeeds
- greeter.greetMeOneWay("two");
- Thread.sleep(6000L);
- assertTrue("RetransmissionQueue must be empty", manager.getRetransmissionQueue().isEmpty());
- }
-
- @Test
- public void testRobustInvocationHandling() throws Exception {
- setupGreeter("org/apache/cxf/systest/ws/rm/sync-ack-server.xml");
-
- control.setRobustInOnlyMode(true);
-
- FaultLocation location = new org.apache.cxf.greeter_control.types.ObjectFactory()
- .createFaultLocation();
- location.setPhase(Phase.INVOKE);
- location.setBefore(ServiceInvokerInterceptor.class.getName());
-
- RMManager manager = greeterBus.getExtension(RMManager.class);
-
-
- // the message is acked and the invocation takes place
- greeter.greetMeOneWay("one");
- Thread.sleep(6000L);
- assertTrue("RetransmissionQueue must be empty", manager.getRetransmissionQueue().isEmpty());
-
- control.setFaultLocation(location);
-
- // the invocation fails but the message is acked because the delivery succeeds
- greeter.greetMeOneWay("two");
- Thread.sleep(6000L);
- assertFalse("RetransmissionQueue must not be empty", manager.getRetransmissionQueue().isEmpty());
-
- location.setPhase(null);
- control.setFaultLocation(location);
-
- // the retransmission succeeds and the invocation succeeds, the message is acked
- Thread.sleep(6000L);
- assertTrue("RetransmissionQueue must be empty", manager.getRetransmissionQueue().isEmpty());
-
- }
-
- private void setupGreeter(String cfgResource) throws NumberFormatException, MalformedURLException {
-
- SpringBusFactory bf = new SpringBusFactory();
-
- controlBus = bf.createBus();
- BusFactory.setDefaultBus(controlBus);
-
- ControlService cs = new ControlService();
- control = cs.getControlPort();
- updateAddressPort(control, PORT);
-
- assertTrue("Failed to start greeter", control.startGreeter(cfgResource));
-
- greeterBus = bf.createBus(cfgResource);
- BusFactory.setDefaultBus(greeterBus);
- LOG.fine("Initialised greeter bus with configuration: " + cfgResource);
-
- GreeterService gs = new GreeterService();
-
- greeter = gs.getGreeterPort();
- updateAddressPort(greeter, PORT);
- LOG.fine("Created greeter client.");
-
}
}