[jboss-cvs] JBossAS SVN: r82858 - in projects/microcontainer/trunk/kernel/src/main/java/org/jboss: kernel/plugins/dependency and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jan 14 06:02:02 EST 2009
Author: alesj
Date: 2009-01-14 06:02:01 -0500 (Wed, 14 Jan 2009)
New Revision: 82858
Modified:
projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/SecurityActions.java
projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelController.java
Log:
[JBMICROCONT-403]; use privileged block for getting CL info.
Add trace log about matching contextual contexts.
Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java 2009-01-14 09:52:31 UTC (rev 82857)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java 2009-01-14 11:02:01 UTC (rev 82858)
@@ -277,7 +277,7 @@
{
TypeProvider typeProvider = (TypeProvider)node;
Class<?> injectionClass = typeProvider.getType(visitor, this).getType();
- log.debug(context.getName() + ": Contextual injection usage (class -> classloader): " + injectionClass + " -> " + injectionClass.getClassLoader() + " defined by " + node);
+ log.debug(context.getName() + ": Contextual injection usage (class -> classloader): " + injectionClass + " -> " + SecurityActions.getClassLoader(injectionClass) + " defined by " + node);
// set when required
ControllerState whenRequired = whenRequiredState;
if (whenRequired == null)
Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/SecurityActions.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/SecurityActions.java 2009-01-14 09:52:31 UTC (rev 82857)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/plugins/SecurityActions.java 2009-01-14 11:02:01 UTC (rev 82858)
@@ -28,12 +28,20 @@
/**
* SecurityActions.
- *
+ *
* @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
* @version $Revision: 1.1 $
*/
class SecurityActions
{
+ /**
+ * Set context classloader.
+ *
+ * @param cl the classloader
+ * @return previous context classloader
+ * @throws Throwable for any error
+ */
static ClassLoader setContextClassLoader(final ClassLoader cl) throws Throwable
{
if (System.getSecurityManager() == null)
@@ -49,28 +57,28 @@
{
return AccessController.doPrivileged(new PrivilegedExceptionAction<ClassLoader>()
{
- public ClassLoader run() throws Exception
- {
- try
- {
- ClassLoader result = Thread.currentThread().getContextClassLoader();
- if (cl != null)
- Thread.currentThread().setContextClassLoader(cl);
- return result;
- }
- catch (Exception e)
- {
- throw e;
- }
- catch (Error e)
- {
- throw e;
- }
- catch (Throwable e)
- {
- throw new RuntimeException("Error setting context classloader", e);
- }
- }
+ public ClassLoader run() throws Exception
+ {
+ try
+ {
+ ClassLoader result = Thread.currentThread().getContextClassLoader();
+ if (cl != null)
+ Thread.currentThread().setContextClassLoader(cl);
+ return result;
+ }
+ catch (Exception e)
+ {
+ throw e;
+ }
+ catch (Error e)
+ {
+ throw e;
+ }
+ catch (Throwable e)
+ {
+ throw new RuntimeException("Error setting context classloader", e);
+ }
+ }
});
}
catch (PrivilegedActionException e)
@@ -80,6 +88,11 @@
}
}
+ /**
+ * Reset context classloader.
+ *
+ * @param classLoader the classloader
+ */
static void resetContextClassLoader(final ClassLoader classLoader)
{
if (System.getSecurityManager() == null)
@@ -90,12 +103,37 @@
{
AccessController.doPrivileged(new PrivilegedAction<Object>()
{
- public Object run()
- {
- Thread.currentThread().setContextClassLoader(classLoader);
- return null;
- }
+ public Object run()
+ {
+ Thread.currentThread().setContextClassLoader(classLoader);
+ return null;
+ }
});
}
}
+
+ /**
+ * Get classloader from class.
+ *
+ * @param clazz the class
+ * @return class's classloader
+ */
+ static ClassLoader getClassLoader(final Class<?> clazz)
+ {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm == null)
+ {
+ return clazz.getClassLoader();
+ }
+ else
+ {
+ return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
+ {
+ public ClassLoader run()
+ {
+ return clazz.getClassLoader();
+ }
+ });
+ }
+ }
}
Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelController.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelController.java 2009-01-14 09:52:31 UTC (rev 82857)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/kernel/plugins/dependency/AbstractKernelController.java 2009-01-14 11:02:01 UTC (rev 82858)
@@ -442,7 +442,11 @@
{
if (numberOfMatchingBeans > 1)
{
- log.warn("Multiple beans match class type: " + clazz);
+ log.warn("Multiple beans match class type [enable trace log for details]: " + clazz);
+ if (log.isTraceEnabled())
+ {
+ log.trace("Matching contexts: " + contexts);
+ }
}
return null;
}
More information about the jboss-cvs-commits
mailing list