Author: tv
Date: Sun Mar 22 16:42:10 2009
New Revision: 757211
URL: http://svn.apache.org/viewvc?rev=757211&view=rev
Log:
Added a loader cache
Modified:
turbine/core/trunk/src/java/org/apache/turbine/services/assemblerbroker/TurbineAssemblerBrokerService.java
Modified:
turbine/core/trunk/src/java/org/apache/turbine/services/assemblerbroker/TurbineAssemblerBrokerService.java
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/services/assemblerbroker/TurbineAssemblerBrokerService.java?rev=757211&r1=757210&r2=757211&view=diff
==============================================================================
---
turbine/core/trunk/src/java/org/apache/turbine/services/assemblerbroker/TurbineAssemblerBrokerService.java
(original)
+++
turbine/core/trunk/src/java/org/apache/turbine/services/assemblerbroker/TurbineAssemblerBrokerService.java
Sun Mar 22 16:42:10 2009
@@ -64,6 +64,9 @@
/** A cache that holds the generated Assemblers */
private Map assemblerCache = null;
+ /** A cache that holds the Loaders */
+ private Map loaderCache = null;
+
/** Caching on/off */
private boolean isCaching;
@@ -164,6 +167,7 @@
TurbineConstants.MODULE_CACHE_SIZE_DEFAULT);
assemblerCache = new LRUMap(cacheSize);
+ loaderCache = new LRUMap(cacheSize);
}
setInit(true);
@@ -243,14 +247,32 @@
{
Loader loader = null;
- log.debug("Getting Loader for " + type);
- List facs = getFactoryGroup(type);
-
- for (Iterator it = facs.iterator(); (loader == null) && it.hasNext();)
+ if (isCaching && loaderCache.containsKey(type))
{
- AssemblerFactory fac = (AssemblerFactory) it.next();
-
- loader = fac.getLoader();
+ loader = (Loader)loaderCache.get(type);
+ log.debug("Found " + type + " loader in the cache!");
+ }
+ else
+ {
+ log.debug("Getting Loader for " + type);
+ List facs = getFactoryGroup(type);
+
+ for (Iterator it = facs.iterator(); (loader == null) &&
it.hasNext();)
+ {
+ AssemblerFactory fac = (AssemblerFactory) it.next();
+
+ loader = fac.getLoader();
+ }
+
+ if (isCaching && loader != null)
+ {
+ assemblerCache.put(type, loader);
+ }
+ }
+
+ if (loader == null)
+ {
+ log.warn("Loader for " + type + " is null.");
}
return loader;