RFR: JDK-8080679: Include jline in JDK for Java and JavaScript REPLs

Remi Forax forax at univ-mlv.fr
Tue Jun 30 14:19:38 UTC 2015


Hi Jay,
instead of

Callable<? extends Terminal> sup = FLAVORS.get(flavor);
if (sup != null) {
return sup.call();
   }
   throw new InternalError();

you can write it as a one liner with getOrDefault:

FLAVORS.getOrDefault(flavor, () -> { throw new InternalEror(); }).call();

cheers,
Rémi

On 06/30/2015 03:54 PM, Jan Lahoda wrote:
> On 30.6.2015 14:10, Alan Bateman wrote:
>> On 29/06/2015 12:25, Jan Lahoda wrote:
>>>
>>> The library is Windows-only, but the WindowsTerminal (or its
>>> subclasses) are registered on all platforms using
>>> "WindowsTerminal.class". While this does not cause initialization, it
>>> seemed safer to ensure the library is only loaded when needed.
>>>
>> This seems odd, I wonder why TerminalFactory does not check os.name
>> before registering the platform specific implementation.
>>
>> Is this were fixed to register WindowsTerminal or UnixTerminal rather
>> than both then would it fix this?
>
> I've changed the registration to use a Callable to produce the 
> Terminal instances instead of registering the Terminal classes:
> http://cr.openjdk.java.net/~jlahoda/8080679/webrev.05/full/
> delta:
> http://cr.openjdk.java.net/~jlahoda/8080679/webrev.05/delta/
>
> (I used Callable rather than Supplier, as Callable allows to throw an 
> exception from the call method.)
>
> How does this look?
>
> Thanks,
>    Jan
>
>>
>> -Alan.




More information about the core-libs-dev mailing list