EXTCDI-298 only doPrivileged if SecurityManager is available
git-svn-id: https://svn.apache.org/repos/asf/myfaces/extensions/cdi/trunk@1360162 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/util/ClassUtils.java b/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/util/ClassUtils.java
index 8b9a764..735bb6b 100644
--- a/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/util/ClassUtils.java
+++ b/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/util/ClassUtils.java
@@ -45,7 +45,7 @@
* <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 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
{
- try
- {
- return Thread.currentThread().getContextClassLoader();
- }
- catch (Exception e)
- {
- return null;
- }
+ return getClassLoaderInternal(object);
+ }
+ catch (Exception e)
+ {
+ return null;
}
}
- );
+ }
+
+ private static ClassLoader getClassLoaderInternal(Object o)
+ {
+ ClassLoader loader = Thread.currentThread().getContextClassLoader();
if (loader == null && o != null)
{