Review 8035808: Eliminate dependency to GetPropertyAction and other sun.security.action convenient classes

Peter Levart peter.levart at gmail.com
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:
>> http://cr.openjdk.java.net/~mchung/jdk9/webrevs/8035808/webrev.00/
>>
>> This patch converts the use of sun.security.action.GetPropertyAction 
>> tolambda
>>        (PrivilegedAction<String>) () -> System.getProperty(key)
>>
>> Similarly for GetIntegerAction and GetLongAction.
>>
>> The sun.security.action.* 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> {
         @Override
         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