[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