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

commit d40da6aa1046f6fa519ab1a875f8126df31ff83c
Author: Colm O hEigeartaigh <[email protected]>
AuthorDate: Tue Oct 16 12:05:04 2018 +0100

    CXF-7869 - Infinite loop in rest client
    
    (cherry picked from commit 3fec78a935410d894add5490cd36d15603828509)
---
 .../java/org/apache/cxf/jaxrs/client/spec/ClientImpl.java | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git 
a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientImpl.java 
b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientImpl.java
index 61c465a..85cb49f 100644
--- 
a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientImpl.java
+++ 
b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientImpl.java
@@ -74,7 +74,8 @@ public class ClientImpl implements Client {
     private TLSConfiguration secConfig;
     private boolean closed;
     private Set<WebClient> baseClients =
-        Collections.newSetFromMap(new WeakHashMap<WebClient, Boolean>());
+        Collections.synchronizedSet(Collections.newSetFromMap(new 
WeakHashMap<WebClient, Boolean>()));
+
     public ClientImpl(Configuration config,
                       TLSConfiguration secConfig) {
         configImpl = new ClientConfigurableImpl<Client>(this, config);
@@ -84,8 +85,10 @@ public class ClientImpl implements Client {
     @Override
     public void close() {
         if (!closed) {
-            for (WebClient wc : baseClients) {
-                wc.close();
+            synchronized (baseClients) {
+                for (WebClient wc : baseClients) {
+                    wc.close();
+                }
             }
             baseClients = null;
             closed = true;
@@ -276,7 +279,7 @@ public class ClientImpl implements Client {
                         providers.add(p);
                     } else {
                         final Class<?> providerCls = 
ClassHelper.getRealClass(pf.getBus(), p);
-                        providers.add(new 
FilterProviderInfo<Object>(p.getClass(), 
+                        providers.add(new 
FilterProviderInfo<Object>(p.getClass(),
                             providerCls, p, pf.getBus(), contracts));
                     }
                 }
@@ -553,8 +556,8 @@ public class ClientImpl implements Client {
         }
     }
     private static Long getLongValue(Object o) {
-        return o instanceof Long ? (Long)o 
-            : o instanceof String ? Long.valueOf(o.toString()) 
+        return o instanceof Long ? (Long)o
+            : o instanceof String ? Long.valueOf(o.toString())
             : o instanceof Integer ? ((Integer)o).longValue() : null;
     }
     private static Integer getIntValue(Object o) {

Reply via email to