[jboss-cvs] JBossAS SVN: r102764 - projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/hibernate.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Mar 23 03:09:33 EDT 2010


Author: alesj
Date: 2010-03-23 03:09:33 -0400 (Tue, 23 Mar 2010)
New Revision: 102764

Modified:
   projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/hibernate/ScannerImpl.java
Log:
Cache package calls -- no multiple loading.

Modified: projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/hibernate/ScannerImpl.java
===================================================================
--- projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/hibernate/ScannerImpl.java	2010-03-23 06:34:45 UTC (rev 102763)
+++ projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/hibernate/ScannerImpl.java	2010-03-23 07:09:33 UTC (rev 102764)
@@ -54,6 +54,8 @@
 {
    /** The packages cache */
    private Map<URL, Set<Package>> packages = new HashMap<URL, Set<Package>>();
+   /** The packages cache */
+   private Map<URL, Set<String>> pckgCache = new HashMap<URL, Set<String>>();
    /** The classes cache */
    private Map<URL, Map<Class<? extends Annotation>, Set<String>>> classes = new HashMap<URL, Map<Class<? extends Annotation>, Set<String>>>();
    /** The files cache */
@@ -107,6 +109,20 @@
 
    void addPackage(URL url, String pckg)
    {
+      Set<String> cache = pckgCache.get(url);
+      if (cache != null)
+      {
+         if (cache.contains(pckg))
+            return;
+      }
+      else
+      {
+         cache = new HashSet<String>();
+         pckgCache.put(url, cache);
+      }
+
+      cache.add(pckg); // cache result
+
       Set<Package> pckgs = packages.get(url);
       if (pckgs == null)
       {
@@ -195,6 +211,9 @@
             packages.put(jartoScan, p);
       }
 
+      // remove cached string packages
+      pckgCache.remove(jartoScan);
+
       return p != null ? Collections.unmodifiableSet(p) : Collections.<Package>emptySet();
    }
 




More information about the jboss-cvs-commits mailing list