[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