[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