[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