Repository: cxf
Updated Branches:
  refs/heads/2.6.x-fixes 87e75e9eb -> 1daf48050


Replacing a strong map of jaxrs context proxies with a weak hash map


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

Branch: refs/heads/2.6.x-fixes
Commit: 1daf48050f1be39840374a55c1b36bfa98fe7c96
Parents: 87e75e9
Author: Sergey Beryozkin <[email protected]>
Authored: Fri Jul 4 11:30:29 2014 +0100
Committer: Sergey Beryozkin <[email protected]>
Committed: Fri Jul 4 14:57:22 2014 +0100

----------------------------------------------------------------------
 .../cxf/jaxrs/model/AbstractResourceInfo.java      | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/1daf4805/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/AbstractResourceInfo.java
----------------------------------------------------------------------
diff --git 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/AbstractResourceInfo.java
 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/AbstractResourceInfo.java
index 15f41a7..2cb8890 100644
--- 
a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/AbstractResourceInfo.java
+++ 
b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/AbstractResourceInfo.java
@@ -27,7 +27,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
+import java.util.WeakHashMap;
 
 import javax.annotation.Resource;
 import javax.ws.rs.core.Application;
@@ -102,12 +102,15 @@ public abstract class AbstractResourceInfo {
     
     @SuppressWarnings("unchecked")
     private <T> Map<Class<?>, Map<T, ThreadLocalProxy<?>>> 
getProxyMap(Class<T> keyCls, String prop) {
-        Object property = bus.getProperty(prop);
-        if (property == null) {
-            Map<Class<?>, Map<T, ThreadLocalProxy<?>>> map
-                = new ConcurrentHashMap<Class<?>, Map<T, 
ThreadLocalProxy<?>>>(2);
-            bus.setProperty(prop, map);
-            property = map;
+        Object property = null;
+        synchronized (bus) {
+            property = bus.getProperty(prop);
+            if (property == null) {
+                Map<Class<?>, Map<T, ThreadLocalProxy<?>>> map
+                    = Collections.synchronizedMap(new WeakHashMap<Class<?>, 
Map<T, ThreadLocalProxy<?>>>(2));
+                bus.setProperty(prop, map);
+                property = map;
+            }
         }
         return (Map<Class<?>, Map<T, ThreadLocalProxy<?>>>)property;
     }

Reply via email to