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