Repository: cxf Updated Branches: refs/heads/2.6.x-fixes 51e550569 -> ff553c2eb
[CXF-5709] WSRM 1.1 TerminateSequence should not overwrite default replyTo to none Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/ff553c2e Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/ff553c2e Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/ff553c2e Branch: refs/heads/2.6.x-fixes Commit: ff553c2ebef258b6b3d35e2e24b6b38e54d125bd Parents: 51e5505 Author: Akitoshi Yoshida <[email protected]> Authored: Wed Apr 23 18:46:52 2014 +0200 Committer: Akitoshi Yoshida <[email protected]> Committed: Thu Apr 24 11:29:49 2014 +0200 ---------------------------------------------------------------------- .../org/apache/cxf/ws/rm/RMOutInterceptor.java | 3 +- .../apache/cxf/ws/rm/RMOutInterceptorTest.java | 47 ++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/ff553c2e/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMOutInterceptor.java ---------------------------------------------------------------------- diff --git a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMOutInterceptor.java b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMOutInterceptor.java index 766fbb5..f9c855b 100644 --- a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMOutInterceptor.java +++ b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMOutInterceptor.java @@ -205,7 +205,8 @@ public class RMOutInterceptor extends AbstractRMInterceptor<Message> { } } if (constants.getSequenceAckAction().equals(action) - || constants.getTerminateSequenceAction().equals(action)) { + || (constants.getTerminateSequenceAction().equals(action) + && RM10Constants.NAMESPACE_URI.equals(rmUri))) { maps.setReplyTo(RMUtils.createNoneReference()); } http://git-wip-us.apache.org/repos/asf/cxf/blob/ff553c2e/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMOutInterceptorTest.java ---------------------------------------------------------------------- diff --git a/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMOutInterceptorTest.java b/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMOutInterceptorTest.java index a4ca08a..5515fa1 100644 --- a/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMOutInterceptorTest.java +++ b/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMOutInterceptorTest.java @@ -35,6 +35,7 @@ import org.apache.cxf.ws.addressing.AttributedURIType; import org.apache.cxf.ws.addressing.EndpointReferenceType; import org.apache.cxf.ws.addressing.JAXWSAConstants; import org.apache.cxf.ws.addressing.MAPAggregator; +import org.apache.cxf.ws.addressing.Names; import org.apache.cxf.ws.addressing.VersionTransformer.Names200408; import org.apache.cxf.ws.addressing.impl.AddressingPropertiesImpl; import org.apache.cxf.ws.rm.v200702.Identifier; @@ -192,8 +193,54 @@ public class RMOutInterceptorTest extends Assert { control.verify(); } + @Test + public void testRM11TerminateSequence() throws RMException, SequenceFault { + testRMTerminateSequence(RM11Constants.NAMESPACE_URI, Names.WSA_NAMESPACE_NAME, + RM11Constants.TERMINATE_SEQUENCE_ACTION, + org.apache.cxf.ws.addressing.Names.WSA_ANONYMOUS_ADDRESS, + org.apache.cxf.ws.addressing.Names.WSA_ANONYMOUS_ADDRESS); + } + + @Test + public void testRM10TerminateSequence() throws RMException, SequenceFault { + testRMTerminateSequence(RM10Constants.NAMESPACE_URI, Names.WSA_NAMESPACE_NAME, + RM10Constants.TERMINATE_SEQUENCE_ACTION, + org.apache.cxf.ws.addressing.Names.WSA_ANONYMOUS_ADDRESS, + org.apache.cxf.ws.addressing.Names.WSA_NONE_ADDRESS); + } + + private void testRMTerminateSequence(String wsrmnsuri, String wsansuri, + String action, String breplyto, String areplyto) + throws RMException, SequenceFault { + AddressingPropertiesImpl maps = createMAPs(action, "localhost:9000/GreeterPort", breplyto); + + Message message = control.createMock(Message.class); + Exchange exchange = control.createMock(Exchange.class); + EasyMock.expect(message.getExchange()).andReturn(exchange).anyTimes(); + EasyMock.expect(exchange.getOutMessage()).andReturn(message).anyTimes(); + EasyMock.expect(message.get(Message.REQUESTOR_ROLE)).andReturn(Boolean.TRUE).anyTimes(); + EasyMock.expect(message.get(JAXWSAConstants.CLIENT_ADDRESSING_PROPERTIES_OUTBOUND)) + .andReturn(maps).anyTimes(); + RMManager manager = control.createMock(RMManager.class); + EasyMock.expect(manager.getRMNamespace(EasyMock.same(message))) + .andReturn(wsrmnsuri).anyTimes(); + EasyMock.expect(manager.getAddressingNamespace(EasyMock.same(message))) + .andReturn(wsansuri).anyTimes(); + control.replay(); + RMOutInterceptor rmi = new RMOutInterceptor(); + rmi.setManager(manager); + rmi.handle(message); + + assertEquals(areplyto, + maps.getReplyTo().getAddress().getValue()); + control.verify(); + } + private AddressingPropertiesImpl createMAPs(String action, String to, String replyTo) { AddressingPropertiesImpl maps = new AddressingPropertiesImpl(); + AttributedURIType actionuri = new AttributedURIType(); + actionuri.setValue(action); + maps.setAction(actionuri); maps.setTo(RMUtils.createReference(to)); EndpointReferenceType epr = RMUtils.createReference(replyTo); maps.setReplyTo(epr);
