Index: dna-common/src/main/java/org/jboss/dna/common/i18n/ClasspathLocalizationRepository.java =================================================================== --- dna-common/src/main/java/org/jboss/dna/common/i18n/ClasspathLocalizationRepository.java (revision 1178) +++ dna-common/src/main/java/org/jboss/dna/common/i18n/ClasspathLocalizationRepository.java (working copy) @@ -24,6 +24,8 @@ package org.jboss.dna.common.i18n; import java.net.URL; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.Locale; /** @@ -36,6 +38,7 @@ * returned immediately. *

* named with a name that matches + * * @author Randall Hauch */ public class ClasspathLocalizationRepository implements LocalizationRepository { @@ -54,10 +57,17 @@ * Create a repository using the supplied class loader. Null may be passed if the class loader should be obtained from the * current thread's {@link Thread#getContextClassLoader() context class loader} or, if that is null, the same class loader * that loaded this class. + * * @param classLoader the class loader to use; may be null */ public ClasspathLocalizationRepository( ClassLoader classLoader ) { - if (classLoader == null) classLoader = Thread.currentThread().getContextClassLoader(); + if (classLoader == null) { + classLoader = AccessController.doPrivileged(new PrivilegedAction() { + public ClassLoader run() { + return Thread.currentThread().getContextClassLoader(); + } + }); + } if (classLoader == null) classLoader = this.getClass().getClassLoader(); this.classLoader = classLoader; } @@ -65,7 +75,8 @@ /** * {@inheritDoc} */ - public URL getLocalizationBundle( String bundleName, Locale locale ) { + public URL getLocalizationBundle( String bundleName, + Locale locale ) { URL url = null; String pathPfx = bundleName.replaceAll("\\.", "/"); String variant = '_' + locale.toString(); Index: dna-common/src/main/java/org/jboss/dna/common/component/StandardClassLoaderFactory.java =================================================================== --- dna-common/src/main/java/org/jboss/dna/common/component/StandardClassLoaderFactory.java (revision 1178) +++ dna-common/src/main/java/org/jboss/dna/common/component/StandardClassLoaderFactory.java (working copy) @@ -23,6 +23,8 @@ */ package org.jboss.dna.common.component; +import java.security.AccessController; +import java.security.PrivilegedAction; import net.jcip.annotations.Immutable; /** @@ -42,7 +44,8 @@ this(true, delegate); } - public StandardClassLoaderFactory( boolean useCurrentThreadContextClassLoader, final ClassLoader delegate ) { + public StandardClassLoaderFactory( boolean useCurrentThreadContextClassLoader, + final ClassLoader delegate ) { this.delegate = delegate != null ? delegate : this.getClass().getClassLoader(); this.useCurrentThreadContextClassLoader = useCurrentThreadContextClassLoader; } @@ -52,7 +55,13 @@ */ public ClassLoader getClassLoader( String... classpath ) { ClassLoader result = null; - if (this.useCurrentThreadContextClassLoader) result = Thread.currentThread().getContextClassLoader(); + if (this.useCurrentThreadContextClassLoader) { + result = AccessController.doPrivileged(new PrivilegedAction() { + public ClassLoader run() { + return Thread.currentThread().getContextClassLoader(); + } + }); + } if (result == null) result = this.delegate; return result; } Index: dna-common/src/main/java/org/jboss/dna/common/util/MimeTypeUtil.java =================================================================== --- dna-common/src/main/java/org/jboss/dna/common/util/MimeTypeUtil.java (revision 1178) +++ dna-common/src/main/java/org/jboss/dna/common/util/MimeTypeUtil.java (working copy) @@ -26,6 +26,8 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -134,8 +136,12 @@ */ protected static Map getDefaultMappings() { Map> duplicates = new HashMap>(); - return load(Thread.currentThread().getContextClassLoader().getResourceAsStream(MIME_TYPE_EXTENSIONS_RESOURCE_PATH), - duplicates); + ClassLoader classLoader = AccessController.doPrivileged(new PrivilegedAction() { + public ClassLoader run() { + return Thread.currentThread().getContextClassLoader(); + } + }); + return load(classLoader.getResourceAsStream(MIME_TYPE_EXTENSIONS_RESOURCE_PATH), duplicates); } /** Index: extensions/dna-classloader-maven/src/main/java/org/jboss/dna/maven/MavenClassLoaders.java =================================================================== --- extensions/dna-classloader-maven/src/main/java/org/jboss/dna/maven/MavenClassLoaders.java (revision 1178) +++ extensions/dna-classloader-maven/src/main/java/org/jboss/dna/maven/MavenClassLoaders.java (working copy) @@ -26,6 +26,8 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -102,7 +104,13 @@ public ProjectClassLoader getClassLoader( ClassLoader parent, MavenId... mavenIds ) { - if (parent == null) parent = Thread.currentThread().getContextClassLoader(); + if (parent == null) { + parent = AccessController.doPrivileged(new PrivilegedAction() { + public ClassLoader run() { + return Thread.currentThread().getContextClassLoader(); + } + }); + } if (parent == null) parent = this.getClass().getClassLoader(); ProjectClassLoader result = new ProjectClassLoader(parent); // Create a dependencies list for the desired projects ...