public static class JShell.Builder extends Object
JShell
instances.
Create custom instances of JShell
by using the setter
methods on this class. After zero or more of these, use the
build()
method to create a JShell
instance.
These can all be chained. For example, setting the remote output and
error streams:
JShell myShell =
JShell.builder()
.out(myOutStream)
.err(myErrStream)
.build();
If no special set-up is needed, just use
JShell.builder().build()
or the short-cut equivalent
JShell.create()
.Modifier and Type | Method and Description |
---|---|
JShell |
build()
Builds a JShell state engine.
|
JShell.Builder |
compilerOptions(String... options)
Adds compiler options.
|
JShell.Builder |
err(PrintStream err)
Sets the error output for the running evaluation (it's
System.err ). |
JShell.Builder |
executionEngine(ExecutionControl.Generator executionControlGenerator)
Sets the custom engine for execution.
|
JShell.Builder |
idGenerator(BiFunction<Snippet,Integer,String> generator)
Sets the generator of identifying names for Snippets.
|
JShell.Builder |
in(InputStream in)
Sets the input for the running evaluation (it's
System.in ). |
JShell.Builder |
out(PrintStream out)
Sets the output for the running evaluation (it's
System.out ). |
JShell.Builder |
remoteVMOptions(String... options)
Sets additional VM options for launching the VM.
|
JShell.Builder |
tempVariableNameGenerator(Supplier<String> generator)
Sets a generator of temp variable names for
VarSnippet of
Snippet.SubKind.TEMP_VAR_EXPRESSION_SUBKIND . |
public JShell.Builder in(InputStream in)
System.in
). Note:
applications that use System.in
for snippet or other
user input cannot use System.in
as the input stream for
the remote process.
The default, if this is not set, is to provide an empty input stream
-- new ByteArrayInputStream(new byte[0])
.
in
- the InputStream
to be channelled to
System.in
in the remote execution processBuilder
instance (for use in chained
initialization)public JShell.Builder out(PrintStream out)
System.out
).
The controlling process and
the remote process can share System.out
.
The default, if this is not set, is System.out
.
out
- the PrintStream
to be channelled to
System.out
in the remote execution processBuilder
instance (for use in chained
initialization)public JShell.Builder err(PrintStream err)
System.err
). The controlling process and the remote
process can share System.err
.
The default, if this is not set, is System.err
.
err
- the PrintStream
to be channelled to
System.err
in the remote execution processBuilder
instance (for use in chained
initialization)public JShell.Builder tempVariableNameGenerator(Supplier<String> generator)
VarSnippet
of
Snippet.SubKind.TEMP_VAR_EXPRESSION_SUBKIND
.
Do not use this method unless you have explicit need for it.
The generator will be used for newly created VarSnippet
instances. The name of a variable is queried with
PersistentSnippet.name()
.
The callback is sent during the processing of the snippet, the
JShell state is not stable. No calls whatsoever on the
JShell
instance may be made from the callback.
The generated name must be unique within active snippets.
The default behavior (if this is not set or generator
is null) is to generate the name as a sequential number with a
prefixing dollar sign ("$").
generator
- the Supplier
to generate the temporary
variable name string or null
Builder
instance (for use in chained
initialization)public JShell.Builder idGenerator(BiFunction<Snippet,Integer,String> generator)
Do not use this method unless you have explicit need for it.
The generator will be used for newly created Snippet instances. The
identifying name (id) is accessed with
Snippet.id()
and can be seen in the
StackTraceElement.getFileName()
for a
EvalException
and
UnresolvedReferenceException
.
The inputs to the generator are the Snippet
and an
integer. The integer will be the same for two Snippets which would
overwrite one-another, but otherwise is unique.
The callback is sent during the processing of the snippet and the
Snippet and the state as a whole are not stable. No calls to change
system state (including Snippet state) should be made. Queries of
Snippet may be made except to Snippet.id()
. No
calls on the JShell
instance may be made from the
callback, except to
status(Snippet)
.
The default behavior (if this is not set or generator
is null) is to generate the id as the integer converted to a string.
generator
- the BiFunction
to generate the id
string or null
Builder
instance (for use in chained
initialization)public JShell.Builder remoteVMOptions(String... options)
options
- The options for the remote VMBuilder
instance (for use in chained
initialization)public JShell.Builder compilerOptions(String... options)
options
- the addition options for compiler invocationsBuilder
instance (for use in chained
initialization)public JShell.Builder executionEngine(ExecutionControl.Generator executionControlGenerator)
ExecutionControl
instance.executionControlGenerator
- the execution engine generatorBuilder
instance (for use in chained
initialization)public JShell build()
Copyright © 2015, 2016, Oracle and/or its affiliates. All rights reserved.
DRAFT 9-internal+0-2016-07-19-140351.robert.dev