[jboss-cvs] JBossAS SVN: r105477 - in projects/scanning/trunk: scanning-impl/src/main/java/org/jboss/scanning/plugins/helpers and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jun 1 09:37:19 EDT 2010


Author: alesj
Date: 2010-06-01 09:37:18 -0400 (Tue, 01 Jun 2010)
New Revision: 105477

Modified:
   projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/hibernate/ScannerImpl.java
   projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/helpers/WeakClassLoaderHolder.java
Log:
Blacklist failed packages.

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-06-01 13:12:55 UTC (rev 105476)
+++ projects/scanning/trunk/plugins/src/main/java/org/jboss/scanning/hibernate/ScannerImpl.java	2010-06-01 13:37:18 UTC (rev 105477)
@@ -61,6 +61,8 @@
    private Map<String, Set<Package>> packages = new HashMap<String, Set<Package>>();
    /** The packages cache */
    private Map<String, Set<String>> pckgCache = new HashMap<String, Set<String>>();
+   /** The packages blacklist */
+   private Map<String, Set<String>> pckgBlacklist = new HashMap<String, Set<String>>();
    /** The classes cache */
    private Map<String, Map<Class<? extends Annotation>, Set<String>>> classes = new HashMap<String, Map<Class<? extends Annotation>, Set<String>>>();
    /** The files cache */
@@ -99,6 +101,7 @@
    {
       packages.clear();
       pckgCache.clear();
+      pckgBlacklist.clear();
       classes.clear();
       files.clear();
    }
@@ -119,14 +122,21 @@
       return handler;
    }
 
-   Package loadPackage(String pckg)
+   Package loadPackage(String pckg) throws ClassNotFoundException
    {
-      return loadClass(pckg + ".package-info").getPackage();
+      return loadClassWithCNFE(pckg + ".package-info").getPackage();
    }
 
    void addPackage(URL url, String pckg)
    {
       String path = url.getPath();
+
+      // blacklist
+      Set<String> blacklist = pckgBlacklist.get(path);
+      if (blacklist != null && blacklist.contains(pckg))
+         return;
+
+      // cache
       Set<String> cache = pckgCache.get(path);
       if (cache != null)
       {
@@ -147,7 +157,20 @@
          pckgs = new HashSet<Package>();
          packages.put(path, pckgs);
       }
-      pckgs.add(loadPackage(pckg));
+      try
+      {
+         Package aPackage = loadPackage(pckg);
+         pckgs.add(aPackage);
+      }
+      catch (ClassNotFoundException e)
+      {
+         if (blacklist == null)
+         {
+            blacklist = new HashSet<String>();
+            pckgBlacklist.put(path, blacklist);
+         }
+         blacklist.add(pckg);
+      }
    }
 
    void addClass(URL url, Class<? extends Annotation> annotation, String clazz)
@@ -223,8 +246,14 @@
                module.getExcludedExport());
          for (String pckg : pckgs)
          {
-            Package pck = loadPackage(pckg);
-            p.add(pck);
+            try
+            {
+               Package pck = loadPackage(pckg);
+               p.add(pck);
+            }
+            catch (ClassNotFoundException ignore)
+            {
+            }
          }
 
          if (cacheNewResults)

Modified: projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/helpers/WeakClassLoaderHolder.java
===================================================================
--- projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/helpers/WeakClassLoaderHolder.java	2010-06-01 13:12:55 UTC (rev 105476)
+++ projects/scanning/trunk/scanning-impl/src/main/java/org/jboss/scanning/plugins/helpers/WeakClassLoaderHolder.java	2010-06-01 13:37:18 UTC (rev 105477)
@@ -81,11 +81,23 @@
    {
       try
       {
-         return getClassLoader().loadClass(className);
+         return loadClassWithCNFE(className);
       }
       catch (ClassNotFoundException e)
       {
          throw new RuntimeException(e);
       }
    }
+
+   /**
+    * Load class from class name, throw CNFE on failure.
+    *
+    * @param className the class name
+    * @return loaded class
+    * @throws ClassNotFoundException cnfe
+    */
+   protected Class<?> loadClassWithCNFE(String className) throws ClassNotFoundException
+   {
+      return getClassLoader().loadClass(className);
+   }
 }




More information about the jboss-cvs-commits mailing list