[jbpm-commits] JBoss JBPM SVN: r3836 - in jbpm3/trunk/modules: core/src/main/java/org/jbpm/db/hibernate and 11 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Wed Feb 11 11:01:39 EST 2009
Author: thomas.diesler at 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 });
}
More information about the jbpm-commits
mailing list