Review 8035808: Eliminate dependency to GetPropertyAction and other convenient classes

Peter Levart peter.levart at
Fri Mar 7 11:39:44 UTC 2014

On 03/07/2014 12:31 PM, Alan Bateman wrote:
> On 06/03/2014 21:10, Mandy Chung wrote:
>> Webrev:
>> This patch converts the use of 
>> tolambda
>>        (PrivilegedAction<String>) () -> System.getProperty(key)
>> Similarly for GetIntegerAction and GetLongAction.
>> The* classes are just convenient classes that 
>> are used not only by the security library but also used by RMI, 
>> management, a couple other components that cause cross-module 
>> dependency that are not absolutely necessary.  They can simply be 
>> replaced to call System.getProperty, Integer.getInteger, or 
>> Long.getLong at the callsite.
> This looks good to me as it reduces the number of inner classes, 
> removes a lot of dependencies on sun.* APIs, and updates the code to 
> use new language features. The only downside appears to the cast but 
> you can't really get away from that here (at least not without 
> declaring a PrivilegedAction for each usage).
> -Alan.

Maybe, if PrivilegedAction interface could be retrofitted as follows:

     public interface PrivilegedExceptionAction<T> {
         T run() throws Exception;

     public interface PrivilegedAction<T> extends 
PrivilegedExceptionAction<T> {
         T run();

Then in majority of cases where lambda body did not throw a checked 
exception, the most-specific rule would choose the 
doPrivileged(PrivilegedAction) method automatically... For 
checked-exceptional-cases the cast would still be needed.

Regards, Peter

More information about the core-libs-dev mailing list