Author: pauls Date: Thu Sep 22 12:37:03 2016 New Revision: 1761936 URL: http://svn.apache.org/viewvc?rev=1761936&view=rev Log: Get USE_CACHEDURLS_PROPS in doPriv block to make it work with security.
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleProtectionDomain.java Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleProtectionDomain.java URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleProtectionDomain.java?rev=1761936&r1=1761935&r2=1761936&view=diff ============================================================================== --- felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleProtectionDomain.java (original) +++ felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleProtectionDomain.java Thu Sep 22 12:37:03 2016 @@ -31,10 +31,12 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.net.URLStreamHandler; +import java.security.AccessController; import java.security.CodeSource; import java.security.Permission; import java.security.PermissionCollection; import java.security.Permissions; +import java.security.PrivilegedAction; import java.security.ProtectionDomain; import java.security.cert.Certificate; import java.util.ArrayList; @@ -332,12 +334,39 @@ public class BundleProtectionDomain exte }; } + private static boolean getUseCachedURL(final BundleRevisionImpl revision) + { + String property; + + if (System.getSecurityManager() != null) + { + property = (String) AccessController.doPrivileged(new PrivilegedAction<String>(){ + @Override + public String run() + { + return getUseCachedURLProperty(revision); + } + }); + } + else + { + property = getUseCachedURLProperty(revision); + } + + return Boolean.parseBoolean(property); + } + + private static String getUseCachedURLProperty(BundleRevisionImpl revision) + { + return revision.getBundle().getFramework().getProperty(FelixConstants.USE_CACHEDURLS_PROPS); + } + private static URL create(BundleRevisionImpl revision) throws MalformedURLException { RevisionAsJarURL handler = new RevisionAsJarURL(revision); - boolean useCachedUrlForCodeSource = Boolean.parseBoolean( - revision.getBundle().getFramework().getProperty(FelixConstants.USE_CACHEDURLS_PROPS)); + boolean useCachedUrlForCodeSource = getUseCachedURL(revision); + if (useCachedUrlForCodeSource) { String location = "jar:" + revision.getEntry("/") + "!/";