[jboss-cvs] Picketbox SVN: r80 - trunk/security-spi/identity/src/main/java/org/jboss/security/identity.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Apr 6 17:01:24 EDT 2010


Author: anil.saldhana at jboss.com
Date: 2010-04-06 17:01:23 -0400 (Tue, 06 Apr 2010)
New Revision: 80

Modified:
   trunk/security-spi/identity/src/main/java/org/jboss/security/identity/RoleFactory.java
Log:
SECURITY-497: loadClass bottleneck

Modified: trunk/security-spi/identity/src/main/java/org/jboss/security/identity/RoleFactory.java
===================================================================
--- trunk/security-spi/identity/src/main/java/org/jboss/security/identity/RoleFactory.java	2010-04-06 20:41:17 UTC (rev 79)
+++ trunk/security-spi/identity/src/main/java/org/jboss/security/identity/RoleFactory.java	2010-04-06 21:01:23 UTC (rev 80)
@@ -25,6 +25,8 @@
 import java.security.AccessController;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
+import java.util.Map;
+import java.util.WeakHashMap;
  
 /**
  *  Factory to create roles
@@ -37,14 +39,21 @@
    private static String SIMPLE_ROLE_CLASS = "org.jboss.security.identity.plugins.SimpleRole";
    private static String SIMPLE_ROLEGROUP_CLASS = "org.jboss.security.identity.plugins.SimpleRoleGroup";
    
+   private static Map<String, Class<?> > clazzMap = new WeakHashMap<String, Class<?>>();
+   
    public static Role createRole(final String name) throws PrivilegedActionException
    {
      return AccessController.doPrivileged(new PrivilegedExceptionAction<Role>()
      { 
       public Role run() throws Exception
       { 
-         ClassLoader tcl = Thread.currentThread().getContextClassLoader();
-         Class<?> clazz = tcl.loadClass(SIMPLE_ROLE_CLASS);
+         Class<?> clazz = clazzMap.get(SIMPLE_ROLE_CLASS);
+         if( clazz == null )
+         {
+            ClassLoader tcl = Thread.currentThread().getContextClassLoader();
+            clazz = tcl.loadClass(SIMPLE_ROLE_CLASS); 
+         }
+         
          Constructor<?> ctr = clazz.getConstructor(new Class[] {String.class});
          return (Role) ctr.newInstance(new Object[]{name});
       }  
@@ -57,8 +66,13 @@
      { 
       public RoleGroup run() throws Exception
       { 
-         ClassLoader tcl = Thread.currentThread().getContextClassLoader();
-         Class<?> clazz = tcl.loadClass(SIMPLE_ROLEGROUP_CLASS);
+         Class<?> clazz = clazzMap.get(SIMPLE_ROLEGROUP_CLASS);
+         if( clazz == null )
+         {
+            ClassLoader tcl = Thread.currentThread().getContextClassLoader();
+            clazz = tcl.loadClass(SIMPLE_ROLEGROUP_CLASS); 
+         }
+          
          Constructor<?> ctr = clazz.getConstructor(new Class[] {String.class});
          return (RoleGroup) ctr.newInstance(new Object[]{name});
       }  




More information about the jboss-cvs-commits mailing list