RFR 8168615: JShell API: jdk.jshell.spi should be a pluggable ServiceLoader SPI
Robert Field
robert.field at oracle.com
Wed Dec 7 05:08:58 UTC 2016
Thanks for the review, Jan.
See responses inline.
On 12/06/16 10:14, Jan Lahoda wrote:
> A few comments:
> -the -X help will (in my understanding) produce this:
> +\ --execution <spec> Specify an alternate
> execution engine.\n\
> +\ Where <spec> is an
> ExecutionControldProvider spec.\n\
> +\ See jdk.jshell.spi\n\
>
> As this is a user-level help (although a very experienced user,
> presumably), it would be better I think to provide some details - e.g.
> the grammar for the spec; known provider; and ideally, parameters of
> the known providers
OK, so better doc references are in order. I think including the
grammar and explanatory information is probably too bulky for
command-line help. But I've clarified this help as follows (the
formatting is right if fix-width, but formatted text cannot be sent to
this list):
% jshell -X
--add-exports <module>/<package> Export specified
module-private package to snippets
--execution <spec> Specify an alternate
execution engine.
Where <spec> is an
ExecutionControl spec.
See the documentation
of the package
jdk.jshell.spi for
the syntax of the spec
These options are non-standard and subject to change without
notice.
Where the jdk.jshell.spi javadocs are now:
http://cr.openjdk.java.net/~rfield/8168615v1.jshellAPI/jdk/jshell/spi/package-summary.html
It is OK that they would need to reference the SPI docs because if they
implemented an execution engine they would have implemented these
interfaces, If they are just tweaking parameters (and this isn't
something we want a typical user to do) they would need to be familiar
with the parameters, which are described in these docs.
>
> -I would reorganize the rules in the spec grammar to go from the top
> down:
> + * spec := name : params
> + * | name
> + * name := id
> + * params := param , params
> + * | param
> + * |
> + * param := id ( value )
>
> (might be also good to say what is "id")
Both good ideas implemented in the above.
>
> -ExecutionControlProvider.logMessages seems weird. Is it used outside
> of tests?
Not currently, but we really need logging of failures and failover to
track-down rare intermittent issues. Adding logging is out of scope for
9, but this gives a needed hook.
>
> -after this patch, both the ExecutionControls and their Providers are
> public - is that desirable? Is there a usecase for the client to
> call/instantiate the Providers directly without going through the
> ServiceLoader?
The ExecutionControls were public before. jdk.jshell.execution contains
the default execution engines, but it is exposed because it is a library
of classes for implementing ExecutionControl (and now
ExecutionControlProvider).
The SPI and the jdk.jshell.execution library were created because of a
request from an IDE developer.
OK, here is the new version. No executable code was changed, but I've
spruced-up the documentation, including what is mentioned above.
The docs:
http://cr.openjdk.java.net/~rfield/8168615v1.jshellAPI/
Specdiff:
http://cr.openjdk.java.net/~rfield/8168615v1.specdiff/overview-summary.html
New webrev:
http://cr.openjdk.java.net/~rfield/8168615v1.webrev/
-Robert
>
> Jan
>
> On 2.12.2016 08:48, Robert Field wrote:
>> Please review...
>>
>> Bug:
>>
>> https://bugs.openjdk.java.net/browse/JDK-8168615
>>
>>
>> Webrev:
>>
>> http://cr.openjdk.java.net/~rfield/8168615v0.webrev/
>>
>> Thanks,
>> Robert
>>
More information about the kulla-dev
mailing list