[jboss-cvs] Picketbox SVN: r449 - trunk/security-spi/spi/src/main/java/org/jboss/security.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Sep 5 09:27:14 EDT 2013
Author: sguilhen at redhat.com
Date: 2013-09-05 09:27:14 -0400 (Thu, 05 Sep 2013)
New Revision: 449
Modified:
trunk/security-spi/spi/src/main/java/org/jboss/security/SecurityContextFactory.java
Log:
add cache for the SecurityContextUtil constructor
Modified: trunk/security-spi/spi/src/main/java/org/jboss/security/SecurityContextFactory.java
===================================================================
--- trunk/security-spi/spi/src/main/java/org/jboss/security/SecurityContextFactory.java 2013-09-04 14:27:52 UTC (rev 448)
+++ trunk/security-spi/spi/src/main/java/org/jboss/security/SecurityContextFactory.java 2013-09-05 13:27:14 UTC (rev 449)
@@ -36,15 +36,21 @@
@SuppressWarnings("unchecked")
public class SecurityContextFactory
{
- private static final Class[] CONSTRUCTOR_TYPES = new Class[]{String.class};
+ private static final Class[] CONTEXT_CONSTRUCTOR_TYPES = new Class[]{String.class};
+ private static final Class[] CONTEXT_UTIL_CONSTRUCTOR_TYPES = new Class[]{SecurityContext.class};
+
private static String defaultFQN = "org.jboss.security.plugins.JBossSecurityContext";
private static String defaultUtilClassFQN = "org.jboss.security.plugins.JBossSecurityContextUtil";
private static Class<? extends SecurityContext> defaultSecurityContextClass = null;
+
private static Constructor<SecurityContext> defaultSecurityContextConstructor = null;
+
private static Class<? extends SecurityContextUtil> defaultUtilClass = null;
+
+ private static Constructor<SecurityContextUtil> defaultUtilConstructor = null;
/**
* Classloader.loadClass is a synchronized method in the JDK. Under heavy concurrent requests,
@@ -83,7 +89,7 @@
if (defaultSecurityContextClass != null) {
try
{
- defaultSecurityContextConstructor = (Constructor<SecurityContext>) defaultSecurityContextClass.getConstructor(CONSTRUCTOR_TYPES);
+ defaultSecurityContextConstructor = (Constructor<SecurityContext>) defaultSecurityContextClass.getConstructor(CONTEXT_CONSTRUCTOR_TYPES);
}
catch(Exception e)
{
@@ -151,7 +157,7 @@
if(fqnClass == null)
throw PicketBoxMessages.MESSAGES.invalidNullArgument("fqnClass");
defaultSecurityContextClass = getContextClass(fqnClass, classLoader);
- defaultSecurityContextConstructor = (Constructor<SecurityContext>) defaultSecurityContextClass.getConstructor(CONSTRUCTOR_TYPES);
+ defaultSecurityContextConstructor = (Constructor<SecurityContext>) defaultSecurityContextClass.getConstructor(CONTEXT_CONSTRUCTOR_TYPES);
return createSecurityContext(securityDomain, defaultSecurityContextConstructor);
}
@@ -173,7 +179,7 @@
if(clazz == null)
throw PicketBoxMessages.MESSAGES.invalidNullArgument("clazz");
//Get the CTR
- Constructor<? extends SecurityContext> ctr = clazz.getConstructor(CONSTRUCTOR_TYPES);
+ Constructor<? extends SecurityContext> ctr = clazz.getConstructor(CONTEXT_CONSTRUCTOR_TYPES);
return ctr.newInstance(securityDomain);
}
@@ -260,18 +266,16 @@
*/
public static SecurityContextUtil createUtil(SecurityContext sc, ClassLoader classLoader) throws Exception
{
- Class<? extends SecurityContextUtil> clazz = defaultUtilClass;
+ Constructor<SecurityContextUtil> ctr = defaultUtilConstructor;
- if(clazz == null)
+ if(ctr == null)
{
- clazz = (Class<? extends SecurityContextUtil>) loadClass(defaultUtilClassFQN, classLoader);
- defaultUtilClass = clazz;
+ Class<? extends SecurityContextUtil> clazz = (Class<? extends SecurityContextUtil>) loadClass(defaultUtilClassFQN, classLoader);
+ defaultUtilClass = clazz;
+ ctr = defaultUtilConstructor = (Constructor<SecurityContextUtil>) clazz.getConstructor(CONTEXT_UTIL_CONSTRUCTOR_TYPES);
}
- //Get the CTR
- Constructor<?> ctr = clazz.getConstructor(new Class[]{SecurityContext.class});
- Object obj = ctr.newInstance(new Object[]{sc});
- return SecurityContextUtil.class.cast(obj);
+ return ctr.newInstance(sc);
}
/**
@@ -294,20 +298,11 @@
*/
public static SecurityContextUtil createUtil(SecurityContext sc, String utilFQN, ClassLoader classLoader) throws Exception
{
- Class<?> clazz = null;
- try
- {
- clazz = classLoader.loadClass(utilFQN);
- }
- catch (Exception e)
- {
- ClassLoader tcl = SecuritySPIActions.getContextClassLoader();
- clazz = tcl.loadClass(utilFQN);
- }
+ Class<?> clazz = loadClass(utilFQN, classLoader);
//Get the CTR
Constructor<? extends SecurityContextUtil> ctr =
- (Constructor<? extends SecurityContextUtil>) clazz.getConstructor(new Class[]{SecurityContext.class});
- return ctr.newInstance(new Object[]{sc});
+ (Constructor<? extends SecurityContextUtil>) clazz.getConstructor(CONTEXT_UTIL_CONSTRUCTOR_TYPES);
+ return ctr.newInstance(sc);
}
/**
@@ -330,7 +325,8 @@
public static void setDefaultSecurityContextFQN(String fqn)
{
defaultFQN = fqn;
- defaultSecurityContextClass = null;
+ defaultSecurityContextClass = null;
+ defaultSecurityContextConstructor = null;
}
@@ -342,6 +338,7 @@
{
defaultUtilClassFQN = fqn;
defaultUtilClass = null; //reset
+ defaultUtilConstructor = null;
}
/**
More information about the jboss-cvs-commits
mailing list