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;


Reply via email to