[jboss-svn-commits] JBoss Common SVN: r3130 - in common-core/branches/tdiesler: src/main/java/org/jboss/util/builder and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Apr 30 08:35:13 EDT 2009
Author: thomas.diesler at jboss.com
Date: 2009-04-30 08:35:13 -0400 (Thu, 30 Apr 2009)
New Revision: 3130
Modified:
common-core/branches/tdiesler/pom.xml
common-core/branches/tdiesler/src/main/java/org/jboss/util/builder/AbstractBuilder.java
Log:
Report a potential ClassLoader problems in AbstractBuilder
Modified: common-core/branches/tdiesler/pom.xml
===================================================================
--- common-core/branches/tdiesler/pom.xml 2009-04-30 12:17:23 UTC (rev 3129)
+++ common-core/branches/tdiesler/pom.xml 2009-04-30 12:35:13 UTC (rev 3130)
@@ -8,7 +8,9 @@
<groupId>org.jboss</groupId>
<artifactId>jboss-common-core</artifactId>
<packaging>jar</packaging>
- <version>2.2.11.GA</version>
+
+ <version>2.2.11-SNAPSHOT</version>
+
<name>JBoss Common Classes</name>
<url>http://www.jboss.org</url>
<description>JBoss Common Core Utility classes</description>
Modified: common-core/branches/tdiesler/src/main/java/org/jboss/util/builder/AbstractBuilder.java
===================================================================
--- common-core/branches/tdiesler/src/main/java/org/jboss/util/builder/AbstractBuilder.java 2009-04-30 12:17:23 UTC (rev 3129)
+++ common-core/branches/tdiesler/src/main/java/org/jboss/util/builder/AbstractBuilder.java 2009-04-30 12:35:13 UTC (rev 3130)
@@ -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