Author: thomas.diesler(a)jboss.com
Date: 2009-02-11 11:01:39 -0500 (Wed, 11 Feb 2009)
New Revision: 3836
Modified:
jbpm3/trunk/modules/core/src/main/java/org/jbpm/configuration/BeanInfo.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/configuration/ConstructorInfo.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/configuration/JbpmTypeObjectInfo.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/configuration/ObjectFactoryImpl.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/hibernate/Converters.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/action/ActionTypes.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/def/ExceptionHandler.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/def/ProcessDefinition.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/node/NodeTypes.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/instantiation/Delegation.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/instantiation/FieldInstantiator.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/jpdl/par/ProcessArchive.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/security/authentication/SubjectAuthenticationService.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/util/ClassLoaderUtil.java
jbpm3/trunk/modules/core/src/main/java/org/jbpm/util/EqualsUtil.java
jbpm3/trunk/modules/core/src/test/java/org/jbpm/SerializabilityTest.java
jbpm3/trunk/modules/core/src/test/java/org/jbpm/context/exe/CustomSessionFactoryFactory.java
jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveClassLoadingDbTest.java
jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessClassLoaderTest.java
jbpm3/trunk/modules/identity/src/main/java/org/jbpm/identity/hibernate/PermissionUserType.java
Log:
[JBPM-1976] Bad usage of ClassLoader.loadClass() under JDK 6
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/configuration/BeanInfo.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/configuration/BeanInfo.java 2009-02-11
15:06:23 UTC (rev 3835)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/configuration/BeanInfo.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -82,7 +82,7 @@
if (constructorInfo==null) {
if (className==null) throw new JbpmException("bean
'"+getName()+"' doesn't have a class or constructor
specified");
try {
- Class clazz = objectFactory.loadClass(className);
+ Class clazz = objectFactory.classForName(className);
object = clazz.newInstance();
} catch (Exception e) {
throw new JbpmException("couldn't instantiate bean
'"+getName()+"' of type '"+className+"'", e);
Modified:
jbpm3/trunk/modules/core/src/main/java/org/jbpm/configuration/ConstructorInfo.java
===================================================================
---
jbpm3/trunk/modules/core/src/main/java/org/jbpm/configuration/ConstructorInfo.java 2009-02-11
15:06:23 UTC (rev 3835)
+++
jbpm3/trunk/modules/core/src/main/java/org/jbpm/configuration/ConstructorInfo.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -106,7 +106,7 @@
factory = objectFactory.getObject(factoryRefName);
factoryClass = factory.getClass();
} else {
- factoryClass = ClassLoaderUtil.loadClass(factoryClassName);
+ factoryClass = ClassLoaderUtil.classForName(factoryClassName);
}
try {
@@ -118,7 +118,7 @@
} else {
String className = (this.className!=null ? this.className :
beanInfo.getClassName());
- Class clazz = objectFactory.loadClass(className);
+ Class clazz = objectFactory.classForName(className);
try {
Constructor constructor = clazz.getDeclaredConstructor(parameterTypes);
@@ -136,7 +136,7 @@
int nbrOfParameters = (parameterClassNames!=null ? parameterClassNames.length : 0);
Class[] parameterTypes = new Class[nbrOfParameters];
for (int i=0; i<nbrOfParameters; i++) {
- parameterTypes[i] = objectFactory.loadClass(parameterClassNames[i]);
+ parameterTypes[i] = objectFactory.classForName(parameterClassNames[i]);
}
return parameterTypes;
}
Modified:
jbpm3/trunk/modules/core/src/main/java/org/jbpm/configuration/JbpmTypeObjectInfo.java
===================================================================
---
jbpm3/trunk/modules/core/src/main/java/org/jbpm/configuration/JbpmTypeObjectInfo.java 2009-02-11
15:06:23 UTC (rev 3835)
+++
jbpm3/trunk/modules/core/src/main/java/org/jbpm/configuration/JbpmTypeObjectInfo.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -65,7 +65,7 @@
throw new ConfigurationException("class is a required attribute in element
variable-instance: "+XmlUtil.toString(jbpmTypeElement));
}
String variableInstanceClassName =
variableInstanceElement.getAttribute("class");
- variableInstanceClass = ClassLoaderUtil.loadClass(variableInstanceClassName);
+ variableInstanceClass = ClassLoaderUtil.classForName(variableInstanceClassName);
if (! VariableInstance.class.isAssignableFrom(variableInstanceClass)) {
throw new ConfigurationException("variable instance class
'"+variableInstanceClassName+"' is not a VariableInstance");
}
Modified:
jbpm3/trunk/modules/core/src/main/java/org/jbpm/configuration/ObjectFactoryImpl.java
===================================================================
---
jbpm3/trunk/modules/core/src/main/java/org/jbpm/configuration/ObjectFactoryImpl.java 2009-02-11
15:06:23 UTC (rev 3835)
+++
jbpm3/trunk/modules/core/src/main/java/org/jbpm/configuration/ObjectFactoryImpl.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -157,7 +157,7 @@
return object;
}
- Class loadClass(String className) {
+ Class classForName(String className) {
// "lazy load" classloader, shouldn't be loaded too early
// because if jbpm.cfg.xml is not yet parsed, the correct class loader
// may not be initialized yet.
@@ -165,7 +165,7 @@
classLoader = ClassLoaderUtil.getClassLoader();
}
try {
- return classLoader.loadClass(className);
+ return Class.forName(className, false, classLoader);
} catch (ClassNotFoundException e) {
throw new JbpmException("couldn't load class
'"+className+"'", e);
}
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/hibernate/Converters.java
===================================================================
---
jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/hibernate/Converters.java 2009-02-11
15:06:23 UTC (rev 3835)
+++
jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/hibernate/Converters.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -116,7 +116,7 @@
if (convertersByDatabaseId.containsKey(converterDatabaseId)) throw new
JbpmException("duplicate converter id :
'"+converterDatabaseId+"'");
String converterClassName = converterProperties.getProperty(converterDatabaseId);
try {
- Class converterClass = ClassLoaderUtil.loadClass(converterClassName);
+ Class converterClass = ClassLoaderUtil.classForName(converterClassName);
Converter converter = (Converter) converterClass.newInstance();
log.debug("adding converter '"+converterDatabaseId+"',
'"+converterClassName+"'");
convertersByClassNames.put(converterClassName, converter);
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/action/ActionTypes.java
===================================================================
---
jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/action/ActionTypes.java 2009-02-11
15:06:23 UTC (rev 3835)
+++
jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/action/ActionTypes.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -76,7 +76,7 @@
String elementTag = actionTypeElement.getAttribute("element");
String className = actionTypeElement.getAttribute("class");
try {
- Class<?> actionClass =
ClassLoaderUtil.getClassLoader().loadClass(className);
+ Class<?> actionClass = ClassLoaderUtil.classForName(className);
types.put(elementTag, actionClass.asSubclass(Action.class));
} catch (Exception e) {
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/def/ExceptionHandler.java
===================================================================
---
jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/def/ExceptionHandler.java 2009-02-11
15:06:23 UTC (rev 3835)
+++
jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/def/ExceptionHandler.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -43,7 +43,7 @@
public boolean matches( Throwable exception ) {
boolean matches = true;
if (exceptionClassName!=null) {
- Class<?> clazz = ClassLoaderUtil.loadClass(exceptionClassName);
+ Class<?> clazz = ClassLoaderUtil.classForName(exceptionClassName);
if (! clazz.isAssignableFrom(exception.getClass())) {
matches = false;
}
Modified:
jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/def/ProcessDefinition.java
===================================================================
---
jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/def/ProcessDefinition.java 2009-02-11
15:06:23 UTC (rev 3835)
+++
jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/def/ProcessDefinition.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -100,7 +100,7 @@
for (Object key : defaultModulesProperties.keySet()) {
String moduleClassName = (String) key;
try {
- ModuleDefinition moduleDefinition = (ModuleDefinition)
ClassLoaderUtil.loadClass(moduleClassName).newInstance();
+ ModuleDefinition moduleDefinition = (ModuleDefinition)
ClassLoaderUtil.classForName(moduleClassName).newInstance();
processDefinition.addDefinition(moduleDefinition);
} catch (Exception e) {
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/node/NodeTypes.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/node/NodeTypes.java 2009-02-11
15:06:23 UTC (rev 3835)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/graph/node/NodeTypes.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -71,7 +71,7 @@
String elementTag = nodeTypeElement.getAttribute("element");
String className = nodeTypeElement.getAttribute("class");
try {
- Class<?> nodeClass =
ClassLoaderUtil.getClassLoader().loadClass(className);
+ Class<?> nodeClass = ClassLoaderUtil.classForName(className);
types.put(elementTag, nodeClass.asSubclass(Node.class));
} catch (Exception e) {
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/instantiation/Delegation.java
===================================================================
---
jbpm3/trunk/modules/core/src/main/java/org/jbpm/instantiation/Delegation.java 2009-02-11
15:06:23 UTC (rev 3835)
+++
jbpm3/trunk/modules/core/src/main/java/org/jbpm/instantiation/Delegation.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -137,7 +137,7 @@
// load the class that needs to be instantiated
Class<?> delegationClass = null;
try {
- delegationClass = classLoader.loadClass(className);
+ delegationClass = Class.forName(className, false, classLoader);
}
catch (ClassNotFoundException e) {
throw new DelegationException("could not load delegation class '" +
className + "'", e);
@@ -149,7 +149,7 @@
Class<?> instantiatorClass = null;
try {
// load the instantiator class
- instantiatorClass = classLoader.loadClass(configType);
+ instantiatorClass = Class.forName(configType, false, classLoader);
// create the instantiator with the default constructor
instantiator = (Instantiator) instantiatorClass.newInstance();
instantiatorCache.put(configType, instantiator);
Modified:
jbpm3/trunk/modules/core/src/main/java/org/jbpm/instantiation/FieldInstantiator.java
===================================================================
---
jbpm3/trunk/modules/core/src/main/java/org/jbpm/instantiation/FieldInstantiator.java 2009-02-11
15:06:23 UTC (rev 3835)
+++
jbpm3/trunk/modules/core/src/main/java/org/jbpm/instantiation/FieldInstantiator.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -214,7 +214,7 @@
Class<?> type = String.class;
String attributeValue = element.attributeValue(attributeName);
if (attributeValue != null) {
- type = ClassLoaderUtil.loadClass(attributeValue);
+ type = ClassLoaderUtil.classForName(attributeValue);
}
return type;
}
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/jpdl/par/ProcessArchive.java
===================================================================
---
jbpm3/trunk/modules/core/src/main/java/org/jbpm/jpdl/par/ProcessArchive.java 2009-02-11
15:06:23 UTC (rev 3835)
+++
jbpm3/trunk/modules/core/src/main/java/org/jbpm/jpdl/par/ProcessArchive.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -153,7 +153,7 @@
{
Element element = (Element)iter.next();
String className = element.getAttribute("class");
- ProcessArchiveParser processArchiveParser =
(ProcessArchiveParser)ClassLoaderUtil.loadClass(className).newInstance();
+ ProcessArchiveParser processArchiveParser =
(ProcessArchiveParser)ClassLoaderUtil.classForName(className).newInstance();
if (processArchiveParser instanceof ConfigurableParser)
{
((ConfigurableParser)processArchiveParser).configure(element);
Modified:
jbpm3/trunk/modules/core/src/main/java/org/jbpm/security/authentication/SubjectAuthenticationService.java
===================================================================
---
jbpm3/trunk/modules/core/src/main/java/org/jbpm/security/authentication/SubjectAuthenticationService.java 2009-02-11
15:06:23 UTC (rev 3835)
+++
jbpm3/trunk/modules/core/src/main/java/org/jbpm/security/authentication/SubjectAuthenticationService.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -86,7 +86,7 @@
}
protected void initPrincipalClass(String principalClassName) {
- this.principalClass = ClassLoaderUtil.loadClass(principalClassName);
+ this.principalClass = ClassLoaderUtil.classForName(principalClassName);
}
public String getActorId() {
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/util/ClassLoaderUtil.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/util/ClassLoaderUtil.java 2009-02-11
15:06:23 UTC (rev 3835)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/util/ClassLoaderUtil.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -39,6 +39,12 @@
// hide default constructor to prevent instantiation
}
+ /**
+ * Bad usage of ClassLoader.loadClass() under JDK 6
+ *
https://jira.jboss.org/jira/browse/JBPM-1976
+ *
+ * @deprecated Use ClassLoaderUtil.classForName
+ */
public static Class<?> loadClass(String className)
{
try
@@ -51,6 +57,18 @@
}
}
+ public static Class<?> classForName(String className)
+ {
+ try
+ {
+ return Class.forName(className, false, getClassLoader());
+ }
+ catch (ClassNotFoundException e)
+ {
+ throw new JbpmException("class not found '" + className +
"'", e);
+ }
+ }
+
/**
* returns the {@link ClassLoader} which is used in jbpm. Can be configured in
jbpm.cfg.xml by the
* property <code>jbpm.classLoader</code>.
@@ -95,11 +113,9 @@
"'jbpm.classloader' property set to 'custom' but
'jbpm.customClassLoader.className' is null!");
}
- Class<?> clazz = ClassLoaderUtil.class.getClassLoader()
- .loadClass(classloaderClassname);
+ Class<?> clazz = Class.forName(classloaderClassname, false,
ClassLoaderUtil.class.getClassLoader());
if (clazz == null) {
- clazz = Thread.currentThread().getContextClassLoader()
- .loadClass(classloaderClassname);
+ clazz = Class.forName(classloaderClassname, false,
Thread.currentThread().getContextClassLoader());
}
return (ClassLoader) clazz.newInstance();
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/util/EqualsUtil.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/util/EqualsUtil.java 2009-02-11
15:06:23 UTC (rev 3835)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/util/EqualsUtil.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -53,8 +53,8 @@
static synchronized void initializeHibernateProxyClass() {
try {
- hibernateProxyClass =
ClassLoaderUtil.getClassLoader().loadClass("org.hibernate.proxy.HibernateProxy");
- } catch (ClassNotFoundException e) {
+ hibernateProxyClass =
ClassLoaderUtil.classForName("org.hibernate.proxy.HibernateProxy");
+ } catch (RuntimeException e) {
isHibernateInClasspth = false;
}
isInitialized = true;
Modified: jbpm3/trunk/modules/core/src/test/java/org/jbpm/SerializabilityTest.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/SerializabilityTest.java 2009-02-11
15:06:23 UTC (rev 3835)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/SerializabilityTest.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -135,7 +135,7 @@
}
private void assertSerializabilityOfClass(String className) {
- Class<?> clazz = ClassLoaderUtil.loadClass(className);
+ Class<?> clazz = ClassLoaderUtil.classForName(className);
if ( ! ( Serializable.class.isAssignableFrom(clazz)
|| Modifier.isAbstract(clazz.getModifiers())
|| isExcused(className)
Modified:
jbpm3/trunk/modules/core/src/test/java/org/jbpm/context/exe/CustomSessionFactoryFactory.java
===================================================================
---
jbpm3/trunk/modules/core/src/test/java/org/jbpm/context/exe/CustomSessionFactoryFactory.java 2009-02-11
15:06:23 UTC (rev 3835)
+++
jbpm3/trunk/modules/core/src/test/java/org/jbpm/context/exe/CustomSessionFactoryFactory.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -32,7 +32,7 @@
public static SessionFactory createSessionFactory(String extraClassMapping) {
Configuration configuration = HibernateHelper.createConfiguration(null, null);
- Class clazz = ClassLoaderUtil.loadClass(extraClassMapping);
+ Class clazz = ClassLoaderUtil.classForName(extraClassMapping);
configuration.addClass(clazz);
return HibernateHelper.createSessionFactory(configuration, false);
}
Modified:
jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveClassLoadingDbTest.java
===================================================================
---
jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveClassLoadingDbTest.java 2009-02-11
15:06:23 UTC (rev 3835)
+++
jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveClassLoadingDbTest.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -75,7 +75,7 @@
assertNull(testClassLoader.getResource("org/jbpm/jpdl/par/classresource.txt"));
assertNull(testClassLoader.getResource("org/jbpm/jpdl/par/archiveresource.txt"));
try {
- testClassLoader.loadClass("org.jbpm.jpdl.par.ResourceAction");
+ Class.forName("org.jbpm.jpdl.par.ResourceAction", false,
testClassLoader);
fail("expected exception");
} catch (ClassNotFoundException e) {
// OK
@@ -123,13 +123,13 @@
try {
ClassLoader testClassLoader =
ProcessArchiveClassLoadingDbTest.class.getClassLoader();
try {
- testClassLoader.loadClass("org.jbpm.jpdl.par.InstantiateAction");
+ Class.forName("org.jbpm.jpdl.par.InstantiateAction", false,
testClassLoader);
fail("expected exception");
} catch (ClassNotFoundException e) {
// OK
}
try {
- testClassLoader.loadClass("org.jbpm.jpdl.par.InstantiateClass");
+ Class.forName("org.jbpm.jpdl.par.InstantiateClass", false,
testClassLoader);
fail("expected exception");
} catch (ClassNotFoundException e) {
// OK
@@ -172,13 +172,13 @@
try {
ClassLoader testClassLoader =
ProcessArchiveClassLoadingDbTest.class.getClassLoader();
try {
- testClassLoader.loadClass("org.jbpm.jpdl.par.InstantiateAction");
+ Class.forName("org.jbpm.jpdl.par.InstantiateAction", false,
testClassLoader);
fail("expected exception");
} catch (ClassNotFoundException e) {
// OK
}
// InstantiateClass should be visible on the test classpath
- testClassLoader.loadClass("org.jbpm.jpdl.par.InstantiateClass");
+ Class.forName("org.jbpm.jpdl.par.InstantiateClass", false,
testClassLoader);
// deploy the process archive
ZipInputStream zipInputStream = new ZipInputStream(new
ByteArrayInputStream(zipBytes));
Modified:
jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessClassLoaderTest.java
===================================================================
---
jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessClassLoaderTest.java 2009-02-11
15:06:23 UTC (rev 3835)
+++
jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessClassLoaderTest.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -27,10 +27,10 @@
}
protected Class< ? > findClass(String name) throws ClassNotFoundException {
if
("TestContextClassLoader-knows-where-to-find-ContextLoadedAction".equals(name))
{
- return getParent().loadClass(ContextLoadedAction.class.getName());
+ return Class.forName(ContextLoadedAction.class.getName(), false, getParent());
}
else if
("TestContextClassLoader-knows-where-to-find-ContextLoadedExceptionAction".equals(name))
{
- return getParent().loadClass(ContextLoadedExceptionAction.class.getName());
+ return Class.forName(ContextLoadedExceptionAction.class.getName(), false,
getParent());
}
return null;
}
Modified:
jbpm3/trunk/modules/identity/src/main/java/org/jbpm/identity/hibernate/PermissionUserType.java
===================================================================
---
jbpm3/trunk/modules/identity/src/main/java/org/jbpm/identity/hibernate/PermissionUserType.java 2009-02-11
15:06:23 UTC (rev 3835)
+++
jbpm3/trunk/modules/identity/src/main/java/org/jbpm/identity/hibernate/PermissionUserType.java 2009-02-11
16:01:39 UTC (rev 3836)
@@ -93,9 +93,8 @@
try {
// TODO optimize performance by caching the constructors
- Class<? extends Permission> permissionClass =
PermissionUserType.class.getClassLoader()
- .loadClass(className)
- .asSubclass(Permission.class);
+ ClassLoader classLoader = PermissionUserType.class.getClassLoader();
+ Class<? extends Permission> permissionClass = Class.forName(className, false,
classLoader).asSubclass(Permission.class);
Constructor<? extends Permission> constructor =
permissionClass.getDeclaredConstructor(NAME_ACTIOS_CONSTRUCTOR_PARAMETER_TYPES);
permission = constructor.newInstance(new Object[] { name, actions });
}