8361613: System.console() should only be available for interactive terminal #26273
+328
−344
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In prior JDK releases,
System.console()
could return aConsole
instance even when the JVM was not attached to an interactive terminal. This could lead to confusion, particularly when input was not from a keyboard or output was redirected, such as to or from a file or pipe, especially when using methods likereadPassword()
. Starting with JDK 25, the default behavior has changed:System.console()
now returnsnull
if standard input and/or output is redirected. However, if a JLine-based Console implementation is explicitly specified via the system property-Djdk.console=jdk.internal.le
, the previous behavior may still occur.This PR aims to align the behavior of the JLine-based
Console
implementation with the defaultSystem.console()
behavior. The actual code change is a one-liner inJdkConsoleProviderImpl.java
; the rest of the changes are adjustments to test cases to reflect the updated behavior. A corresponding CSR has also been drafted.Progress
Issues
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/26273/head:pull/26273
$ git checkout pull/26273
Update a local copy of the PR:
$ git checkout pull/26273
$ git pull https://git.openjdk.org/jdk.git pull/26273/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 26273
View PR using the GUI difftool:
$ git pr show -t 26273
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/26273.diff
Using Webrev
Link to Webrev Comment