This is an automated email from the ASF dual-hosted git repository. coheigea pushed a commit to branch 3.2.x-fixes in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/3.2.x-fixes by this push: new 2b782a1 fix: handle connectionRequestTimeout in ClientPolicyCalculator 2b782a1 is described below commit 2b782a1d562a2d62843dbb03d23e407c8f674bb2 Author: gyoetam <gyoe...@users.noreply.github.com> AuthorDate: Tue Oct 16 14:30:00 2018 +0200 fix: handle connectionRequestTimeout in ClientPolicyCalculator (cherry picked from commit a117bdaee1ba025ba71fc3b12f610c39c2cda79b) --- .../http/policy/impl/ClientPolicyCalculator.java | 6 ++++++ .../http/policy/ClientPolicyCalculatorTest.java | 20 ++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) 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 629bcac..b934dc5 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 @@ -67,6 +67,7 @@ public class ClientPolicyCalculator implements PolicyCalculator<HTTPClientPolicy && (p1.isSetProxyServerPort() ? p1.getProxyServerPort() == p2.getProxyServerPort() : !p2 .isSetProxyServerPort()) && p1.getProxyServerType().value().equals(p2.getProxyServerType().value()) + && (p1.getConnectionRequestTimeout() == p2.getConnectionRequestTimeout()) && (p1.getReceiveTimeout() == p2.getReceiveTimeout()) && StringUtils.equals(p1.getReferer(), p2.getReferer()); @@ -141,6 +142,11 @@ public class ClientPolicyCalculator implements PolicyCalculator<HTTPClientPolicy } else if (p2.isSetConnectionTimeout()) { p.setConnectionTimeout(p2.getConnectionTimeout()); } + if (p1.isSetConnectionRequestTimeout()) { + p.setConnectionRequestTimeout(p1.getConnectionRequestTimeout()); + } else if (p2.isSetConnectionRequestTimeout()) { + p.setConnectionRequestTimeout(p2.getConnectionRequestTimeout()); + } if (p1.isSetReceiveTimeout()) { p.setReceiveTimeout(p1.getReceiveTimeout()); } else if (p2.isSetReceiveTimeout()) { 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 af7d68b..348eddf 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 @@ -18,6 +18,8 @@ */ package org.apache.cxf.transport.http.policy; +import java.util.concurrent.ThreadLocalRandom; + import org.apache.cxf.transport.http.policy.impl.ClientPolicyCalculator; import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; @@ -46,6 +48,7 @@ public class ClientPolicyCalculatorTest extends Assert { @Test public void testIntersectClientPolicies() { + ThreadLocalRandom random = ThreadLocalRandom.current(); ClientPolicyCalculator calc = new ClientPolicyCalculator(); HTTPClientPolicy p1 = new HTTPClientPolicy(); HTTPClientPolicy p2 = new HTTPClientPolicy(); @@ -55,9 +58,22 @@ public class ClientPolicyCalculatorTest extends Assert { p = calc.intersect(p1, p2); assertEquals("browser", p.getBrowserType()); p1.setBrowserType(null); - p1.setConnectionTimeout(10000L); + + long connectionRequestTimeout = random.nextLong(0, 10000); + p1.setConnectionRequestTimeout(connectionRequestTimeout); + p = calc.intersect(p1, p2); + assertEquals(connectionRequestTimeout, p.getConnectionRequestTimeout()); + + long receiveTimeout = random.nextLong(0, 10000); + p1.setReceiveTimeout(receiveTimeout); p = calc.intersect(p1, p2); - assertEquals(10000L, p.getConnectionTimeout()); + assertEquals(receiveTimeout, p.getReceiveTimeout()); + + long connectionTimeout = random.nextLong(0, 10000); + p1.setConnectionTimeout(connectionTimeout); + p = calc.intersect(p1, p2); + assertEquals(connectionTimeout, p.getConnectionTimeout()); + p1.setAllowChunking(false); p2.setAllowChunking(false); p = calc.intersect(p1, p2);