You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ds...@apache.org on 2013/10/11 13:30:54 UTC

svn commit: r1531258 - in /cxf/trunk/rt: ./ ws/rm/ ws/rm/src/main/java/org/apache/cxf/ws/rm/ ws/rm/src/test/java/org/apache/cxf/ws/rm/

Author: dsosnoski
Date: Fri Oct 11 11:30:53 2013
New Revision: 1531258

URL: http://svn.apache.org/r1531258
Log:
CXF-5105 - basic support for using WS-RM over WS-SecureConversation

Modified:
    cxf/trunk/rt/pom.xml
    cxf/trunk/rt/ws/rm/pom.xml
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMEndpoint.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ProxyTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMEndpointTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java

Modified: cxf/trunk/rt/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/pom.xml?rev=1531258&r1=1531257&r2=1531258&view=diff
==============================================================================
--- cxf/trunk/rt/pom.xml (original)
+++ cxf/trunk/rt/pom.xml Fri Oct 11 11:30:53 2013
@@ -53,8 +53,8 @@
         <module>transports/udp</module>
         <module>ws/policy</module>
         <module>ws/addr</module>
-        <module>ws/rm</module>
         <module>ws/security</module>
+        <module>ws/rm</module>
         <module>ws/mex</module>
         <module>ws/eventing</module>
         <module>rs/client</module>

Modified: cxf/trunk/rt/ws/rm/pom.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/pom.xml?rev=1531258&r1=1531257&r2=1531258&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/pom.xml (original)
+++ cxf/trunk/rt/ws/rm/pom.xml Fri Oct 11 11:30:53 2013
@@ -83,6 +83,11 @@
         </dependency>
         <dependency>
             <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-ws-security</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-management</artifactId>
             <version>${project.version}</version>
         </dependency>

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java?rev=1531258&r1=1531257&r2=1531258&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/Proxy.java Fri Oct 11 11:30:53 2013
@@ -35,6 +35,8 @@ import org.apache.cxf.endpoint.ClientImp
 import org.apache.cxf.endpoint.ConduitSelector;
 import org.apache.cxf.endpoint.DeferredConduitSelector;
 import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.message.Exchange;
+import org.apache.cxf.message.ExchangeImpl;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.service.model.BindingInfo;
 import org.apache.cxf.service.model.BindingOperationInfo;
@@ -85,7 +87,7 @@ public class Proxy {
         RMConstants constants = protocol.getConstants();
         OperationInfo oi = reliableEndpoint.getEndpoint(protocol).getEndpointInfo()
             .getService().getInterface().getOperation(constants.getSequenceAckOperationName());
-        invoke(oi, protocol, new Object[] {ds}, null);
+        invoke(oi, protocol, new Object[] {ds});
     }
     
     void terminate(SourceSequence ss) throws RMException {
@@ -98,7 +100,7 @@ public class Proxy {
         ts.setIdentifier(ss.getIdentifier());
         ts.setLastMsgNumber(ss.getCurrentMessageNr());
         EncoderDecoder codec = protocol.getCodec();
-        invoke(oi, protocol, new Object[] {codec.convertToSend(ts)}, null);
+        invoke(oi, protocol, new Object[] {codec.convertToSend(ts)});
     }
     
     void terminate(DestinationSequence ds) throws RMException {
@@ -111,7 +113,7 @@ public class Proxy {
         ts.setIdentifier(ds.getIdentifier());
         ts.setLastMsgNumber(ds.getLastMessageNumber());
         EncoderDecoder codec = protocol.getCodec();
-        invoke(oi, protocol, new Object[] {codec.convertToSend(ts)}, null);
+        invoke(oi, protocol, new Object[] {codec.convertToSend(ts)});
     }
     
     void createSequenceResponse(final Object createResponse, ProtocolVariation protocol) throws RMException {
@@ -122,14 +124,12 @@ public class Proxy {
         
         // TODO: need to set relatesTo
 
-        invoke(oi, protocol, new Object[] {createResponse}, null);
+        invoke(oi, protocol, new Object[] {createResponse});
        
     }
 
-    public CreateSequenceResponseType createSequence(
-                        EndpointReferenceType defaultAcksTo,
-                        RelatesToType relatesTo,
-                        boolean isServer, final ProtocolVariation protocol) throws RMException {
+    public CreateSequenceResponseType createSequence(EndpointReferenceType defaultAcksTo, RelatesToType relatesTo, 
+             boolean isServer, final ProtocolVariation protocol, final Exchange exchange) throws RMException {
         
         SourcePolicyType sp = reliableEndpoint.getManager().getSourcePolicy();
         CreateSequenceType create = new CreateSequenceType();        
@@ -181,7 +181,7 @@ public class Proxy {
             Runnable r = new Runnable() {
                 public void run() {
                     try {
-                        invoke(oi, protocol, new Object[] {send}, null);
+                        invoke(oi, protocol, new Object[] {send}, null, exchange);
                     } catch (RMException ex) {
                         // already logged
                     }
@@ -196,7 +196,7 @@ public class Proxy {
         }
         
         
-        Object resp = invoke(oi, protocol, new Object[] {send}, null);
+        Object resp = invoke(oi, protocol, new Object[] {send}, null, exchange);
         return codec.convertReceivedCreateSequenceResponse(resp);
     }
     
@@ -264,7 +264,7 @@ public class Proxy {
         RMConstants constants = protocol.getConstants();
         OperationInfo oi = reliableEndpoint.getEndpoint(protocol).getEndpointInfo().getService()
             .getInterface().getOperation(constants.getAckRequestedOperationName());
-        invoke(oi, protocol, new Object[] {}, null);
+        invoke(oi, protocol, new Object[] {});
     }
         
     Identifier getOfferedIdentifier() {
@@ -278,7 +278,7 @@ public class Proxy {
     }
        
     Object invoke(OperationInfo oi, ProtocolVariation protocol, 
-                  Object[] params, Map<String, Object> context) throws RMException {
+                  Object[] params, Map<String, Object> context, Exchange exchange) throws RMException {
         
         if (LOG.isLoggable(Level.INFO)) {
             LOG.log(Level.INFO, "Sending out-of-band RM protocol message {0}.", 
@@ -307,7 +307,7 @@ public class Proxy {
         
         BindingOperationInfo boi = bi.getOperation(oi);
         try {
-            Object[] result = client.invoke(boi, params, context);
+            Object[] result = client.invoke(boi, params, context, exchange);
             if (result != null && result.length > 0) {
                 return result[0];
             }
@@ -322,6 +322,15 @@ public class Proxy {
         return null;
     }
     
+    Object invoke(OperationInfo oi, ProtocolVariation protocol, Object[] params, Map<String, Object> context)
+        throws RMException {
+        return invoke(oi, protocol, params, context, new ExchangeImpl());
+    }
+    
+    Object invoke(OperationInfo oi, ProtocolVariation protocol, Object[] params) throws RMException {
+        return invoke(oi, protocol, params, null);
+    }
+    
     protected Client createClient(Bus bus, Endpoint endpoint, final ProtocolVariation protocol, 
                                   Conduit conduit, final EndpointReferenceType address) {
         ConduitSelector cs = new DeferredConduitSelector(conduit) {

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMEndpoint.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMEndpoint.java?rev=1531258&r1=1531257&r2=1531258&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMEndpoint.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMEndpoint.java Fri Oct 11 11:30:53 2013
@@ -51,11 +51,9 @@ import org.apache.cxf.common.logging.Log
 import org.apache.cxf.common.util.PackageUtils;
 import org.apache.cxf.databinding.DataBinding;
 import org.apache.cxf.endpoint.Endpoint;
-import org.apache.cxf.interceptor.Interceptor;
 import org.apache.cxf.jaxb.JAXBDataBinding;
 import org.apache.cxf.management.InstrumentationManager;
 import org.apache.cxf.management.jmx.export.runtime.ModelMBeanAssembler;
-import org.apache.cxf.message.Message;
 import org.apache.cxf.service.Service;
 import org.apache.cxf.service.factory.ServiceConstructionException;
 import org.apache.cxf.service.model.BindingInfo;
@@ -71,16 +69,14 @@ import org.apache.cxf.ws.addressing.Endp
 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.policy.EffectivePolicy;
-import org.apache.cxf.ws.policy.EndpointPolicy;
-import org.apache.cxf.ws.policy.PolicyEngine;
-import org.apache.cxf.ws.policy.PolicyInterceptorProviderRegistry;
+import org.apache.cxf.ws.policy.EffectivePolicyImpl;
+import org.apache.cxf.ws.policy.EndpointPolicyImpl;
+import org.apache.cxf.ws.policy.PolicyEngineImpl;
 import org.apache.cxf.ws.rm.manager.SequenceTerminationPolicyType;
 import org.apache.cxf.ws.rm.manager.SourcePolicyType;
 import org.apache.cxf.ws.rm.v200702.CloseSequenceResponseType;
 import org.apache.cxf.ws.rm.v200702.CloseSequenceType;
-import org.apache.neethi.Assertion;
-import org.apache.neethi.Policy;
+import org.apache.cxf.ws.security.SecurityConstants;
 
 public class RMEndpoint {
 
@@ -107,6 +103,7 @@ public class RMEndpoint {
     private Destination destination;
     private Map<ProtocolVariation, WrappedService> services;
     private Map<ProtocolVariation, Endpoint> endpoints;
+    private Object tokenStore;
     private Proxy proxy;
     private Servant servant;
     private long lastApplicationMessage;
@@ -138,6 +135,7 @@ public class RMEndpoint {
         applicationMessageCount = new AtomicInteger();
         controlMessageCount = new AtomicInteger();
         acknowledgementSequence = new AtomicInteger();
+        tokenStore = ae.getEndpointInfo().getProperty(SecurityConstants.TOKEN_STORE_CACHE_INSTANCE);
     }
 
     /**
@@ -435,35 +433,36 @@ public class RMEndpoint {
             ei.addExtensor(ua);
         }
         si.addEndpoint(ei);
-
+        ei.setProperty(SecurityConstants.TOKEN_STORE_CACHE_INSTANCE, tokenStore);
+        
         Endpoint endpoint = new WrappedEndpoint(applicationEndpoint, ei, service);
+        
         service.setEndpoint(endpoint);
         endpoints.put(protocol, endpoint);
     }
 
     void setPolicies() {
         // use same WS-policies as for application endpoint
-        PolicyEngine engine = manager.getBus().getExtension(PolicyEngine.class);
+        PolicyEngineImpl engine = manager.getBus().getExtension(PolicyEngineImpl.class);
         if (null == engine || !engine.isEnabled()) {
             return;
         }
 
         for (Endpoint endpoint : endpoints.values()) {
             EndpointInfo ei = endpoint.getEndpointInfo();
-            PolicyInterceptorProviderRegistry reg = manager.getBus()
-                .getExtension(PolicyInterceptorProviderRegistry.class);
-            EndpointPolicy ep = null == conduit ? engine.getServerEndpointPolicy(applicationEndpoint
-                .getEndpointInfo(), null) : engine.getClientEndpointPolicy(applicationEndpoint.getEndpointInfo(),
-                    conduit);
+            EndpointPolicyImpl epi = (EndpointPolicyImpl)(null == conduit
+                ? engine.getServerEndpointPolicy(applicationEndpoint.getEndpointInfo(), null)
+                    : engine.getClientEndpointPolicy(applicationEndpoint.getEndpointInfo(), conduit));
             
             if (conduit != null) {
-                engine.setClientEndpointPolicy(ei, ep);
+                engine.setClientEndpointPolicy(ei, epi);
             } else {
-                engine.setServerEndpointPolicy(ei, ep);
+                engine.setServerEndpointPolicy(ei, epi);
             }
-            
-            EffectivePolicy effectiveOutbound = new EffectivePolicyImpl(ep, reg, true, false);
-            EffectivePolicy effectiveInbound = new EffectivePolicyImpl(ep, reg, false, false);
+            EffectivePolicyImpl effectiveOutbound = new EffectivePolicyImpl();
+            effectiveOutbound.initialise(epi, engine, false, false);
+            EffectivePolicyImpl effectiveInbound = new EffectivePolicyImpl();
+            effectiveInbound.initialise(epi, engine, true, false);
             
             BindingInfo bi = ei.getBinding();
             Collection<BindingOperationInfo> bois = bi.getOperations();
@@ -827,29 +826,4 @@ public class RMEndpoint {
     int getCompletedDestinationSequenceCount() {
         return destination != null ? destination.getCompletedSequenceCount() : 0;
     }
-
-    class EffectivePolicyImpl implements EffectivePolicy {
-
-        private EndpointPolicy endpointPolicy;
-        private List<Interceptor<? extends Message>> interceptors;
-
-        EffectivePolicyImpl(EndpointPolicy ep, PolicyInterceptorProviderRegistry reg, boolean outbound,
-                            boolean fault) {
-            endpointPolicy = ep;
-            interceptors = reg.getInterceptorsForAlternative(endpointPolicy.getChosenAlternative(),
-                                                             outbound, fault);
-        }
-
-        public Collection<Assertion> getChosenAlternative() {
-            return endpointPolicy.getChosenAlternative();
-        }
-
-        public List<Interceptor<? extends Message>> getInterceptors() {
-            return interceptors;
-        }
-
-        public Policy getPolicy() {
-            return endpointPolicy.getPolicy();
-        }
-    }
 }

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java?rev=1531258&r1=1531257&r2=1531258&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMInInterceptor.java Fri Oct 11 11:30:53 2013
@@ -32,6 +32,7 @@ import org.apache.cxf.ws.addressing.Cont
 import org.apache.cxf.ws.addressing.MAPAggregator;
 import org.apache.cxf.ws.rm.v200702.Identifier;
 import org.apache.cxf.ws.rm.v200702.SequenceAcknowledgement;
+import org.apache.cxf.ws.security.trust.STSUtils;
 
 /**
  * 
@@ -112,6 +113,12 @@ public class RMInInterceptor extends Abs
             LOG.fine("Action: " + action);
         }
         
+        // RM does not apply to WS-Trust messages, as used by WS-SecureConversation
+        if (action != null && action.contains("/RST/SCT")
+            && (action.startsWith(STSUtils.WST_NS_05_02) || action.startsWith(STSUtils.WST_NS_05_12))) {
+            return;
+        }
+        
         Object originalRequestor = message.get(RMMessageConstants.ORIGINAL_REQUESTOR_ROLE);
         if (null != originalRequestor) {
             LOG.fine("Restoring original requestor role to: " + originalRequestor);

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java?rev=1531258&r1=1531257&r2=1531258&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java Fri Oct 11 11:30:53 2013
@@ -74,6 +74,7 @@ import org.apache.cxf.ws.rm.v200702.Clos
 import org.apache.cxf.ws.rm.v200702.CreateSequenceResponseType;
 import org.apache.cxf.ws.rm.v200702.Identifier;
 import org.apache.cxf.ws.rm.v200702.SequenceType;
+import org.apache.cxf.ws.security.SecurityConstants;
 
 /**
  * 
@@ -447,11 +448,19 @@ public class RMManager {
             }
             Proxy proxy = source.getReliableEndpoint().getProxy();
             ProtocolVariation protocol = config.getProtocolVariation();
+            Exchange exchange = new ExchangeImpl();
             CreateSequenceResponseType createResponse = 
-                proxy.createSequence(acksTo, relatesTo, isServer, protocol);
+                proxy.createSequence(acksTo, relatesTo, isServer, protocol, exchange);
             if (!isServer) {
                 Servant servant = source.getReliableEndpoint().getServant();
                 servant.createSequenceResponse(createResponse, protocol);
+                
+                // propagate security properties to application endpoint, in case we're using WS-SecureConversation
+                Exchange appex = message.getExchange();
+                if (appex.get(SecurityConstants.TOKEN) == null) {
+                    appex.put(SecurityConstants.TOKEN, exchange.get(SecurityConstants.TOKEN));
+                    appex.put(SecurityConstants.TOKEN_ID, exchange.get(SecurityConstants.TOKEN_ID));
+                }
             }
 
             seq = source.awaitCurrent(inSeqId);

Modified: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ProxyTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ProxyTest.java?rev=1531258&r1=1531257&r2=1531258&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ProxyTest.java (original)
+++ cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/ProxyTest.java Fri Oct 11 11:30:53 2013
@@ -30,6 +30,8 @@ import org.apache.cxf.endpoint.Client;
 import org.apache.cxf.endpoint.ConduitSelector;
 import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.jaxb.DatatypeFactory;
+import org.apache.cxf.message.Exchange;
+import org.apache.cxf.message.ExchangeImpl;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.service.model.BindingInfo;
 import org.apache.cxf.service.model.BindingOperationInfo;
@@ -273,10 +275,11 @@ public class ProxyTest extends Assert {
         Object[] args = new Object[] {};
         Map<String, Object> context = new HashMap<String, Object>();
         Object[] results = new Object[] {"a", "b", "c"};
-        EasyMock.expect(client.invoke(boi, args, context)).andReturn(results).anyTimes();        
+        Exchange exchange = control.createMock(Exchange.class);
+        EasyMock.expect(client.invoke(boi, args, context, exchange)).andReturn(results).anyTimes();
         
         control.replay();
-        assertEquals("a", proxy.invoke(oi, ProtocolVariation.RM10WSA200408, args, context));
+        assertEquals("a", proxy.invoke(oi, ProtocolVariation.RM10WSA200408, args, context, exchange));
     }
     
     @Test 
@@ -306,9 +309,10 @@ public class ProxyTest extends Assert {
     
     
     
+    @SuppressWarnings("unchecked")
     private void testCreateSequence(boolean isServer) throws NoSuchMethodException, RMException {
         Method m = Proxy.class.getDeclaredMethod("invoke", 
-            new Class[] {OperationInfo.class, ProtocolVariation.class, Object[].class, Map.class});
+            new Class[] {OperationInfo.class, ProtocolVariation.class, Object[].class, Map.class, Exchange.class});
         Proxy proxy = EasyMock.createMockBuilder(Proxy.class)
             .addMockedMethod(m).createMock(control);
         proxy.setReliableEndpoint(rme);
@@ -337,19 +341,22 @@ public class ProxyTest extends Assert {
         InterfaceInfo ii = control.createMock(InterfaceInfo.class);
         EasyMock.expect(si.getInterface()).andReturn(ii).anyTimes();
         OperationInfo oi = control.createMock(OperationInfo.class);
+        org.apache.cxf.ws.rm.v200502.CreateSequenceResponseType csr = null;
         if (isServer) {
             EasyMock.expect(ii.getOperation(RM10Constants.CREATE_SEQUENCE_ONEWAY_QNAME))
                 .andReturn(oi).anyTimes();
             Endpoint ae = control.createMock(Endpoint.class);
             EasyMock.expect(rme.getApplicationEndpoint()).andReturn(ae).anyTimes();
             EasyMock.expect(ae.getExecutor()).andReturn(SynchronousExecutor.getInstance()).anyTimes();
-            expectInvoke(proxy, oi, null);
         } else {
             EasyMock.expect(ii.getOperation(RM10Constants.CREATE_SEQUENCE_QNAME)).andReturn(oi).anyTimes();
-            org.apache.cxf.ws.rm.v200502.CreateSequenceResponseType csr =
-                new org.apache.cxf.ws.rm.v200502.CreateSequenceResponseType();
-            expectInvoke(proxy, oi, csr);
+            
+            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(Exchange.class))).andReturn(csr).anyTimes();
         
         EndpointReferenceType defaultAcksTo = control.createMock(EndpointReferenceType.class);
         AttributedURIType aut = control.createMock(AttributedURIType.class);
@@ -359,17 +366,17 @@ public class ProxyTest extends Assert {
         control.replay();
         if (isServer) {
             assertNull(proxy.createSequence(defaultAcksTo, relatesTo, isServer, 
-                                            ProtocolVariation.RM10WSA200408));
+                                            ProtocolVariation.RM10WSA200408, exchange));
         } else {
             assertNotNull(proxy.createSequence(defaultAcksTo, relatesTo, isServer, 
-                                               ProtocolVariation.RM10WSA200408));
+                                               ProtocolVariation.RM10WSA200408, exchange));
         }
     }
     
     @SuppressWarnings("unchecked")
     private void expectInvoke(Proxy proxy, OperationInfo oi, Object expectedReturn) throws RMException {
         EasyMock.expect(proxy.invoke(EasyMock.same(oi), EasyMock.isA(ProtocolVariation.class), 
-                                     EasyMock.isA(Object[].class), 
+            EasyMock.isA(Object[].class),
             (Map<String, Object>)EasyMock.isNull())).andReturn(expectedReturn).anyTimes();
     }
     
@@ -377,7 +384,7 @@ public class ProxyTest extends Assert {
     private void expectInvokeWithContext(Proxy proxy, OperationInfo oi, Object expectedReturn) 
         throws RMException {
         EasyMock.expect(proxy.invoke(EasyMock.same(oi), EasyMock.isA(ProtocolVariation.class),
-                                     EasyMock.isA(Object[].class), 
+            EasyMock.isA(Object[].class),
             EasyMock.isA(Map.class))).andReturn(expectedReturn).anyTimes();
     }
 }

Modified: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMEndpointTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMEndpointTest.java?rev=1531258&r1=1531257&r2=1531258&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMEndpointTest.java (original)
+++ cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMEndpointTest.java Fri Oct 11 11:30:53 2013
@@ -21,7 +21,6 @@ package org.apache.cxf.ws.rm;
 
 import java.lang.reflect.Method;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.List;
 
 import javax.wsdl.extensions.ExtensibilityElement;
@@ -32,8 +31,8 @@ import org.apache.cxf.binding.soap.Soap1
 import org.apache.cxf.binding.soap.SoapVersion;
 import org.apache.cxf.binding.soap.model.SoapBindingInfo;
 import org.apache.cxf.endpoint.Endpoint;
-import org.apache.cxf.interceptor.Interceptor;
-import org.apache.cxf.message.Message;
+import org.apache.cxf.endpoint.EndpointException;
+import org.apache.cxf.endpoint.EndpointImpl;
 import org.apache.cxf.service.Service;
 import org.apache.cxf.service.model.BindingInfo;
 import org.apache.cxf.service.model.EndpointInfo;
@@ -43,13 +42,8 @@ import org.apache.cxf.service.model.Serv
 import org.apache.cxf.transport.Conduit;
 import org.apache.cxf.ws.addressing.EndpointReferenceType;
 import org.apache.cxf.ws.addressing.Names;
-import org.apache.cxf.ws.policy.EffectivePolicy;
-import org.apache.cxf.ws.policy.EndpointPolicy;
-import org.apache.cxf.ws.policy.PolicyEngine;
-import org.apache.cxf.ws.policy.PolicyInterceptorProviderRegistry;
+import org.apache.cxf.ws.policy.PolicyEngineImpl;
 import org.apache.cxf.ws.rm.v200702.Identifier;
-import org.apache.neethi.Assertion;
-import org.apache.neethi.Policy;
 import org.easymock.EasyMock;
 import org.easymock.IMocksControl;
 
@@ -70,7 +64,10 @@ public class RMEndpointTest extends Asse
         control = EasyMock.createNiceControl();
         manager = control.createMock(RMManager.class);
         ae = control.createMock(Endpoint.class);
+        EasyMock.expect(ae.getEndpointInfo()).andReturn(new EndpointInfo()).anyTimes();
+        control.replay();
         rme = new RMEndpoint(manager, ae);
+        control.reset();
     }
 
     @After
@@ -168,25 +165,24 @@ public class RMEndpointTest extends Asse
     }
 
     @Test
-    public void testCreateEndpoint() throws NoSuchMethodException {
+    public void testCreateEndpoint() throws NoSuchMethodException, EndpointException {
         Method m = RMEndpoint.class.getDeclaredMethod("getUsingAddressing", new Class[] {EndpointInfo.class});
+        Service as = control.createMock(Service.class);
+        EndpointInfo aei = new EndpointInfo();
+        ae = new EndpointImpl(null, as, aei);
         rme = EasyMock.createMockBuilder(RMEndpoint.class).withConstructor(manager, ae)
             .addMockedMethod(m).createMock(control);
         rme.setAplicationEndpoint(ae);
         rme.setManager(manager);
-        Service as = control.createMock(Service.class);
-        EasyMock.expect(ae.getService()).andReturn(as);
-        EndpointInfo aei = control.createMock(EndpointInfo.class);
-        EasyMock.expect(ae.getEndpointInfo()).andReturn(aei).anyTimes();
         SoapBindingInfo bi = control.createMock(SoapBindingInfo.class);
-        EasyMock.expect(aei.getBinding()).andReturn(bi).anyTimes(); 
+        aei.setBinding(bi);
         SoapVersion sv = Soap11.getInstance();
         EasyMock.expect(bi.getSoapVersion()).andReturn(sv);
         String ns = "http://schemas.xmlsoap.org/wsdl/soap/";
         EasyMock.expect(bi.getBindingId()).andReturn(ns);
-        EasyMock.expect(aei.getTransportId()).andReturn(ns);
+        aei.setTransportId(ns);
         String addr = "addr";
-        EasyMock.expect(aei.getAddress()).andReturn(addr);
+        aei.setAddress(addr);
         Object ua = new Object();
         EasyMock.expect(rme.getUsingAddressing(aei)).andReturn(ua);
         control.replay();
@@ -252,7 +248,7 @@ public class RMEndpointTest extends Asse
     public void testSetPoliciesNoEngine() {
         Bus bus = control.createMock(Bus.class);
         EasyMock.expect(manager.getBus()).andReturn(bus);
-        EasyMock.expect(bus.getExtension(PolicyEngine.class)).andReturn(null);
+        EasyMock.expect(bus.getExtension(PolicyEngineImpl.class)).andReturn(null);
         control.replay();
         rme.setPolicies();
     }
@@ -261,8 +257,8 @@ public class RMEndpointTest extends Asse
     public void testSetPoliciesEngineDisabled() {
         Bus bus = control.createMock(Bus.class);
         EasyMock.expect(manager.getBus()).andReturn(bus);
-        PolicyEngine pe = control.createMock(PolicyEngine.class);
-        EasyMock.expect(bus.getExtension(PolicyEngine.class)).andReturn(pe);
+        PolicyEngineImpl pe = control.createMock(PolicyEngineImpl.class);
+        EasyMock.expect(bus.getExtension(PolicyEngineImpl.class)).andReturn(pe);
         EasyMock.expect(pe.isEnabled()).andReturn(false);
         control.replay();
         rme.setPolicies();
@@ -296,23 +292,6 @@ public class RMEndpointTest extends Asse
         rme.shutdown();
     }
 
-    @Test
-    public void testEffectivePolicyImpl() {
-        EndpointPolicy ep = control.createMock(EndpointPolicy.class);
-        Collection<Assertion> alt = new ArrayList<Assertion>();
-        EasyMock.expect(ep.getChosenAlternative()).andReturn(alt).times(2);
-        PolicyInterceptorProviderRegistry reg = control.createMock(PolicyInterceptorProviderRegistry.class);
-        List<Interceptor<? extends Message>> li = new ArrayList<Interceptor<? extends Message>>();
-        EasyMock.expect(reg.getInterceptorsForAlternative(alt, true, false)).andReturn(li);
-        Policy p = control.createMock(Policy.class);
-        EasyMock.expect(ep.getPolicy()).andReturn(p);
-        control.replay();
-        EffectivePolicy effective = rme.new EffectivePolicyImpl(ep, reg, true, false);
-        assertSame(alt, effective.getChosenAlternative());
-        assertSame(li, effective.getInterceptors());
-        assertSame(p, effective.getPolicy());
-    }
-
     private void verifyService() {
         Service service = rme.getService(ProtocolVariation.RM10WSA200408);
         ServiceInfo si = service.getServiceInfos().get(0);

Modified: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java?rev=1531258&r1=1531257&r2=1531258&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java (original)
+++ cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java Fri Oct 11 11:30:53 2013
@@ -406,7 +406,8 @@ public class RMManagerTest extends Asser
         proxy.createSequence(EasyMock.isA(EndpointReferenceType.class),
                              (RelatesToType)EasyMock.isNull(),
                              EasyMock.eq(false),
-                             EasyMock.isA(ProtocolVariation.class));
+                             EasyMock.isA(ProtocolVariation.class),
+                             EasyMock.isA(Exchange.class));
         EasyMock.expectLastCall().andReturn(createResponse);
         Servant servant = control.createMock(Servant.class);
         EasyMock.expect(rme.getServant()).andReturn(servant);