[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