[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