You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ma...@apache.org on 2009/02/19 09:37:03 UTC

svn commit: r745780 - /myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/CachingResourceLoader.java

Author: matzew
Date: Thu Feb 19 08:37:03 2009
New Revision: 745780

URL: http://svn.apache.org/viewvc?rev=745780&view=rev
Log:
TRINIDAD-1403 - CachingResourceLoader uses unsynchronized Map for maintaining cache but accesses Map from multiple threads

Modified:
    myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/CachingResourceLoader.java

Modified: myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/CachingResourceLoader.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/CachingResourceLoader.java?rev=745780&r1=745779&r2=745780&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/CachingResourceLoader.java (original)
+++ myfaces/trinidad/trunk/trinidad-api/src/main/java/org/apache/myfaces/trinidad/resource/CachingResourceLoader.java Thu Feb 19 08:37:03 2009
@@ -21,14 +21,12 @@
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-
 import java.io.InputStream;
 import java.net.URL;
-
 import java.net.URLConnection;
 import java.net.URLStreamHandler;
-import java.util.Map;
-import java.util.HashMap;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 
 import org.apache.myfaces.trinidad.util.URLUtils;
 
@@ -49,7 +47,7 @@
   {
     super(parent);
 
-    _cache = new HashMap<String, URL>();
+    _cache = new ConcurrentHashMap<String, URL>();
   }
 
   /**
@@ -76,14 +74,14 @@
       if (url != null)
       {
         url = new URL("cache", null, -1, path, new URLStreamHandlerImpl(url));
-        _cache.put(path, url);
+        _cache.putIfAbsent(path, url);
       }
     }
 
     return url;
   }
 
-  private final Map<String, URL> _cache;
+  private final ConcurrentMap<String, URL> _cache;
 
   /**
    * URLStreamHandler to cache URL contents and URLConnection headers.