[jboss-cvs] JBossAS SVN: r103596 - projects/security/security-spi/branches/Branch_2_0/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:03:01 EDT 2010


Author: anil.saldhana at jboss.com
Date: 2010-04-06 17:03:00 -0400 (Tue, 06 Apr 2010)
New Revision: 103596

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

Modified: projects/security/security-spi/branches/Branch_2_0/identity/src/main/java/org/jboss/security/identity/RoleFactory.java
===================================================================
--- projects/security/security-spi/branches/Branch_2_0/identity/src/main/java/org/jboss/security/identity/RoleFactory.java	2010-04-06 20:43:06 UTC (rev 103595)
+++ projects/security/security-spi/branches/Branch_2_0/identity/src/main/java/org/jboss/security/identity/RoleFactory.java	2010-04-06 21:03:00 UTC (rev 103596)
@@ -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