[jboss-svn-commits] JBoss Common SVN: r3131 - common-core/trunk/src/main/java/org/jboss/util/builder.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Apr 30 08:41:47 EDT 2009
Author: thomas.diesler at jboss.com
Date: 2009-04-30 08:41:46 -0400 (Thu, 30 Apr 2009)
New Revision: 3131
Modified:
common-core/trunk/src/main/java/org/jboss/util/builder/AbstractBuilder.java
Log:
Report a potential ClassLoader problems in AbstractBuilder
Modified: common-core/trunk/src/main/java/org/jboss/util/builder/AbstractBuilder.java
===================================================================
--- common-core/trunk/src/main/java/org/jboss/util/builder/AbstractBuilder.java 2009-04-30 12:35:13 UTC (rev 3130)
+++ common-core/trunk/src/main/java/org/jboss/util/builder/AbstractBuilder.java 2009-04-30 12:41:46 UTC (rev 3131)
@@ -21,6 +21,8 @@
*/
package org.jboss.util.builder;
+// $Id: $
+
import java.security.PrivilegedAction;
/**
@@ -28,6 +30,7 @@
*
* @param <T> the type to be built
* @author <a href="adrian at jboss.org">Adrian Brock</a>
+ * @author Thomas.Diesler at jboss.com
* @version $Revision: 1.1 $
*/
public class AbstractBuilder<T> implements PrivilegedAction<T>
@@ -57,16 +60,39 @@
public T run()
{
+ Object object;
try
{
String className = System.getProperty(factoryClass.getName(), defaultFactory);
Class<?> clazz = Thread.currentThread().getContextClassLoader().loadClass(className);
- Object object = clazz.newInstance();
- return factoryClass.cast(object);
+ object = clazz.newInstance();
}
catch (Throwable t)
{
throw new RuntimeException("Error constructing " + factoryClass.getName(), t);
}
+
+ // Cast the factory instance and report a potential ClassLoader problem
+ T retObj;
+ try
+ {
+ retObj = factoryClass.cast(object);
+ }
+ catch (ClassCastException ex)
+ {
+ String objClassName = object.getClass().getName();
+ ClassLoader objLoader = object.getClass().getClassLoader();
+
+ String factoryClassName = factoryClass.getName();
+ ClassLoader factoryLoader = factoryClass.getClassLoader();
+
+ String msg = "Cannot cast object '" + objClassName + "' to factory '" + factoryClassName + "'\n" +
+ " factoryLoader: " + factoryLoader + "\n" +
+ " objLoader: " + objLoader + "\n";
+
+ throw new RuntimeException(msg);
+ }
+
+ return retObj;
}
}
More information about the jboss-svn-commits
mailing list