[jboss-cvs] Picketbox SVN: r200 - trunk/security-spi/spi/src/main/java/org/jboss/security.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Apr 19 10:48:07 EDT 2011
Author: mmoyses
Date: 2011-04-19 10:48:07 -0400 (Tue, 19 Apr 2011)
New Revision: 200
Modified:
trunk/security-spi/spi/src/main/java/org/jboss/security/SecurityContextFactory.java
trunk/security-spi/spi/src/main/java/org/jboss/security/SecuritySPIActions.java
Log:
SECURITY-587: add ClassLoader parameter to methods
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 2011-04-18 20:21:42 UTC (rev 199)
+++ trunk/security-spi/spi/src/main/java/org/jboss/security/SecurityContextFactory.java 2011-04-19 14:48:07 UTC (rev 200)
@@ -51,16 +51,31 @@
{
try
{
- defaultSecurityContextClass = (Class<? extends SecurityContext>) SecuritySPIActions.getContextClassLoader().loadClass(defaultFQN);
+ defaultSecurityContextClass = (Class<? extends SecurityContext>) SecuritySPIActions.getCurrentClassLoader(SecurityContextFactory.class).loadClass(defaultFQN);
}
catch(Exception ignore)
- {}
+ {
+ try
+ {
+ defaultSecurityContextClass = (Class<? extends SecurityContext>) SecuritySPIActions.getContextClassLoader().loadClass(defaultFQN);
+ }
+ catch (Exception e)
+ {
+ }
+ }
try
{
- defaultUtilClass = (Class<? extends SecurityContextUtil>) SecuritySPIActions.getContextClassLoader().loadClass(defaultUtilClassFQN);
+ defaultUtilClass = (Class<? extends SecurityContextUtil>) SecuritySPIActions.getCurrentClassLoader(SecurityContextFactory.class).loadClass(defaultUtilClassFQN);
}
catch(Exception ignore)
- {
+ {
+ try
+ {
+ defaultUtilClass = (Class<? extends SecurityContextUtil>) SecuritySPIActions.getContextClassLoader().loadClass(defaultUtilClassFQN);
+ }
+ catch(Exception e)
+ {
+ }
}
}
@@ -74,10 +89,24 @@
{
if(defaultSecurityContextClass != null)
return createSecurityContext(securityDomain, defaultSecurityContextClass);
- return createSecurityContext(securityDomain, defaultFQN);
+ return createSecurityContext(securityDomain, defaultFQN, SecuritySPIActions.getCurrentClassLoader(SecurityContextFactory.class));
}
/**
+ * Create a security context
+ * @param securityDomain Security Domain driving the context
+ * @param classLoader ClassLoader to use
+ * @return
+ * @throws Exception
+ */
+ public static SecurityContext createSecurityContext(String securityDomain, ClassLoader classLoader) throws Exception
+ {
+ if(defaultSecurityContextClass != null)
+ return createSecurityContext(securityDomain, defaultSecurityContextClass);
+ return createSecurityContext(securityDomain, defaultFQN, classLoader);
+ }
+
+ /**
* Construct a SecurityContext
* @param securityDomain The Security Domain
* @param fqnClass Fully Qualified Name of the SecurityContext Class
@@ -87,12 +116,26 @@
public static SecurityContext createSecurityContext(String securityDomain,
String fqnClass) throws Exception
{
+ return createSecurityContext(securityDomain, fqnClass, SecuritySPIActions.getCurrentClassLoader(SecurityContextFactory.class));
+ }
+
+ /**
+ * Construct a SecurityContext
+ * @param securityDomain The Security Domain
+ * @param fqnClass Fully Qualified Name of the SecurityContext Class
+ * @param classLoader ClassLoader to use
+ * @return an instance of SecurityContext
+ * @throws Exception
+ */
+ public static SecurityContext createSecurityContext(String securityDomain,
+ String fqnClass, ClassLoader classLoader) throws Exception
+ {
if(securityDomain == null)
throw new IllegalArgumentException("securityDomain is null");
if(fqnClass == null)
throw new IllegalArgumentException("fqnClass is null");
- defaultSecurityContextClass = getContextClass(fqnClass);
- return createSecurityContext(securityDomain, defaultSecurityContextClass);
+ defaultSecurityContextClass = getContextClass(fqnClass, classLoader);
+ return createSecurityContext(securityDomain, defaultSecurityContextClass);
}
@@ -128,9 +171,26 @@
* @see #createSecurityContext(String)
*/
public static SecurityContext createSecurityContext(Principal p,
- Object cred,Subject s, String securityDomain) throws Exception
+ Object cred, Subject s, String securityDomain) throws Exception
{
- SecurityContext jsc = createSecurityContext(securityDomain);
+ return createSecurityContext(p, cred, s, securityDomain, SecuritySPIActions.getCurrentClassLoader(SecurityContextFactory.class));
+ }
+
+ /**
+ * Create a security context
+ * @param p Principal
+ * @param cred Credential
+ * @param s Subject
+ * @param securityDomain SecurityDomain
+ * @param classLoader ClassLoader to use
+ * @return
+ * @throws Exception
+ * @see #createSecurityContext(String)
+ */
+ public static SecurityContext createSecurityContext(Principal p,
+ Object cred, Subject s, String securityDomain, ClassLoader classLoader) throws Exception
+ {
+ SecurityContext jsc = createSecurityContext(securityDomain, classLoader);
jsc.getUtil().createSubjectInfo(p,cred,s);
return jsc;
}
@@ -142,30 +202,43 @@
* @param s Subject
* @param securityDomain SecurityDomain
* @param fqnClass FQN of the SecurityContext class to be instantiated
+ * @param classLoader ClassLoader to use
* @return
* @see #createSecurityContext(String)
* @throws Exception
*/
public static SecurityContext createSecurityContext(Principal p,
- Object cred,Subject s, String securityDomain, String fqnClass)
+ Object cred,Subject s, String securityDomain, String fqnClass, ClassLoader classLoader)
throws Exception
{
- SecurityContext sc = createSecurityContext(securityDomain, fqnClass);
+ SecurityContext sc = createSecurityContext(securityDomain, fqnClass, classLoader);
sc.getUtil().createSubjectInfo(p,cred,s);
return sc;
}
/**
* Return an instance of the SecurityContextUtil
+ * @param sc SecurityContext
* @return
*/
public static SecurityContextUtil createUtil(SecurityContext sc) throws Exception
{
+ return createUtil(sc, SecuritySPIActions.getCurrentClassLoader(SecurityContextFactory.class));
+ }
+
+ /**
+ * Return an instance of the SecurityContextUtil
+ * @param sc SecurityContext
+ * @param classLoader ClassLoader to use
+ * @return
+ */
+ public static SecurityContextUtil createUtil(SecurityContext sc, ClassLoader classLoader) throws Exception
+ {
Class<? extends SecurityContextUtil> clazz = defaultUtilClass;
if(clazz == null)
{
- clazz = (Class<? extends SecurityContextUtil>) loadClass(defaultUtilClassFQN);
+ clazz = (Class<? extends SecurityContextUtil>) loadClass(defaultUtilClassFQN, classLoader);
defaultUtilClass = clazz;
}
@@ -173,7 +246,7 @@
Constructor<?> ctr = clazz.getConstructor(new Class[]{SecurityContext.class});
Object obj = ctr.newInstance(new Object[]{sc});
return SecurityContextUtil.class.cast(obj);
- }
+ }
/**
* Return an instance of the SecurityContextUtil given a FQN of the util class
@@ -183,12 +256,32 @@
*/
public static SecurityContextUtil createUtil(SecurityContext sc, String utilFQN) throws Exception
{
- ClassLoader tcl = SecuritySPIActions.getContextClassLoader();
- Class<?> clazz = tcl.loadClass(utilFQN);
+ return createUtil(sc, utilFQN, SecuritySPIActions.getCurrentClassLoader(SecurityContextFactory.class));
+ }
+
+ /**
+ * Return an instance of the SecurityContextUtil given a FQN of the util class
+ * @param sc SecurityContext
+ * @param utilFQN fqn of the util class
+ * @param classLoader ClassLoader to use
+ * @return
+ */
+ 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);
+ }
//Get the CTR
Constructor<? extends SecurityContextUtil> ctr =
(Constructor<? extends SecurityContextUtil>) clazz.getConstructor(new Class[]{SecurityContext.class});
- return ctr.newInstance(new Object[]{sc});
+ return ctr.newInstance(new Object[]{sc});
}
/**
@@ -229,18 +322,33 @@
/**
* Load a class
* @param fqn
+ * @param classLoader
* @return
* @throws Exception
*/
- private static Class<?> loadClass(String fqn) throws Exception
+ private static Class<?> loadClass(String fqn, ClassLoader classLoader) throws Exception
{
- ClassLoader tcl = SecuritySPIActions.getContextClassLoader();
- return tcl.loadClass(fqn);
+ try
+ {
+ return classLoader.loadClass(fqn);
+ }
+ catch (Exception e)
+ {
+ ClassLoader tcl = SecuritySPIActions.getContextClassLoader();
+ return tcl.loadClass(fqn);
+ }
}
- private static Class<SecurityContext> getContextClass(String className) throws Exception
+ private static Class<SecurityContext> getContextClass(String className, ClassLoader classLoader) throws Exception
{
- ClassLoader tcl = SecuritySPIActions.getContextClassLoader();
- return (Class<SecurityContext>) tcl.loadClass(className);
+ try
+ {
+ return (Class<SecurityContext>) classLoader.loadClass(className);
+ }
+ catch (Exception e)
+ {
+ ClassLoader tcl = SecuritySPIActions.getContextClassLoader();
+ return (Class<SecurityContext>) tcl.loadClass(className);
+ }
}
}
\ No newline at end of file
Modified: trunk/security-spi/spi/src/main/java/org/jboss/security/SecuritySPIActions.java
===================================================================
--- trunk/security-spi/spi/src/main/java/org/jboss/security/SecuritySPIActions.java 2011-04-18 20:21:42 UTC (rev 199)
+++ trunk/security-spi/spi/src/main/java/org/jboss/security/SecuritySPIActions.java 2011-04-19 14:48:07 UTC (rev 200)
@@ -34,7 +34,7 @@
{
static ClassLoader getContextClassLoader()
{
- return AccessController.doPrivileged( new PrivilegedAction<ClassLoader>()
+ return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
{
public ClassLoader run()
{
@@ -42,4 +42,15 @@
}
});
}
+
+ static ClassLoader getCurrentClassLoader(final Class clazz)
+ {
+ return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
+ {
+ public ClassLoader run()
+ {
+ return clazz.getClassLoader();
+ }
+ });
+ }
}
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list