[CXF-6185] Updates to ClientPolicyCalculator to handle optional 
chunking/autoredirect
Patch from Xu ShiChang Desmond applied


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/f03e6313
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/f03e6313
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/f03e6313

Branch: refs/heads/master
Commit: f03e6313365a853c6c4eea9d5f63532fb92364fb
Parents: 7228709
Author: Daniel Kulp <dk...@apache.org>
Authored: Fri Mar 31 14:43:46 2017 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Fri Mar 31 14:56:36 2017 -0400

----------------------------------------------------------------------
 .../policy/impl/ClientPolicyCalculator.java     | 20 ++++++++++++--------
 .../http/policy/ClientPolicyCalculatorTest.java |  1 +
 .../transport/http/policy/PolicyUtilsTest.java  |  2 +-
 3 files changed, 14 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/f03e6313/rt/transports/http/src/main/java/org/apache/cxf/transport/http/policy/impl/ClientPolicyCalculator.java
----------------------------------------------------------------------
diff --git 
a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/policy/impl/ClientPolicyCalculator.java
 
b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/policy/impl/ClientPolicyCalculator.java
index 1746b66..629bcac 100644
--- 
a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/policy/impl/ClientPolicyCalculator.java
+++ 
b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/policy/impl/ClientPolicyCalculator.java
@@ -32,7 +32,7 @@ public class ClientPolicyCalculator implements 
PolicyCalculator<HTTPClientPolicy
     /**
      * Determines if two HTTPClientPolicy objects are equal. REVISIT: Check if
      * this can be replaced by a generated equals method.
-     *
+     * 
      * @param p1 one client policy
      * @param p2 another client policy
      * @return true iff the two policies are equal
@@ -76,7 +76,7 @@ public class ClientPolicyCalculator implements 
PolicyCalculator<HTTPClientPolicy
     /**
      * Returns a new HTTPClientPolicy that is compatible with the two specified
      * policies or null if no compatible policy can be determined.
-     *
+     * 
      * @param p1 one policy
      * @param p2 another policy
      * @return the compatible policy
@@ -152,7 +152,7 @@ public class ClientPolicyCalculator implements 
PolicyCalculator<HTTPClientPolicy
 
     /**
      * Checks if two HTTPClientPolicy objects are compatible.
-     *
+     * 
      * @param p1 one client policy
      * @param p2 another client policy
      * @return true iff policies are compatible
@@ -229,16 +229,20 @@ public class ClientPolicyCalculator implements 
PolicyCalculator<HTTPClientPolicy
         }
 
         if (compatible) {
-            compatible &= p1.isAllowChunking() == p2.isAllowChunking();
+            compatible &= !p1.isSetAllowChunking() 
+                || !p2.isSetAllowChunking() 
+                || p1.isAllowChunking() == p2.isAllowChunking();
         }
 
         if (compatible) {
-            compatible &= p1.isAutoRedirect() == p2.isAutoRedirect();
+            compatible &= !p1.isSetAutoRedirect() 
+                || !p2.isSetAutoRedirect() 
+                || p1.isAutoRedirect() == p2.isAutoRedirect();
         }
 
         return compatible;
     }
-
+    
     public boolean isAsserted(Message message, HTTPClientPolicy policy, 
HTTPClientPolicy refPolicy) {
         boolean outbound = MessageUtils.isOutbound(message);
         boolean compatible = compatible(policy, refPolicy);
@@ -252,7 +256,7 @@ public class ClientPolicyCalculator implements 
PolicyCalculator<HTTPClientPolicy
     public QName getDataClassName() {
         return new ObjectFactory().createClient(null).getName();
     }
-
+    
     public static String toString(HTTPClientPolicy p) {
         StringBuilder buf = new StringBuilder();
         buf.append(p);
@@ -263,4 +267,4 @@ public class ClientPolicyCalculator implements 
PolicyCalculator<HTTPClientPolicy
         buf.append("])");
         return buf.toString();
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cxf/blob/f03e6313/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/ClientPolicyCalculatorTest.java
----------------------------------------------------------------------
diff --git 
a/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/ClientPolicyCalculatorTest.java
 
b/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/ClientPolicyCalculatorTest.java
index 8b04511..053d18c 100644
--- 
a/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/ClientPolicyCalculatorTest.java
+++ 
b/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/ClientPolicyCalculatorTest.java
@@ -37,6 +37,7 @@ public class ClientPolicyCalculatorTest extends Assert {
         p1.setConnectionTimeout(10000);
         assertTrue("Policies are not compatible.", calc.compatible(p1, p2));
         p1.setAllowChunking(false);
+        p2.setAllowChunking(true);
         assertTrue("Policies are compatible.", !calc.compatible(p1, p2));
         p2.setAllowChunking(false);
         assertTrue("Policies are compatible.", calc.compatible(p1, p2));

http://git-wip-us.apache.org/repos/asf/cxf/blob/f03e6313/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/PolicyUtilsTest.java
----------------------------------------------------------------------
diff --git 
a/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/PolicyUtilsTest.java
 
b/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/PolicyUtilsTest.java
index 563d6f5..ba5696d 100644
--- 
a/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/PolicyUtilsTest.java
+++ 
b/rt/transports/http/src/test/java/org/apache/cxf/transport/http/policy/PolicyUtilsTest.java
@@ -138,7 +138,7 @@ public class PolicyUtilsTest extends Assert {
         pde.assertMessage(message, ep, new ClientPolicyCalculator());
         assertTrue(eai.isAsserted());
         assertTrue(cmai.isAsserted());
-        assertTrue(outbound ? !icmai.isAsserted() : icmai.isAsserted());
+        assertTrue(icmai.isAsserted());
         control.verify();
     }
 

Reply via email to