[jboss-cvs] JBossAS SVN: r81400 - projects/security/security-spi/trunk/spi/src/main/org/jboss/security.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Nov 21 01:46:03 EST 2008


Author: anil.saldhana at jboss.com
Date: 2008-11-21 01:46:03 -0500 (Fri, 21 Nov 2008)
New Revision: 81400

Modified:
   projects/security/security-spi/trunk/spi/src/main/org/jboss/security/SecurityContextFactory.java
Log:
SECURITY-328: additional methods to take in class instance

Modified: projects/security/security-spi/trunk/spi/src/main/org/jboss/security/SecurityContextFactory.java
===================================================================
--- projects/security/security-spi/trunk/spi/src/main/org/jboss/security/SecurityContextFactory.java	2008-11-21 06:42:52 UTC (rev 81399)
+++ projects/security/security-spi/trunk/spi/src/main/org/jboss/security/SecurityContextFactory.java	2008-11-21 06:46:03 UTC (rev 81400)
@@ -25,9 +25,8 @@
 import java.security.Principal;
 
 import javax.security.auth.Subject;
+ 
 
-//$Id$
-
 /**
  *  Factory class to create Security Context instances
  *  @author <a href="mailto:Anil.Saldhana at jboss.org">Anil Saldhana</a>
@@ -66,8 +65,28 @@
       if(fqnClass == null)
          throw new IllegalArgumentException("fqnClass is null");
       Class<SecurityContext> clazz = getContextClass(fqnClass);
+      return createSecurityContext(securityDomain, clazz); 
+   }
+   
+   
+   /**
+    * Create a security context given the class
+    * This method exists because classloader.loadClass is an expensive
+    * operation due to synchronization
+    * @param securityDomain
+    * @param clazz
+    * @return
+    * @throws Exception
+    */
+   public static SecurityContext createSecurityContext(String securityDomain,
+         Class<? extends SecurityContext> clazz) throws Exception
+   {
+      if(securityDomain == null)
+         throw new IllegalArgumentException("securityDomain is null");
+      if(clazz == null)
+         throw new IllegalArgumentException("clazz is null"); 
       //Get the CTR
-      Constructor<SecurityContext> ctr = clazz.getConstructor(new Class[]{String.class});
+      Constructor<? extends SecurityContext> ctr = clazz.getConstructor(new Class[]{String.class});
       return (SecurityContext) ctr.newInstance(new Object[]{securityDomain}); 
    }
    
@@ -127,14 +146,31 @@
     * @param utilFQN fqn of the util class
     * @return
     */
+   @SuppressWarnings("unchecked")
    public static SecurityContextUtil createUtil(SecurityContext sc, String utilFQN) throws Exception
    {
-      Class<SecurityContext> clazz = getContextClass(utilFQN);
+      ClassLoader tcl = SecuritySPIActions.getContextClassLoader();
+      Class<?> clazz = tcl.loadClass(utilFQN);
       //Get the CTR
-      Constructor<SecurityContext> ctr = clazz.getConstructor(new Class[]{SecurityContext.class});
-      return (SecurityContextUtil) ctr.newInstance(new Object[]{sc}); 
+      Constructor<? extends SecurityContextUtil> ctr = 
+         (Constructor<? extends SecurityContextUtil>) clazz.getConstructor(new Class[]{SecurityContext.class});
+      return ctr.newInstance(new Object[]{sc}); 
    }
    
+   /**
+    * Return an instance of the SecurityContextUtil given a Class instance of the util class
+    * @param sc SecurityContext
+    * @param utilFQN fqn of the util class
+    * @return
+    */
+   public static SecurityContextUtil createUtil(SecurityContext sc, 
+         Class<? extends SecurityContextUtil> utilClazz) throws Exception
+   {
+      //Get the CTR
+      Constructor<? extends SecurityContextUtil> ctr = utilClazz.getConstructor(new Class[]{SecurityContext.class});
+      return ctr.newInstance(new Object[]{sc}); 
+   }
+   
    @SuppressWarnings("unchecked")
    private static Class<SecurityContext> getContextClass(String className) throws Exception
    {




More information about the jboss-cvs-commits mailing list