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/06/10 03:11:09 UTC

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

Author: dsosnoski
Date: Mon Jun 10 01:11:08 2013
New Revision: 1491320

URL: http://svn.apache.org/r1491320
Log:
CXF-4139 Clean up initial checkins, fully integrate use of RMConfiguration into policy handling

Modified:
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractRMInterceptor.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMConfiguration.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMManager.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMUtils.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RM10AssertionBuilder.java
    cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RMPolicyUtilities.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/RMManagerTest.java
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/policy/PolicyUtilsTest.java

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractRMInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractRMInterceptor.java?rev=1491320&r1=1491319&r2=1491320&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractRMInterceptor.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/AbstractRMInterceptor.java Mon Jun 10 01:11:08 2013
@@ -33,7 +33,7 @@ import org.apache.cxf.phase.AbstractPhas
 import org.apache.cxf.phase.Phase;
 import org.apache.cxf.ws.policy.AssertionInfo;
 import org.apache.cxf.ws.policy.AssertionInfoMap;
-import org.apache.cxf.ws.rm.policy.RM10PolicyUtils;
+import org.apache.cxf.ws.rm.policy.RMPolicyUtilities;
 
 /**
  * Interceptor responsible for implementing exchange of RM protocol messages,
@@ -113,7 +113,7 @@ public abstract class AbstractRMIntercep
      */
     void assertReliability(Message message) {
         AssertionInfoMap aim = message.get(AssertionInfoMap.class);
-        Collection<AssertionInfo> ais = RM10PolicyUtils.collectRMAssertions(aim);
+        Collection<AssertionInfo> ais = RMPolicyUtilities.collectRMAssertions(aim);
         for (AssertionInfo ai : ais) {
             ai.setAsserted(true);
         }

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMConfiguration.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMConfiguration.java?rev=1491320&r1=1491319&r2=1491320&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMConfiguration.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMConfiguration.java Mon Jun 10 01:11:08 2013
@@ -39,11 +39,9 @@ public class RMConfiguration {
     private RM10AddressingNamespaceType rm10AddressingNamespace;
     
     /**
-     * Constructor just sets defaults.
+     * Constructor.
      */
     public RMConfiguration() {
-        baseRetransmissionInterval = new Long(RetransmissionQueue.DEFAULT_BASE_RETRANSMISSION_INTERVAL);
-        rmNamespace = RM10Constants.NAMESPACE_URI;
     }
     
     /**

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=1491320&r1=1491319&r2=1491320&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 Mon Jun 10 01:11:08 2013
@@ -231,19 +231,26 @@ public class RMManager {
      * @return configuration (non-<code>null</code>)
      */
     public RMConfiguration getConfiguration() {
-        return configuration;
+        return forceConfiguration();
     }
 
     /**
      * @param configuration (non-<code>null</code>)
      */
     public void setConfiguration(RMConfiguration configuration) {
+        if (configuration.getBaseRetransmissionInterval() == null) {
+            Long value = new Long(RetransmissionQueue.DEFAULT_BASE_RETRANSMISSION_INTERVAL);
+            configuration.setBaseRetransmissionInterval(value);
+        }
+        if (configuration.getRMNamespace() == null) {
+            configuration.setRMNamespace(RM10Constants.NAMESPACE_URI);
+        }
         this.configuration = configuration;
     }
     
     RMConfiguration forceConfiguration() {
         if (configuration == null) {
-            configuration = new RMConfiguration();
+            setConfiguration(new RMConfiguration());
         }
         return configuration;
     }
@@ -349,7 +356,7 @@ public class RMManager {
                 addrUri = maps.getNamespaceURI();
             }
             if (addrUri == null) {
-                addrUri = configuration.getConfiguredProtocol().getWSANamespace();
+                addrUri = forceConfiguration().getConfiguredProtocol().getWSANamespace();
             }
         }
         return addrUri;
@@ -370,7 +377,7 @@ public class RMManager {
                 rmUri = rmps.getNamespaceURI();
             }
             if (rmUri == null) {
-                rmUri = configuration.getRMNamespace();
+                rmUri = getConfiguration().getRMNamespace();
             }
         }
         return rmUri;
@@ -406,7 +413,7 @@ public class RMManager {
             RelatesToType relatesTo = null;
             if (isServer) {
                 AddressingProperties inMaps = RMContextUtils.retrieveMAPs(message, false, false);
-                inMaps.exposeAs(configuration.getConfiguredProtocol().getWSANamespace());
+                inMaps.exposeAs(getConfiguration().getConfiguredProtocol().getWSANamespace());
                 acksTo = RMUtils.createReference(inMaps.getTo().getValue());
                 to = inMaps.getReplyTo();
                 source.getReliableEndpoint().getServant().setUnattachedIdentifier(inSeqId);
@@ -607,8 +614,7 @@ public class RMManager {
     @PostConstruct
     void initialise() {
         if (configuration == null) {
-            configuration = new RMConfiguration();
-            configuration.setExponentialBackoff(true);
+            forceConfiguration().setExponentialBackoff(true);
         }
         DeliveryAssuranceType deliveryAssurance = configuration.getDeliveryAssurance();
         if (deliveryAssurance == null) {

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMUtils.java?rev=1491320&r1=1491319&r2=1491320&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMUtils.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/RMUtils.java Mon Jun 10 01:11:08 2013
@@ -187,4 +187,34 @@ public final class RMUtils {
         // Added the instance id to make the ObjectName unique
         buffer.append(ManagementConstants.INSTANCE_ID_PROP).append('=').append(ep.hashCode());
     }
+
+    /**
+     * Utility method to compare two (possibly-null) String values.
+     * 
+     * @param aval
+     * @param bval
+     * @return <code>true</code> if equal, <code>false</code> if not
+     */
+    public static boolean equalStrings(String aval, String bval) {
+        if (null != aval) {
+            return aval.equals(bval);
+        } else {
+            return null == bval;
+        }
+    }
+
+    /**
+     * Utility method to compare two (possibly-null) Long values.
+     * 
+     * @param aval
+     * @param bval
+     * @return <code>true</code> if equal, <code>false</code> if not
+     */
+    public static boolean equalLongs(Long aval, Long bval) {
+        if (null != aval) {
+            return aval.equals(bval);
+        } else {
+            return null == bval;
+        }
+    }
 }

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RM10AssertionBuilder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RM10AssertionBuilder.java?rev=1491320&r1=1491319&r2=1491320&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RM10AssertionBuilder.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RM10AssertionBuilder.java Mon Jun 10 01:11:08 2013
@@ -69,7 +69,7 @@ public class RM10AssertionBuilder extend
             }
             JaxbAssertion<RMAssertion> other = 
                     JaxbAssertion.cast((Assertion)policyComponent);            
-            return RM10PolicyUtils.equals(this.getData(), other.getData());  
+            return RMPolicyUtilities.equals(this.getData(), other.getData());  
         }
         
         @Override

Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RMPolicyUtilities.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RMPolicyUtilities.java?rev=1491320&r1=1491319&r2=1491320&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RMPolicyUtilities.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/policy/RMPolicyUtilities.java Mon Jun 10 01:11:08 2013
@@ -25,16 +25,17 @@ import java.util.Collection;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.ws.policy.AssertionInfo;
 import org.apache.cxf.ws.policy.AssertionInfoMap;
+import org.apache.cxf.ws.policy.builder.jaxb.JaxbAssertion;
 import org.apache.cxf.ws.rm.RM10Constants;
 import org.apache.cxf.ws.rm.RM11Constants;
 import org.apache.cxf.ws.rm.RMConfiguration;
+import org.apache.cxf.ws.rm.RMUtils;
 import org.apache.cxf.ws.rm.manager.DeliveryAssuranceType;
 import org.apache.cxf.ws.rm.policy.RM12Assertion.Order;
 import org.apache.cxf.ws.rmp.v200502.RMAssertion;
 
 /**
- * Policy assertion builder for WS-RMP 1.0 (submission). Since this version of WS-RMP nests everything as
- * direct child elements of the RMAssertion JAXB can be used directly to convert to/from XML.
+ * Utilities for working with policies and configurations.
  */
 public final class RMPolicyUtilities {
     
@@ -42,8 +43,8 @@ public final class RMPolicyUtilities {
     }
     
     /**
-     * Returns an RMAssertion that is compatible with the default value
-     * and all RMAssertions pertaining to the message (can never be null).
+     * Returns an RMAssertion that is compatible with the default value and all RMAssertions pertaining to the
+     * message (can never be null).
      * 
      * @param rma the default value (non-<code>null</code>)
      * @param message the message
@@ -53,8 +54,8 @@ public final class RMPolicyUtilities {
         RMConfiguration compatible = defaultValue;
         Collection<AssertionInfo> ais = collectRMAssertions(message.get(AssertionInfoMap.class));
         for (AssertionInfo ai : ais) {
-            if (ai.getAssertion() instanceof RM10AssertionBuilder.RMPolicyAssertion) {
-                RMAssertion rma = ((RM10AssertionBuilder.RMPolicyAssertion)ai.getAssertion()).getData();
+            if (ai.getAssertion() instanceof JaxbAssertion<?>) {
+                RMAssertion rma = (RMAssertion)((JaxbAssertion<?>)ai.getAssertion()).getData();
                 compatible = intersect(rma, compatible);
             } else if (ai.getAssertion() instanceof RM12Assertion) {
                 RM12Assertion rma = (RM12Assertion) ai.getAssertion();
@@ -85,14 +86,6 @@ public final class RMPolicyUtilities {
         return mergedAsserts;
     }
 
-    static boolean equalLongs(Long aval, Long bval) {
-        if (null != aval) {
-            return aval.equals(bval);
-        } else {
-            return false;
-        }
-    }
-    
     public static boolean equals(RMAssertion a, RMAssertion b) {
         if (a == b) {
             return true;
@@ -106,7 +99,7 @@ public final class RMPolicyUtilities {
         if (null != b.getInactivityTimeout()) {
             bval = b.getInactivityTimeout().getMilliseconds();            
         }
-        if (!equalLongs(aval, bval)) {
+        if (!RMUtils.equalLongs(aval, bval)) {
             return false;
         }
             
@@ -118,7 +111,7 @@ public final class RMPolicyUtilities {
         if (null != b.getBaseRetransmissionInterval()) {
             bval = b.getBaseRetransmissionInterval().getMilliseconds();            
         }
-        if (!equalLongs(aval, bval)) {
+        if (!RMUtils.equalLongs(aval, bval)) {
             return false;
         }
         
@@ -130,7 +123,7 @@ public final class RMPolicyUtilities {
         if (null != b.getAcknowledgementInterval()) {
             bval = b.getAcknowledgementInterval().getMilliseconds(); 
         }
-        if (!equalLongs(aval, bval)) {
+        if (!RMUtils.equalLongs(aval, bval)) {
             return false;
         }
         
@@ -139,6 +132,48 @@ public final class RMPolicyUtilities {
             : null != b.getExponentialBackoff();         
     }
     
+    public static boolean equals(RMConfiguration a, RMConfiguration b) {
+        if (a == b) {
+            return true;
+        }
+        if (a == null) {
+            return b == null;
+        } else if (b == null) {
+            return false;
+        }
+        if (a.getDeliveryAssurance() == null) {
+            if (b.getDeliveryAssurance() != null) {
+                return false;
+            }
+        } else if (b.getDeliveryAssurance() == null) {
+            return false;
+        } else if (a.getDeliveryAssurance().isSetAtLeastOnce() != b.getDeliveryAssurance().isSetAtLeastOnce()
+                || a.getDeliveryAssurance().isSetAtMostOnce() != b.getDeliveryAssurance().isSetAtMostOnce()
+                || a.getDeliveryAssurance().isSetInOrder() != b.getDeliveryAssurance().isSetInOrder()) {
+            return false;
+        }
+        if (a.getRM10AddressingNamespace() == null) {
+            if (b.getRM10AddressingNamespace() != null) {
+                return false;
+            }
+        } else if (b.getRM10AddressingNamespace() == null) {
+            return false;
+        } else if (!RMUtils.equalStrings(a.getRM10AddressingNamespace().getUri(),
+                                         b.getRM10AddressingNamespace().getUri())) {
+            return false;
+        }
+        if (!RMUtils.equalStrings(a.getRMNamespace(), b.getRMNamespace())) {
+            return false;
+        }
+        return a.isExactlyOnce() == b.isExactlyOnce()
+               && a.isExponentialBackoff() == b.isExponentialBackoff()
+               && a.isSequenceSTRRequired() == b.isSequenceSTRRequired()
+               && a.isSequenceTransportSecurityRequired() == b.isSequenceTransportSecurityRequired()
+               && RMUtils.equalLongs(a.getAcknowledgementInterval(), b.getAcknowledgementInterval())
+               && RMUtils.equalLongs(a.getBaseRetransmissionInterval(), b.getBaseRetransmissionInterval())
+               && RMUtils.equalLongs(a.getInactivityTimeout(), b.getInactivityTimeout());
+    }
+    
     /**
      * Intersect a policy with a supplied configuration.
      * 
@@ -220,7 +255,7 @@ public final class RMPolicyUtilities {
         if (null != asser.getInactivityTimeout()) {
             aval = asser.getInactivityTimeout().getMilliseconds();            
         }
-        if (!equalLongs(cfg.getInactivityTimeout(), aval)) {
+        if (!RMUtils.equalLongs(cfg.getInactivityTimeout(), aval)) {
             return false;
         }
             
@@ -228,7 +263,7 @@ public final class RMPolicyUtilities {
         if (null != asser.getBaseRetransmissionInterval()) {
             aval = asser.getBaseRetransmissionInterval().getMilliseconds();            
         }
-        if (!equalLongs(cfg.getBaseRetransmissionInterval(), aval)) {
+        if (!RMUtils.equalLongs(cfg.getBaseRetransmissionInterval(), aval)) {
             return false;
         }
         
@@ -236,7 +271,7 @@ public final class RMPolicyUtilities {
         if (null != asser.getAcknowledgementInterval()) {
             aval = asser.getAcknowledgementInterval().getMilliseconds(); 
         }
-        if (!equalLongs(cfg.getAcknowledgementInterval(), aval)) {
+        if (!RMUtils.equalLongs(cfg.getAcknowledgementInterval(), aval)) {
             return false;
         }
         

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=1491320&r1=1491319&r2=1491320&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 Mon Jun 10 01:11:08 2013
@@ -103,14 +103,13 @@ public class RMManagerTest extends Asser
     @Test
     public void testInitialisation() {
         manager = new RMManager();
-        assertNull("RMConfiguration is set.", manager.getConfiguration());
         assertNull("sourcePolicy is set.", manager.getSourcePolicy());
         assertNull("destinationPolicy is set.", manager.getDestinationPolicy());
         
         manager.initialise();
         
         RMConfiguration cfg = manager.getConfiguration();
-        assertNotNull("RMAssertion is not set.", cfg);
+        assertNotNull("RMConfiguration is not set.", cfg);
         assertNotNull("sourcePolicy is not set.", manager.getSourcePolicy());
         assertNotNull("destinationPolicy is not set.", manager.getDestinationPolicy());
         assertNotNull("deliveryAssirance is not set.", cfg.getDeliveryAssurance());

Modified: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/policy/PolicyUtilsTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/policy/PolicyUtilsTest.java?rev=1491320&r1=1491319&r2=1491320&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/policy/PolicyUtilsTest.java (original)
+++ cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/policy/PolicyUtilsTest.java Mon Jun 10 01:11:08 2013
@@ -27,6 +27,7 @@ import org.apache.cxf.ws.policy.Assertio
 import org.apache.cxf.ws.policy.AssertionInfoMap;
 import org.apache.cxf.ws.policy.builder.jaxb.JaxbAssertion;
 import org.apache.cxf.ws.rm.RM10Constants;
+import org.apache.cxf.ws.rm.RMConfiguration;
 import org.apache.cxf.ws.rmp.v200502.RMAssertion;
 import org.apache.cxf.ws.rmp.v200502.RMAssertion.AcknowledgementInterval;
 import org.apache.cxf.ws.rmp.v200502.RMAssertion.BaseRetransmissionInterval;
@@ -54,87 +55,81 @@ public class PolicyUtilsTest extends Ass
     @Test
     public void testRMAssertionEquals() {
         RMAssertion a = new RMAssertion();
-        assertTrue(RM10PolicyUtils.equals(a, a));
+        assertTrue(RMPolicyUtilities.equals(a, a));
         
         RMAssertion b = new RMAssertion();
-        assertTrue(RM10PolicyUtils.equals(a, b));
+        assertTrue(RMPolicyUtilities.equals(a, b));
         
         InactivityTimeout iat = new RMAssertion.InactivityTimeout();
         iat.setMilliseconds(new Long(10));
         a.setInactivityTimeout(iat);
-        assertTrue(!RM10PolicyUtils.equals(a, b));
+        assertTrue(!RMPolicyUtilities.equals(a, b));
         b.setInactivityTimeout(iat);
-        assertTrue(RM10PolicyUtils.equals(a, b));
+        assertTrue(RMPolicyUtilities.equals(a, b));
         
         ExponentialBackoff eb = new RMAssertion.ExponentialBackoff();
         a.setExponentialBackoff(eb);
-        assertTrue(!RM10PolicyUtils.equals(a, b));
+        assertTrue(!RMPolicyUtilities.equals(a, b));
         b.setExponentialBackoff(eb);
-        assertTrue(RM10PolicyUtils.equals(a, b));    
+        assertTrue(RMPolicyUtilities.equals(a, b));    
     }
     
     @Test
     public void testIntersect() {
-        RMAssertion a = new RMAssertion();
-        RMAssertion b = new RMAssertion();
-        assertSame(a, RM10PolicyUtils.intersect(a, b));
+        RMAssertion rma = new RMAssertion();
+        RMConfiguration cfg0 = new RMConfiguration();
+        assertTrue(RMPolicyUtilities.equals(cfg0, RMPolicyUtilities.intersect(rma, cfg0)));
         
         InactivityTimeout aiat = new RMAssertion.InactivityTimeout();
-        aiat.setMilliseconds(new Long(3600000));
-        a.setInactivityTimeout(aiat);
-        InactivityTimeout biat = new RMAssertion.InactivityTimeout();
-        biat.setMilliseconds(new Long(7200000));
-        b.setInactivityTimeout(biat);
-        
-        RMAssertion c = RM10PolicyUtils.intersect(a, b);
-        assertEquals(7200000L, c.getInactivityTimeout().getMilliseconds().longValue());
-        assertNull(c.getBaseRetransmissionInterval());
-        assertNull(c.getAcknowledgementInterval());
-        assertNull(c.getExponentialBackoff());
+        aiat.setMilliseconds(new Long(7200000));
+        rma.setInactivityTimeout(aiat);
+        cfg0.setInactivityTimeout(new Long(3600000));
+        
+        RMConfiguration cfg1 = RMPolicyUtilities.intersect(rma, cfg0);
+        assertEquals(7200000L, cfg1.getInactivityTimeout().longValue());
+        assertNull(cfg1.getBaseRetransmissionInterval());
+        assertNull(cfg1.getAcknowledgementInterval());
+        assertFalse(cfg1.isExponentialBackoff());
         
         BaseRetransmissionInterval abri = new RMAssertion.BaseRetransmissionInterval();
-        abri.setMilliseconds(new Long(10000));
-        a.setBaseRetransmissionInterval(abri);
-        BaseRetransmissionInterval bbri = new RMAssertion.BaseRetransmissionInterval();
-        bbri.setMilliseconds(new Long(20000));
-        b.setBaseRetransmissionInterval(bbri);
-        
-        c = RM10PolicyUtils.intersect(a, b);
-        assertEquals(7200000L, c.getInactivityTimeout().getMilliseconds().longValue());
-        assertEquals(20000L, c.getBaseRetransmissionInterval().getMilliseconds().longValue());
-        assertNull(c.getAcknowledgementInterval());
-        assertNull(c.getExponentialBackoff());
+        abri.setMilliseconds(new Long(20000));
+        rma.setBaseRetransmissionInterval(abri);
+        cfg0.setBaseRetransmissionInterval(new Long(10000));
+        
+        cfg1 = RMPolicyUtilities.intersect(rma, cfg0);
+        assertEquals(7200000L, cfg1.getInactivityTimeout().longValue());
+        assertEquals(20000L, cfg1.getBaseRetransmissionInterval().longValue());
+        assertNull(cfg1.getAcknowledgementInterval());
+        assertFalse(cfg1.isExponentialBackoff());
        
         AcknowledgementInterval aai = new RMAssertion.AcknowledgementInterval();
         aai.setMilliseconds(new Long(2000));
-        a.setAcknowledgementInterval(aai);
+        rma.setAcknowledgementInterval(aai);
         
-        c = RM10PolicyUtils.intersect(a, b);
-        assertEquals(7200000L, c.getInactivityTimeout().getMilliseconds().longValue());
-        assertEquals(20000L, c.getBaseRetransmissionInterval().getMilliseconds().longValue());
-        assertEquals(2000L, c.getAcknowledgementInterval().getMilliseconds().longValue());
-        assertNull(c.getExponentialBackoff());
-        
-        b.setExponentialBackoff(new RMAssertion.ExponentialBackoff());
-        c = RM10PolicyUtils.intersect(a, b);
-        assertEquals(7200000L, c.getInactivityTimeout().getMilliseconds().longValue());
-        assertEquals(20000L, c.getBaseRetransmissionInterval().getMilliseconds().longValue());
-        assertEquals(2000L, c.getAcknowledgementInterval().getMilliseconds().longValue());
-        assertNotNull(c.getExponentialBackoff());    
+        cfg1 = RMPolicyUtilities.intersect(rma, cfg0);
+        assertEquals(7200000L, cfg1.getInactivityTimeout().longValue());
+        assertEquals(20000L, cfg1.getBaseRetransmissionInterval().longValue());
+        assertEquals(2000L, cfg1.getAcknowledgementInterval().longValue());
+        assertFalse(cfg1.isExponentialBackoff());
+        
+        cfg0.setExponentialBackoff(true);
+        cfg1 = RMPolicyUtilities.intersect(rma, cfg0);
+        assertEquals(7200000L, cfg1.getInactivityTimeout().longValue());
+        assertEquals(20000L, cfg1.getBaseRetransmissionInterval().longValue());
+        assertEquals(2000L, cfg1.getAcknowledgementInterval().longValue());
+        assertTrue(cfg1.isExponentialBackoff());    
     }
     
     @Test
-    public void testGetRMAssertion() {
-        RMAssertion a = new RMAssertion();
-        BaseRetransmissionInterval abri = new RMAssertion.BaseRetransmissionInterval();
-        abri.setMilliseconds(new Long(3000));
-        a.setBaseRetransmissionInterval(abri);
-        a.setExponentialBackoff(new RMAssertion.ExponentialBackoff());
+    public void testGetRMConfiguration() {
+        RMConfiguration cfg = new RMConfiguration();
+        cfg.setBaseRetransmissionInterval(new Long(3000));
+        cfg.setExponentialBackoff(true);
         
         Message message = control.createMock(Message.class);
         EasyMock.expect(message.get(AssertionInfoMap.class)).andReturn(null);
         control.replay();
-        assertSame(a, RM10PolicyUtils.getRMAssertion(a, message));
+        assertSame(cfg, RMPolicyUtilities.getRMConfiguration(cfg, message));
         control.verify();
         
         control.reset();
@@ -143,7 +138,7 @@ public class PolicyUtilsTest extends Ass
         Collection<AssertionInfo> ais = new ArrayList<AssertionInfo>();
         EasyMock.expect(aim.get(RM10Constants.RMASSERTION_QNAME)).andReturn(ais);
         control.replay();
-        assertSame(a, RM10PolicyUtils.getRMAssertion(a, message));
+        assertSame(cfg, RMPolicyUtilities.getRMConfiguration(cfg, message));
         control.verify();
         
         control.reset();
@@ -159,11 +154,11 @@ public class PolicyUtilsTest extends Ass
         EasyMock.expect(message.get(AssertionInfoMap.class)).andReturn(aim);
         EasyMock.expect(aim.get(RM10Constants.RMASSERTION_QNAME)).andReturn(ais);
         control.replay();
-        RMAssertion c = RM10PolicyUtils.getRMAssertion(a, message);
-        assertNull(c.getAcknowledgementInterval());
-        assertNull(c.getInactivityTimeout());
-        assertEquals(2000L, c.getBaseRetransmissionInterval().getMilliseconds().longValue());
-        assertNotNull(c.getExponentialBackoff());   
+        RMConfiguration cfg1 = RMPolicyUtilities.getRMConfiguration(cfg, message);
+        assertNull(cfg1.getAcknowledgementInterval());
+        assertNull(cfg1.getInactivityTimeout());
+        assertEquals(2000L, cfg1.getBaseRetransmissionInterval().longValue());
+        assertTrue(cfg1.isExponentialBackoff());   
         control.verify();
     }