This is an automated email from the ASF dual-hosted git repository.

chengpan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kyuubi-shaded.git


The following commit(s) were added to refs/heads/master by this push:
     new 5f109a6  [KYUUBI-SHADED #34] [KYUUBI-SHADED #33] Step 2/2: Port 
ZOOKEEPER-1718 to support JLine2 in ZK client 3.4
5f109a6 is described below

commit 5f109a60a23ccaecf5810e8c6dbe69c24a9d8d46
Author: Cheng Pan <[email protected]>
AuthorDate: Tue Feb 20 16:04:56 2024 +0800

    [KYUUBI-SHADED #34] [KYUUBI-SHADED #33] Step 2/2: Port ZOOKEEPER-1718 to 
support JLine2 in ZK client 3.4
    
    ### _Why are the changes needed?_
    
    This PR aims to port ZOOKEEPER-1718 to make the Zookeeper 3.4 to support 
JLine2.
    
    To gain a clear change history, I propose to split the change into 2 PRs,
    
    1. copy 
[org.apache.zookeeper.ZooKeeperMain](https://raw.githubusercontent.com/apache/zookeeper/release-3.4.14/zookeeper-server/src/main/java/org/apache/zookeeper/ZooKeeperMain.java)
 and 
[org.apache.zookeeper.JLineZNodeCompletor](https://raw.githubusercontent.com/apache/zookeeper/release-3.4.14/zookeeper-server/src/main/java/org/apache/zookeeper/JLineZNodeCompletor.java)
 from Apache Zookeeper v3.4.14 as-is
    2. apply changes in ZOOKEEPER-1718
    
    ### _How was this patch tested?_
    - [ ] Add some test cases that check the changes thoroughly including 
negative and positive cases if possible
    
    - [x] Add screenshots for manual tests if appropriate
    
    1. perform `build/mvn clean package` to generate 
`kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/target/kyuubi-relocated-zookeeper-34-0.3.0-SNAPSHOT.jar`
    2. download and install 
[apache-kyuubi-1.8.0-bin.tgz](https://dlcdn.apache.org/kyuubi/kyuubi-1.8.0/apache-kyuubi-1.8.0-bin.tgz)
    3. replace `KYUUBI_HOME/jars/kyuubi-shaded-zookeeper-34-0.1.0.jar` with 
`kyuubi-relocated-zookeeper-34-0.3.0-SNAPSHOT.jar`
    4. replace `KYUUBI_HOME/jars/jline-0.9.94.jar` with `jline-2.14.6.jar`
    5. perform `bin/kyuubi-zk-cli -server xxxxx:2181` to connect a Zookeeper 
cluster
    6. check the logs to make sure JLine is enabled and run some command to 
check basic functionalities
    ```
    ...
    2024-01-15 19:52:04.593 INFO org.apache.kyuubi.shaded.zookeeper.ZooKeeper: 
Client 
environment:java.class.path=...:jline-2.14.6.jar:...:kyuubi-relocated-zookeeper-34-0.3.0-SNAPSHOT.jar...
    ...
    JLine support is enabled
    ...
    ```
    
    - [ ] [Run 
test](https://kyuubi.readthedocs.io/en/master/develop_tools/testing.html#running-tests)
 locally before make a pull request
    
    Closes #34 from pan3793/jline2-2.
    
    e769ee8 [Cheng Pan] [KYUUBI-SHADED #33] Step 2/2: Port ZOOKEEPER-1718 to 
support JLine2 in ZK client 3.4
    
    Authored-by: Cheng Pan <[email protected]>
    Signed-off-by: Cheng Pan <[email protected]>
---
 .../kyuubi-relocated-zookeeper-34/pom.xml                          | 2 +-
 .../{JLineZNodeCompletor.java => JLineZNodeCompleter.java}         | 6 +++---
 .../src/main/java/org/apache/zookeeper/ZooKeeperMain.java          | 7 ++++---
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git 
a/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/pom.xml 
b/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/pom.xml
index cec4d7a..03d3cc7 100644
--- a/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/pom.xml
+++ b/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/pom.xml
@@ -36,7 +36,7 @@ under the License.
         <curator.version>2.12.0</curator.version>
         <slf4j.version>1.7.25</slf4j.version>
         <yetus.version>0.5.0</yetus.version>
-        <jline.version>0.9.94</jline.version>
+        <jline.version>2.14.6</jline.version>
     </properties>
 
     <dependencyManagement>
diff --git 
a/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/JLineZNodeCompletor.java
 
b/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/JLineZNodeCompleter.java
similarity index 94%
rename from 
kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/JLineZNodeCompletor.java
rename to 
kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/JLineZNodeCompleter.java
index e69a21f..79d7f1b 100644
--- 
a/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/JLineZNodeCompletor.java
+++ 
b/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/JLineZNodeCompleter.java
@@ -19,12 +19,12 @@
 package org.apache.zookeeper;
 
 import java.util.List;
-import jline.Completor;
+import jline.console.completer.Completer;
 
-class JLineZNodeCompletor implements Completor {
+class JLineZNodeCompleter implements Completer {
   private ZooKeeper zk;
 
-  public JLineZNodeCompletor(ZooKeeper zk) {
+  public JLineZNodeCompleter(ZooKeeper zk) {
     this.zk = zk;
   }
 
diff --git 
a/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/ZooKeeperMain.java
 
b/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/ZooKeeperMain.java
index 97b8399..b7cacab 100644
--- 
a/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/ZooKeeperMain.java
+++ 
b/kyuubi-relocated-zookeeper-parent/kyuubi-relocated-zookeeper-34/src/main/java/org/apache/zookeeper/ZooKeeperMain.java
@@ -295,15 +295,16 @@ public class ZooKeeperMain {
       boolean jlinemissing = false;
       // only use jline if it's in the classpath
       try {
-        Class<?> consoleC = Class.forName("jline.ConsoleReader");
-        Class<?> completorC = 
Class.forName("org.apache.zookeeper.JLineZNodeCompletor");
+        Class<?> consoleC = Class.forName("jline.console.ConsoleReader");
+        Class<?> completorC = 
Class.forName("org.apache.zookeeper.JLineZNodeCompleter");
 
         System.out.println("JLine support is enabled");
 
         Object console = consoleC.getConstructor().newInstance();
 
         Object completor = 
completorC.getConstructor(ZooKeeper.class).newInstance(zk);
-        Method addCompletor = consoleC.getMethod("addCompletor", 
Class.forName("jline.Completor"));
+        Method addCompletor =
+            consoleC.getMethod("addCompleter", 
Class.forName("jline.console.completer.Completer"));
         addCompletor.invoke(console, completor);
 
         String line;

Reply via email to