Author: peter_firmstone Date: Sat Jan 14 10:40:15 2012 New Revision: 1231477
URL: http://svn.apache.org/viewvc?rev=1231477&view=rev Log: Ensure DelegateCombinerSecurityManager only calls refresh on the Policy if absolutely necessary. Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/DelegateCombinerSecurityManager.java Modified: river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/DelegateCombinerSecurityManager.java URL: http://svn.apache.org/viewvc/river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/DelegateCombinerSecurityManager.java?rev=1231477&r1=1231476&r2=1231477&view=diff ============================================================================== --- river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/DelegateCombinerSecurityManager.java (original) +++ river/jtsk/skunk/peterConcurrentPolicy/src/org/apache/river/api/security/DelegateCombinerSecurityManager.java Sat Jan 14 10:40:15 2012 @@ -23,6 +23,7 @@ import java.security.AccessController; import java.security.DomainCombiner; import java.security.Guard; import java.security.Permission; +import java.security.Policy; import java.security.PrivilegedAction; import java.security.ProtectionDomain; import java.security.SecurityPermission; @@ -121,8 +122,10 @@ extends SecurityManager implements Deleg new ThreadPoolExecutor.CallerRunsPolicy()); permCompare = RC.comparator(new PermissionComparator()); logger = Logger.getLogger(DelegateCombinerSecurityManager.class.getName()); - // Get the policy & refresh, in case it hasn't been initialized. - java.security.Policy.getPolicy().refresh(); // Investigate some other way of ensuring the policy is instantiated. + // Get the policy & refresh, if it hasn't been initialized. + Policy policy = java.security.Policy.getPolicy(); + // This is to avoid unnecessarily refreshing the policy. + if (!policy.implies(context[0], (Permission) createAccPerm)) policy.refresh(); // Bug ID: 7093090 Reduce synchronization in java.security.Policy.getPolicyNoCheck }
