Repository: cxf Updated Branches: refs/heads/master 54b617b84 -> 266ad768f
[CXF-5741]:The properties in the requestContext are not copied into RMClient Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/266ad768 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/266ad768 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/266ad768 Branch: refs/heads/master Commit: 266ad768fbc09feb2fe257b14e29e1c07653829a Parents: 54b617b Author: Jim Ma <[email protected]> Authored: Wed May 14 09:26:50 2014 +0800 Committer: Jim Ma <[email protected]> Committed: Wed May 14 09:30:27 2014 +0800 ---------------------------------------------------------------------- rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java | 11 +++++++---- .../src/main/java/org/apache/cxf/ws/rm/RMManager.java | 11 ++++++++++- .../src/test/java/org/apache/cxf/ws/rm/ProxyTest.java | 13 +++++++++---- .../test/java/org/apache/cxf/ws/rm/RMManagerTest.java | 4 +++- 4 files changed, 29 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/266ad768/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java ---------------------------------------------------------------------- diff --git a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java index 7646c54..977ac55 100644 --- a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java +++ b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java @@ -129,8 +129,8 @@ public class Proxy { } public CreateSequenceResponseType createSequence(EndpointReferenceType defaultAcksTo, RelatesToType relatesTo, - boolean isServer, final ProtocolVariation protocol, final Exchange exchange) throws RMException { - + boolean isServer, final ProtocolVariation protocol, final Exchange exchange, Map<String, Object> context) + throws RMException { SourcePolicyType sp = reliableEndpoint.getManager().getSourcePolicy(); CreateSequenceType create = new CreateSequenceType(); @@ -196,7 +196,7 @@ public class Proxy { } - Object resp = invoke(oi, protocol, new Object[] {send}, null, exchange); + Object resp = invoke(oi, protocol, new Object[] {send}, context, exchange); return codec.convertReceivedCreateSequenceResponse(resp); } @@ -307,6 +307,9 @@ public class Proxy { BindingOperationInfo boi = bi.getOperation(oi); try { + if (context != null) { + client.getRequestContext().putAll(context); + } Object[] result = client.invoke(boi, params, context, exchange); if (result != null && result.length > 0) { return result[0]; @@ -376,4 +379,4 @@ public class Proxy { void setReliableEndpoint(RMEndpoint rme) { reliableEndpoint = rme; } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/cxf/blob/266ad768/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java ---------------------------------------------------------------------- diff --git a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java index 37a2460..4442ec5 100644 --- a/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java +++ b/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java @@ -22,6 +22,7 @@ package org.apache.cxf.ws.rm; import java.io.Closeable; import java.io.IOException; import java.util.Collection; +import java.util.HashMap; import java.util.Map; import java.util.Timer; import java.util.concurrent.ConcurrentHashMap; @@ -460,8 +461,16 @@ public class RMManager { Proxy proxy = source.getReliableEndpoint().getProxy(); ProtocolVariation protocol = config.getProtocolVariation(); Exchange exchange = new ExchangeImpl(); + Map<String, Object> context = new HashMap<String, Object>(16); + for (String key : message.getContextualPropertyKeys()) { + //copy other properties? + if (key.startsWith("ws-security")) { + context.put(key, message.getContextualProperty(key)); + } + } + CreateSequenceResponseType createResponse = - proxy.createSequence(acksTo, relatesTo, isServer, protocol, exchange); + proxy.createSequence(acksTo, relatesTo, isServer, protocol, exchange, context); if (!isServer) { Servant servant = source.getReliableEndpoint().getServant(); servant.createSequenceResponse(createResponse, protocol); http://git-wip-us.apache.org/repos/asf/cxf/blob/266ad768/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ProxyTest.java ---------------------------------------------------------------------- diff --git a/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ProxyTest.java b/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ProxyTest.java index fe3e087..b567dc3 100644 --- a/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ProxyTest.java +++ b/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ProxyTest.java @@ -50,6 +50,7 @@ import org.apache.cxf.ws.rm.v200702.Identifier; import org.apache.cxf.ws.rm.v200702.OfferType; import org.easymock.EasyMock; import org.easymock.IMocksControl; + import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -270,12 +271,15 @@ public class ProxyTest extends Assert { BindingOperationInfo boi = control.createMock(BindingOperationInfo.class); EasyMock.expect(bi.getOperation(oi)).andReturn(boi).anyTimes(); Client client = control.createMock(Client.class); + EasyMock.expect(client.getRequestContext()).andReturn(new HashMap<String, Object>()).anyTimes(); + EasyMock.expect(proxy.createClient(bus, endpoint, ProtocolVariation.RM10WSA200408, conduit, replyTo)) .andReturn(client).anyTimes(); Object[] args = new Object[] {}; Map<String, Object> context = new HashMap<String, Object>(); Object[] results = new Object[] {"a", "b", "c"}; Exchange exchange = control.createMock(Exchange.class); + EasyMock.expect(client.invoke(boi, args, context, exchange)).andReturn(results).anyTimes(); control.replay(); @@ -354,22 +358,23 @@ public class ProxyTest extends Assert { csr = new org.apache.cxf.ws.rm.v200502.CreateSequenceResponseType(); } ExchangeImpl exchange = new ExchangeImpl(); + EasyMock.expect(proxy.invoke(EasyMock.same(oi), EasyMock.isA(ProtocolVariation.class), - EasyMock.isA(Object[].class), (Map<String, Object>)EasyMock.isNull(), + EasyMock.isA(Object[].class), EasyMock.isA(Map.class), EasyMock.isA(Exchange.class))).andReturn(csr).anyTimes(); - EndpointReferenceType defaultAcksTo = control.createMock(EndpointReferenceType.class); AttributedURIType aut = control.createMock(AttributedURIType.class); EasyMock.expect(aut.getValue()).andReturn("here").anyTimes(); EasyMock.expect(defaultAcksTo.getAddress()).andReturn(aut).anyTimes(); RelatesToType relatesTo = control.createMock(RelatesToType.class); control.replay(); + Map<String, Object> context = new HashMap<String, Object>(); if (isServer) { assertNull(proxy.createSequence(defaultAcksTo, relatesTo, isServer, - ProtocolVariation.RM10WSA200408, exchange)); + ProtocolVariation.RM10WSA200408, exchange, context)); } else { assertNotNull(proxy.createSequence(defaultAcksTo, relatesTo, isServer, - ProtocolVariation.RM10WSA200408, exchange)); + ProtocolVariation.RM10WSA200408, exchange, context)); } } http://git-wip-us.apache.org/repos/asf/cxf/blob/266ad768/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java ---------------------------------------------------------------------- diff --git a/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java b/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java index ba01bd2..8e7304a 100644 --- a/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java +++ b/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.TimerTask; @@ -391,6 +392,7 @@ public class RMManagerTest extends Assert { manager = control.createMock(RMManager.class, new Method[] {m}); Message message = control.createMock(Message.class); Exchange exchange = control.createMock(Exchange.class); + EasyMock.expect(message.getContextualPropertyKeys()).andReturn(new HashSet<String>()).anyTimes(); EasyMock.expect(message.getExchange()).andReturn(exchange).anyTimes(); EasyMock.expect(exchange.getOutMessage()).andReturn(message).anyTimes(); EasyMock.expect(exchange.getInMessage()).andReturn(null).anyTimes(); @@ -416,7 +418,7 @@ public class RMManagerTest extends Assert { (RelatesToType)EasyMock.isNull(), EasyMock.eq(false), EasyMock.isA(ProtocolVariation.class), - EasyMock.isA(Exchange.class)); + EasyMock.isA(Exchange.class), EasyMock.isA(HashMap.class)); EasyMock.expectLastCall().andReturn(createResponse); Servant servant = control.createMock(Servant.class); EasyMock.expect(rme.getServant()).andReturn(servant);
