Author: mgrigorov Date: Mon May 23 08:10:26 2011 New Revision: 1126370 URL: http://svn.apache.org/viewvc?rev=1126370&view=rev Log: WICKET-3730 extremely slow performance in development mode
Use synchronizedMap() when using Application as cache holder because concurrent reads/writes are possible. Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/AbstractResourceCachingStrategy.java Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/AbstractResourceCachingStrategy.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/AbstractResourceCachingStrategy.java?rev=1126370&r1=1126369&r2=1126370&view=diff ============================================================================== --- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/AbstractResourceCachingStrategy.java (original) +++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/resource/caching/AbstractResourceCachingStrategy.java Mon May 23 08:10:26 2011 @@ -16,6 +16,8 @@ */ package org.apache.wicket.request.resource.caching; +import java.util.Collections; +import java.util.HashMap; import java.util.Map; import org.apache.wicket.Application; @@ -113,8 +115,8 @@ public abstract class AbstractResourceCa // create it on first call if (cache == null) { - // TODO can this have synchronization issues ?! - cache = Generics.newHashMap(); + // use Collections.synchronizedMap() because j.u.CHM doesn't support null values + cache = Collections.<ResourceReference, Time> synchronizedMap(new HashMap<ResourceReference, Time>()); application.setMetaData(TIMESTAMP_KEY, cache); } }