[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