8299689: Make use of JLine for Console as "opt-in"

Reviewed-by: jpai, alanb
This commit is contained in:
Naoto Sato 2023-01-09 18:23:42 +00:00
parent 1f141bd7a9
commit d49851a8b8
4 changed files with 41 additions and 24 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2005, 2022, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -608,7 +608,13 @@ public class Console implements Flushable
@SuppressWarnings("removal")
private static Console instantiateConsole(boolean istty) {
try {
// Try loading providers
/*
* The JdkConsole provider used for Console instantiation can be specified
* with the system property "jdk.console", whose value designates the module
* name of the implementation, and which defaults to "java.base". If no
* providers are available, or instantiation failed, java.base built-in
* Console implementation is used.
*/
PrivilegedAction<Console> pa = () -> {
var consModName = System.getProperty("jdk.console",
JdkConsoleProvider.DEFAULT_PROVIDER_MODULE_NAME);

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -28,18 +28,12 @@ import java.nio.charset.Charset;
/**
* Service provider interface for JdkConsole implementations.
* The provider used for instantiating JdkConsole instance can be
* specified with the system property "jdk.console", whose value
* designates the module name of the implementation, and which defaults
* to "jdk.internal.le" (jline). If no providers is available,
* or instantiation failed, java.base built-in Console implementation
* is used.
*/
public interface JdkConsoleProvider {
/**
* The module name of the JdkConsole default provider.
*/
String DEFAULT_PROVIDER_MODULE_NAME = "jdk.internal.le";
String DEFAULT_PROVIDER_MODULE_NAME = "java.base";
/**
* {@return the Console instance, or {@code null} if not available}