You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by st...@apache.org on 2012/07/11 14:56:54 UTC

svn commit: r1360162 - /myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/util/ClassUtils.java

Author: struberg
Date: Wed Jul 11 12:56:53 2012
New Revision: 1360162

URL: http://svn.apache.org/viewvc?rev=1360162&view=rev
Log:
EXTCDI-298 only doPrivileged if SecurityManager is available

Modified:
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/util/ClassUtils.java

Modified: myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/util/ClassUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/util/ClassUtils.java?rev=1360162&r1=1360161&r2=1360162&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/util/ClassUtils.java (original)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/util/ClassUtils.java Wed Jul 11 12:56:53 2012
@@ -45,7 +45,7 @@ public abstract class ClassUtils
      * <ol>
      * <li>ContextClassLoader of the current Thread</li>
      * <li>ClassLoader of the given Object 'o'</li>
-     * <li>ClassLoader of this very CodiUtils class</li>
+     * <li>ClassLoader of this very ClassUtils class</li>
      * </ol>
      *
      * @param o if not <code>null</code> it may get used to detect the classloader.
@@ -53,24 +53,41 @@ public abstract class ClassUtils
      */
     public static ClassLoader getClassLoader(Object o)
     {
-        ClassLoader loader = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
+        if (System.getSecurityManager() != null)
         {
-            /**
-             * {@inheritDoc}
-             */
-            public ClassLoader run()
+            return AccessController.doPrivileged(new GetClassLoaderAction(o));
+        }
+        else
+        {
+            return getClassLoaderInternal(o);
+        }
+    }
+
+    static class GetClassLoaderAction implements PrivilegedAction<ClassLoader>
+    {
+        private Object object;
+        GetClassLoaderAction(Object object)
+        {
+            this.object = object;
+        }
+
+        @Override
+        public ClassLoader run()
+        {
+            try
+            {
+                return getClassLoaderInternal(object);
+            }
+            catch (Exception e)
             {
-                try
-                {
-                    return Thread.currentThread().getContextClassLoader();
-                }
-                catch (Exception e)
-                {
-                    return null;
-                }
+                return null;
             }
         }
-        );
+    }
+
+    private static ClassLoader getClassLoaderInternal(Object o)
+    {
+        ClassLoader loader = Thread.currentThread().getContextClassLoader();
 
         if (loader == null && o != null)
         {