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

szetszwo pushed a commit to branch branch-3.1.1_review
in repository https://gitbox.apache.org/repos/asf/ratis.git

commit fc89b040535c1f457fe5d57e6fdcb6cab9a8e4ac
Author: Tsz-Wo Nicholas Sze <[email protected]>
AuthorDate: Thu Aug 22 09:44:24 2024 -0700

    RATIS-2113. Use consistent method names and parameter types in RaftUtils. 
(#1135)
---
 .../shell/cli/{RaftUtils.java => CliUtils.java}    | 129 ++++++++++-----------
 .../shell/cli/sh/command/AbstractCommand.java      |  13 ---
 .../shell/cli/sh/command/AbstractRatisCommand.java |  25 ++--
 .../ratis/shell/cli/sh/election/PauseCommand.java  |   4 +-
 .../ratis/shell/cli/sh/election/ResumeCommand.java |   4 +-
 .../shell/cli/sh/election/StepDownCommand.java     |   4 +-
 .../shell/cli/sh/election/TransferCommand.java     |   4 +-
 .../ratis/shell/cli/sh/group/GroupListCommand.java |   8 +-
 .../shell/cli/sh/local/RaftMetaConfCommand.java    |   6 +-
 .../apache/ratis/shell/cli/sh/peer/AddCommand.java |  13 ++-
 .../ratis/shell/cli/sh/peer/RemoveCommand.java     |   4 +-
 .../shell/cli/sh/peer/SetPriorityCommand.java      |   4 +-
 .../shell/cli/sh/snapshot/TakeSnapshotCommand.java |   4 +-
 13 files changed, 101 insertions(+), 121 deletions(-)

diff --git 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/RaftUtils.java 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/CliUtils.java
similarity index 62%
rename from ratis-shell/src/main/java/org/apache/ratis/shell/cli/RaftUtils.java
rename to ratis-shell/src/main/java/org/apache/ratis/shell/cli/CliUtils.java
index 9c5d90e4b..98e21be2a 100644
--- a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/RaftUtils.java
+++ b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/CliUtils.java
@@ -37,7 +37,6 @@ import java.net.InetSocketAddress;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.concurrent.TimeUnit;
-import java.util.function.Consumer;
 import java.util.List;
 import java.util.Optional;
 import java.util.Properties;
@@ -46,43 +45,31 @@ import java.util.stream.Collectors;
 import java.util.UUID;
 
 /**
- * Helper class for raft operations.
+ * Utilities for command line interface.
  */
-public final class RaftUtils {
-
-  public static final RaftGroupId DEFAULT_RAFT_GROUP_ID = 
RaftGroupId.randomId();
-
-  private RaftUtils() {
+public final class CliUtils {
+  private static final ExponentialBackoffRetry RETRY_POLICY = 
ExponentialBackoffRetry.newBuilder()
+      .setBaseSleepTime(TimeDuration.valueOf(1000, TimeUnit.MILLISECONDS))
+      .setMaxAttempts(10)
+      .setMaxSleepTime(TimeDuration.valueOf(100_000, TimeUnit.MILLISECONDS))
+      .build();
+
+  private CliUtils() {
     // prevent instantiation
   }
 
-  /**
-   * Gets the raft peer id.
-   *
-   * @param address the address of the server
-   * @return the raft peer id
-   */
+  /** @return {@link RaftPeerId} from the given address. */
   public static RaftPeerId getPeerId(InetSocketAddress address) {
     return getPeerId(address.getHostString(), address.getPort());
   }
 
-  /**
-   * Gets the raft peer id.
-   *
-   * @param host the hostname of the server
-   * @param port the port of the server
-   * @return the raft peer id
-   */
+  /** @return {@link RaftPeerId} from the given host and port. */
   public static RaftPeerId getPeerId(String host, int port) {
     return RaftPeerId.getRaftPeerId(host + "_" + port);
   }
 
-  /**
-   * Create a raft client to communicate to ratis server.
-   * @param raftGroup the raft group
-   * @return return a raft client
-   */
-  public static RaftClient createClient(RaftGroup raftGroup) {
+  /** Create a new {@link RaftClient} from the given group. */
+  public static RaftClient newRaftClient(RaftGroup group) {
     RaftProperties properties = new RaftProperties();
     RaftClientConfigKeys.Rpc.setRequestTimeout(properties,
         TimeDuration.valueOf(15, TimeUnit.SECONDS));
@@ -92,16 +79,10 @@ public final class RaftUtils {
     final Properties sys = System.getProperties();
     sys.stringPropertyNames().forEach(key -> properties.set(key, 
sys.getProperty(key)));
 
-    ExponentialBackoffRetry retryPolicy = ExponentialBackoffRetry.newBuilder()
-        .setBaseSleepTime(TimeDuration.valueOf(1000, TimeUnit.MILLISECONDS))
-        .setMaxAttempts(10)
-        .setMaxSleepTime(
-            TimeDuration.valueOf(100_000, TimeUnit.MILLISECONDS))
-        .build();
     return RaftClient.newBuilder()
-        .setRaftGroup(raftGroup)
+        .setRaftGroup(group)
         .setProperties(properties)
-        .setRetryPolicy(retryPolicy)
+        .setRetryPolicy(RETRY_POLICY)
         .build();
   }
 
@@ -116,7 +97,7 @@ public final class RaftUtils {
    * @return the first non-null value returned by the given function applied 
to the given list.
    */
   private static <PARAMETER, RETURN, EXCEPTION extends Throwable> RETURN 
applyFunctionReturnFirstNonNull(
-      Collection<PARAMETER> list, CheckedFunction<PARAMETER, RETURN, 
EXCEPTION> function) {
+      Collection<PARAMETER> list, CheckedFunction<PARAMETER, RETURN, 
EXCEPTION> function, PrintStream out) {
     for (PARAMETER parameter : list) {
       try {
         RETURN ret = function.apply(parameter);
@@ -124,13 +105,14 @@ public final class RaftUtils {
           return ret;
         }
       } catch (Throwable e) {
-        e.printStackTrace();
+        e.printStackTrace(out);
       }
     }
     return null;
   }
 
-  public static List<RaftPeer> buildRaftPeersFromStr(String peers) {
+  /** Parse the given string as a list of {@link RaftPeer}. */
+  public static List<RaftPeer> parseRaftPeers(String peers) {
     List<InetSocketAddress> addresses = new ArrayList<>();
     String[] peersArray = peers.split(",");
     for (String peer : peersArray) {
@@ -138,64 +120,79 @@ public final class RaftUtils {
     }
 
     return addresses.stream()
-        .map(addr -> RaftPeer.newBuilder()
-            .setId(RaftUtils.getPeerId(addr))
-            .setAddress(addr)
-            .build()
-        ).collect(Collectors.toList());
+        .map(addr -> 
RaftPeer.newBuilder().setId(getPeerId(addr)).setAddress(addr).build())
+        .collect(Collectors.toList());
   }
 
-  public static RaftGroupId buildRaftGroupIdFromStr(String groupId) {
-    return groupId != null && groupId.isEmpty() ? 
RaftGroupId.valueOf(UUID.fromString(groupId))
-        : DEFAULT_RAFT_GROUP_ID;
+  /** Parse the given string as a {@link RaftGroupId}. */
+  public static RaftGroupId parseRaftGroupId(String groupId) {
+    return groupId != null && groupId.isEmpty() ? 
RaftGroupId.valueOf(UUID.fromString(groupId)) : null;
   }
 
-  public static RaftGroupId retrieveRemoteGroupId(RaftGroupId 
raftGroupIdFromConfig,
-                                                  List<RaftPeer> peers,
-                                                  RaftClient client, 
PrintStream printStream) throws IOException {
-    if (!DEFAULT_RAFT_GROUP_ID .equals(raftGroupIdFromConfig)) {
-      return raftGroupIdFromConfig;
+  /**
+   * Get the group id from the given peers if the given group id is null.
+   *
+   * @param client for communicating to the peers.
+   * @param peers the peers of the group.
+   * @param groupId the given group id, if there is any.
+   * @param err for printing error messages.
+   * @return the group id from the given peers if the given group id is null;
+   *         otherwise, return the given group id.
+   */
+  public static RaftGroupId getGroupId(RaftClient client, List<RaftPeer> 
peers, RaftGroupId groupId,
+      PrintStream err) throws IOException {
+    if (groupId != null) {
+      return groupId;
     }
 
-    final RaftGroupId remoteGroupId;
     final List<RaftGroupId> groupIds = applyFunctionReturnFirstNonNull(peers,
-        p -> client.getGroupManagementApi((p.getId())).list().getGroupIds());
+        p -> client.getGroupManagementApi(p.getId()).list().getGroupIds(), 
err);
 
     if (groupIds == null) {
-      printStream.println("Failed to get group ID from " + peers);
-      throw new IOException("Failed to get group ID from " + peers);
+      final String message = "Failed to get group ID from " + peers;
+      err.println("Failed to get group ID from " + peers);
+      throw new IOException(message);
     } else if (groupIds.size() == 1) {
-      remoteGroupId = groupIds.get(0);
+      return groupIds.get(0);
     } else {
       String message = "Unexpected multiple group IDs " + groupIds
           + ".  In such case, the target group ID must be specified.";
-      printStream.println(message);
+      err.println(message);
       throw new IOException(message);
     }
-    return remoteGroupId;
   }
 
-  public static GroupInfoReply retrieveGroupInfoByGroupId(RaftGroupId 
remoteGroupId, List<RaftPeer> peers,
-                                                          RaftClient client, 
PrintStream printStream)
-      throws IOException {
+  /**
+   * Get the group info from the given peers.
+   *
+   * @param client for communicating to the peers.
+   * @param peers the peers of the group.
+   * @param groupId the target group
+   * @param err for printing error messages.
+   * @return the group info
+   */
+  public static GroupInfoReply getGroupInfo(RaftClient client, List<RaftPeer> 
peers, RaftGroupId groupId,
+      PrintStream err) throws IOException {
     GroupInfoReply groupInfoReply = applyFunctionReturnFirstNonNull(peers,
-        p -> client.getGroupManagementApi((p.getId())).info(remoteGroupId));
-    processReply(groupInfoReply, printStream::println,
-        () -> "Failed to get group info for group id " + 
remoteGroupId.getUuid() + " from " + peers);
+        p -> client.getGroupManagementApi((p.getId())).info(groupId), err);
+    checkReply(groupInfoReply, () -> "Failed to get group info for " + 
groupId.getUuid()
+            + " from " + peers, err);
     return groupInfoReply;
   }
 
-  public static void processReply(RaftClientReply reply, Consumer<String> 
printer, Supplier<String> message)
+  /** Check if the given reply is success. */
+  public static void checkReply(RaftClientReply reply, Supplier<String> 
message, PrintStream printStream)
       throws IOException {
     if (reply == null || !reply.isSuccess()) {
       final RaftException e = Optional.ofNullable(reply)
           .map(RaftClientReply::getException)
           .orElseGet(() -> new RaftException("Reply: " + reply));
-      printer.accept(message.get());
-      throw new IOException(e.getMessage(), e);
+      printStream.println(message.get());
+      throw new IOException(message.get(), e);
     }
   }
 
+  /** Parse the given string as a {@link InetSocketAddress}. */
   public static InetSocketAddress parseInetSocketAddress(String address) {
     try {
       final String[] hostPortPair = address.split(":");
diff --git 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/command/AbstractCommand.java
 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/command/AbstractCommand.java
index 20a52a80f..f02761de4 100644
--- 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/command/AbstractCommand.java
+++ 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/command/AbstractCommand.java
@@ -20,7 +20,6 @@ package org.apache.ratis.shell.cli.sh.command;
 import org.apache.ratis.shell.cli.Command;
 
 import java.io.PrintStream;
-import java.net.InetSocketAddress;
 
 /**
  * The base class for all the ratis shell {@link Command} classes.
@@ -33,18 +32,6 @@ public abstract class AbstractCommand implements Command {
     printStream = context.getPrintStream();
   }
 
-  public static InetSocketAddress parseInetSocketAddress(String address) {
-    try {
-      final String[] hostPortPair = address.split(":");
-      if (hostPortPair.length < 2) {
-        throw new IllegalArgumentException("Unexpected address format 
<HOST:PORT>.");
-      }
-      return new InetSocketAddress(hostPortPair[0], 
Integer.parseInt(hostPortPair[1]));
-    } catch (Exception e) {
-      throw new IllegalArgumentException("Failed to parse the server address 
parameter \"" + address + "\".", e);
-    }
-  }
-
   protected PrintStream getPrintStream() {
     return printStream;
   }
diff --git 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/command/AbstractRatisCommand.java
 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/command/AbstractRatisCommand.java
index 91bdc873b..a9d391f86 100644
--- 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/command/AbstractRatisCommand.java
+++ 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/command/AbstractRatisCommand.java
@@ -24,7 +24,7 @@ import org.apache.ratis.protocol.RaftGroupId;
 import org.apache.ratis.protocol.RaftPeer;
 import org.apache.ratis.protocol.RaftPeerId;
 import org.apache.ratis.protocol.GroupInfoReply;
-import org.apache.ratis.shell.cli.RaftUtils;
+import org.apache.ratis.shell.cli.CliUtils;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.Options;
 import org.apache.ratis.client.RaftClient;
@@ -47,11 +47,6 @@ import java.util.function.Supplier;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import static org.apache.ratis.shell.cli.RaftUtils.buildRaftGroupIdFromStr;
-import static org.apache.ratis.shell.cli.RaftUtils.buildRaftPeersFromStr;
-import static org.apache.ratis.shell.cli.RaftUtils.retrieveGroupInfoByGroupId;
-import static org.apache.ratis.shell.cli.RaftUtils.retrieveRemoteGroupId;
-
 /**
  * The base class for the ratis shell which need to connect to server.
  */
@@ -67,13 +62,13 @@ public abstract class AbstractRatisCommand extends 
AbstractCommand {
 
   @Override
   public int run(CommandLine cl) throws IOException {
-    List<RaftPeer> peers = 
buildRaftPeersFromStr(cl.getOptionValue(PEER_OPTION_NAME));
-    RaftGroupId raftGroupIdFromConfig = 
buildRaftGroupIdFromStr(cl.getOptionValue(GROUPID_OPTION_NAME));
-    raftGroup = RaftGroup.valueOf(raftGroupIdFromConfig, peers);
+    final List<RaftPeer> peers = 
CliUtils.parseRaftPeers(cl.getOptionValue(PEER_OPTION_NAME));
+    final RaftGroupId groupIdSpecified = 
CliUtils.parseRaftGroupId(cl.getOptionValue(GROUPID_OPTION_NAME));
+    raftGroup = RaftGroup.valueOf(groupIdSpecified != null? groupIdSpecified: 
RaftGroupId.randomId(), peers);
     PrintStream printStream = getPrintStream();
-    try (final RaftClient client = RaftUtils.createClient(raftGroup)) {
-      final RaftGroupId remoteGroupId = 
retrieveRemoteGroupId(raftGroupIdFromConfig, peers, client, printStream);
-      groupInfoReply = retrieveGroupInfoByGroupId(remoteGroupId, peers, 
client, printStream);
+    try (final RaftClient client = CliUtils.newRaftClient(raftGroup)) {
+      final RaftGroupId remoteGroupId = CliUtils.getGroupId(client, peers, 
groupIdSpecified, printStream);
+      groupInfoReply = CliUtils.getGroupInfo(client, peers, remoteGroupId, 
printStream);
       raftGroup = groupInfoReply.getGroup();
     }
     return 0;
@@ -121,7 +116,7 @@ public abstract class AbstractRatisCommand extends 
AbstractCommand {
   }
 
   protected void processReply(RaftClientReply reply, Supplier<String> 
messageSupplier) throws IOException {
-    RaftUtils.processReply(reply, getPrintStream()::println, messageSupplier);
+    CliUtils.checkReply(reply, messageSupplier, getPrintStream());
   }
 
   protected List<RaftPeerId> getIds(String[] optionValues, 
BiConsumer<RaftPeerId, InetSocketAddress> consumer) {
@@ -130,8 +125,8 @@ public abstract class AbstractRatisCommand extends 
AbstractCommand {
     }
     final List<RaftPeerId> ids = new ArrayList<>();
     for (String address : optionValues) {
-      final InetSocketAddress serverAddress = parseInetSocketAddress(address);
-      final RaftPeerId peerId = RaftUtils.getPeerId(serverAddress);
+      final InetSocketAddress serverAddress = 
CliUtils.parseInetSocketAddress(address);
+      final RaftPeerId peerId = CliUtils.getPeerId(serverAddress);
       consumer.accept(peerId, serverAddress);
       ids.add(peerId);
     }
diff --git 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/election/PauseCommand.java
 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/election/PauseCommand.java
index 4ea2969ba..242e1886a 100644
--- 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/election/PauseCommand.java
+++ 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/election/PauseCommand.java
@@ -24,7 +24,7 @@ import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftPeer;
 import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.shell.cli.RaftUtils;
+import org.apache.ratis.shell.cli.CliUtils;
 import org.apache.ratis.shell.cli.sh.command.AbstractRatisCommand;
 import org.apache.ratis.shell.cli.sh.command.Context;
 
@@ -61,7 +61,7 @@ public class PauseCommand extends AbstractRatisCommand {
       printf("Peer not found: %s", strAddr);
       return -1;
     }
-    try(final RaftClient raftClient = RaftUtils.createClient(getRaftGroup())) {
+    try(final RaftClient raftClient = CliUtils.newRaftClient(getRaftGroup())) {
       RaftClientReply reply = 
raftClient.getLeaderElectionManagementApi(peerId).pause();
       processReply(reply, () -> String.format("Failed to pause leader election 
on peer %s", strAddr));
       printf(String.format("Successful pause leader election on peer %s", 
strAddr));
diff --git 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/election/ResumeCommand.java
 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/election/ResumeCommand.java
index 4b4dc225a..dbcee7bd3 100644
--- 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/election/ResumeCommand.java
+++ 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/election/ResumeCommand.java
@@ -24,7 +24,7 @@ import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftPeer;
 import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.shell.cli.RaftUtils;
+import org.apache.ratis.shell.cli.CliUtils;
 import org.apache.ratis.shell.cli.sh.command.AbstractRatisCommand;
 import org.apache.ratis.shell.cli.sh.command.Context;
 
@@ -61,7 +61,7 @@ public class ResumeCommand extends AbstractRatisCommand {
       printf("Can't find a sever with the address:%s", strAddr);
       return -1;
     }
-    try(final RaftClient raftClient = RaftUtils.createClient(getRaftGroup())) {
+    try(final RaftClient raftClient = CliUtils.newRaftClient(getRaftGroup())) {
       RaftClientReply reply = 
raftClient.getLeaderElectionManagementApi(peerId).resume();
       processReply(reply, () -> String.format("Failed to resume leader 
election on peer %s", strAddr));
       printf(String.format("Successful pause leader election on peer %s", 
strAddr));
diff --git 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/election/StepDownCommand.java
 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/election/StepDownCommand.java
index 911a2bb26..da641a07b 100644
--- 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/election/StepDownCommand.java
+++ 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/election/StepDownCommand.java
@@ -21,7 +21,7 @@ import org.apache.commons.cli.CommandLine;
 import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.shell.cli.RaftUtils;
+import org.apache.ratis.shell.cli.CliUtils;
 import org.apache.ratis.shell.cli.sh.command.AbstractRatisCommand;
 import org.apache.ratis.shell.cli.sh.command.Context;
 
@@ -48,7 +48,7 @@ public class StepDownCommand extends AbstractRatisCommand {
   public int run(CommandLine cl) throws IOException {
     super.run(cl);
 
-    try (RaftClient client = RaftUtils.createClient(getRaftGroup())) {
+    try (RaftClient client = CliUtils.newRaftClient(getRaftGroup())) {
       RaftPeerId leaderId = 
RaftPeerId.valueOf(getLeader(getGroupInfoReply().getRoleInfoProto()).getId());
       final RaftClientReply transferLeadershipReply = 
client.admin().transferLeadership(null, leaderId, 60_000);
       processReply(transferLeadershipReply, () -> "Failed to step down 
leader");
diff --git 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/election/TransferCommand.java
 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/election/TransferCommand.java
index c71d7f89f..24eae7353 100644
--- 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/election/TransferCommand.java
+++ 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/election/TransferCommand.java
@@ -25,7 +25,7 @@ import org.apache.ratis.proto.RaftProtos.RaftPeerRole;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftPeer;
 import org.apache.ratis.protocol.exceptions.TransferLeadershipException;
-import org.apache.ratis.shell.cli.RaftUtils;
+import org.apache.ratis.shell.cli.CliUtils;
 import org.apache.ratis.shell.cli.sh.command.AbstractRatisCommand;
 import org.apache.ratis.shell.cli.sh.command.Context;
 import org.apache.ratis.util.TimeDuration;
@@ -74,7 +74,7 @@ public class TransferCommand extends AbstractRatisCommand {
       printf("Peer with address %s not found.", strAddr);
       return -2;
     }
-    try (RaftClient client = RaftUtils.createClient(getRaftGroup())) {
+    try (RaftClient client = CliUtils.newRaftClient(getRaftGroup())) {
       // transfer leadership
       if (!tryTransfer(client, newLeader, highestPriority, 
timeout.orElse(timeoutDefault))) {
         // legacy mode, transfer leadership by setting priority.
diff --git 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/group/GroupListCommand.java
 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/group/GroupListCommand.java
index 5bbd1939a..5ee89c53c 100644
--- 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/group/GroupListCommand.java
+++ 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/group/GroupListCommand.java
@@ -24,7 +24,7 @@ import org.apache.commons.cli.Options;
 import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.protocol.GroupListReply;
 import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.shell.cli.RaftUtils;
+import org.apache.ratis.shell.cli.CliUtils;
 import org.apache.ratis.shell.cli.sh.command.AbstractRatisCommand;
 import org.apache.ratis.shell.cli.sh.command.Context;
 
@@ -61,15 +61,15 @@ public class GroupListCommand extends AbstractRatisCommand {
       address = getRaftGroup().getPeer(peerId).getAddress();
     } else if (cl.hasOption(SERVER_ADDRESS_OPTION_NAME)) {
       address = cl.getOptionValue(SERVER_ADDRESS_OPTION_NAME);
-      final InetSocketAddress serverAddress = parseInetSocketAddress(address);
-      peerId = RaftUtils.getPeerId(serverAddress);
+      final InetSocketAddress serverAddress = 
CliUtils.parseInetSocketAddress(address);
+      peerId = CliUtils.getPeerId(serverAddress);
     } else {
       throw new IllegalArgumentException(
               "Both " + PEER_ID_OPTION_NAME + " and " + 
SERVER_ADDRESS_OPTION_NAME
               + " options are missing.");
     }
 
-    try(final RaftClient raftClient = RaftUtils.createClient(getRaftGroup())) {
+    try(final RaftClient raftClient = CliUtils.newRaftClient(getRaftGroup())) {
       GroupListReply reply = raftClient.getGroupManagementApi(peerId).list();
       processReply(reply, () -> String.format("Failed to get group information 
of peerId %s (server %s)",
               peerId, address));
diff --git 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/local/RaftMetaConfCommand.java
 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/local/RaftMetaConfCommand.java
index e258d863b..a63b65937 100644
--- 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/local/RaftMetaConfCommand.java
+++ 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/local/RaftMetaConfCommand.java
@@ -25,7 +25,7 @@ import 
org.apache.ratis.proto.RaftProtos.RaftConfigurationProto;
 import org.apache.ratis.proto.RaftProtos.RaftPeerProto;
 import org.apache.ratis.proto.RaftProtos.RaftPeerRole;
 import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.shell.cli.RaftUtils;
+import org.apache.ratis.shell.cli.CliUtils;
 import org.apache.ratis.shell.cli.sh.command.AbstractCommand;
 import org.apache.ratis.shell.cli.sh.command.Context;
 import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
@@ -89,7 +89,7 @@ public class RaftMetaConfCommand extends AbstractCommand {
         printf(message, idWithAddress, peersStr);
         return -1;
       }
-      InetSocketAddress inetSocketAddress = parseInetSocketAddress(
+      InetSocketAddress inetSocketAddress = CliUtils.parseInetSocketAddress(
           peerIdWithAddressArray[peerIdWithAddressArray.length - 1]);
       String addressString = inetSocketAddress.getHostString() + ":" + 
inetSocketAddress.getPort();
       if (addresses.contains(addressString)) {
@@ -111,7 +111,7 @@ public class RaftMetaConfCommand extends AbstractCommand {
         ids.add(peerId);
       } else {
         // If peer ID is not provided, use host address as peerId value
-        peerId = RaftUtils.getPeerId(inetSocketAddress).toString();
+        peerId = CliUtils.getPeerId(inetSocketAddress).toString();
       }
 
       raftPeerProtos.add(RaftPeerProto.newBuilder()
diff --git 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/peer/AddCommand.java 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/peer/AddCommand.java
index 3c65bb12d..62c6c5793 100644
--- 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/peer/AddCommand.java
+++ 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/peer/AddCommand.java
@@ -25,9 +25,10 @@ import org.apache.ratis.proto.RaftProtos.RaftPeerRole;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftPeer;
 import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.shell.cli.RaftUtils;
+import org.apache.ratis.shell.cli.CliUtils;
 import org.apache.ratis.shell.cli.sh.command.AbstractRatisCommand;
 import org.apache.ratis.shell.cli.sh.command.Context;
+import org.apache.ratis.util.Preconditions;
 
 import java.io.IOException;
 import java.net.InetSocketAddress;
@@ -66,10 +67,10 @@ public class AddCommand extends AbstractRatisCommand {
     if (cl.hasOption(ADDRESS_OPTION_NAME) && 
cl.hasOption(PEER_ID_OPTION_NAME)) {
       ids = Arrays.stream(cl.getOptionValue(PEER_ID_OPTION_NAME).split(","))
           .map(RaftPeerId::getRaftPeerId).collect(Collectors.toList());
-      List<InetSocketAddress> addresses =
-          Arrays.stream(cl.getOptionValue(ADDRESS_OPTION_NAME).split(","))
-              .map(s -> 
parseInetSocketAddress(s)).collect(Collectors.toList());
-      assert ids.size() == addresses.size();
+      final List<InetSocketAddress> addresses = 
Arrays.stream(cl.getOptionValue(ADDRESS_OPTION_NAME).split(","))
+          .map(CliUtils::parseInetSocketAddress)
+          .collect(Collectors.toList());
+      Preconditions.assertSame(ids.size(), addresses.size(), "size");
       for (int i = 0; i < ids.size(); i++) {
         peersInfo.put(ids.get(i), addresses.get(i));
       }
@@ -80,7 +81,7 @@ public class AddCommand extends AbstractRatisCommand {
           "Both " + PEER_ID_OPTION_NAME + " and " + ADDRESS_OPTION_NAME + " 
options are missing.");
     }
 
-    try (RaftClient client = RaftUtils.createClient(getRaftGroup())) {
+    try (RaftClient client = CliUtils.newRaftClient(getRaftGroup())) {
       final Stream<RaftPeer> remaining = getPeerStream(RaftPeerRole.FOLLOWER);
       final Stream<RaftPeer> adding = ids.stream().map(raftPeerId -> 
RaftPeer.newBuilder()
           .setId(raftPeerId)
diff --git 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/peer/RemoveCommand.java
 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/peer/RemoveCommand.java
index 591851607..e2aa786b3 100644
--- 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/peer/RemoveCommand.java
+++ 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/peer/RemoveCommand.java
@@ -25,7 +25,7 @@ import org.apache.ratis.proto.RaftProtos.RaftPeerRole;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftPeer;
 import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.shell.cli.RaftUtils;
+import org.apache.ratis.shell.cli.CliUtils;
 import org.apache.ratis.shell.cli.sh.command.AbstractRatisCommand;
 import org.apache.ratis.shell.cli.sh.command.Context;
 
@@ -66,7 +66,7 @@ public class RemoveCommand extends AbstractRatisCommand {
       throw new IllegalArgumentException(
           "Both " + PEER_ID_OPTION_NAME + " and " + ADDRESS_OPTION_NAME + " 
options are missing.");
     }
-    try (RaftClient client = RaftUtils.createClient(getRaftGroup())) {
+    try (RaftClient client = CliUtils.newRaftClient(getRaftGroup())) {
       final List<RaftPeer> peers = getPeerStream(RaftPeerRole.FOLLOWER)
           .filter(raftPeer -> 
!ids.contains(raftPeer.getId())).collect(Collectors.toList());
       final List<RaftPeer> listeners = getPeerStream(RaftPeerRole.LISTENER)
diff --git 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/peer/SetPriorityCommand.java
 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/peer/SetPriorityCommand.java
index 01e81f3c3..e2d4d1a53 100644
--- 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/peer/SetPriorityCommand.java
+++ 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/peer/SetPriorityCommand.java
@@ -24,7 +24,7 @@ import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.proto.RaftProtos.RaftPeerRole;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftPeer;
-import org.apache.ratis.shell.cli.RaftUtils;
+import org.apache.ratis.shell.cli.CliUtils;
 import org.apache.ratis.shell.cli.sh.command.AbstractRatisCommand;
 import org.apache.ratis.shell.cli.sh.command.Context;
 
@@ -63,7 +63,7 @@ public class SetPriorityCommand extends AbstractRatisCommand {
       addressPriorityMap.put(str[0], Integer.parseInt(str[1]));
     }
 
-    try (RaftClient client = RaftUtils.createClient(getRaftGroup())) {
+    try (RaftClient client = CliUtils.newRaftClient(getRaftGroup())) {
       final List<RaftPeer> peers = 
getPeerStream(RaftPeerRole.FOLLOWER).map(peer -> {
         final Integer newPriority = addressPriorityMap.get(peer.getAddress());
         final int priority = newPriority != null ? newPriority : 
peer.getPriority();
diff --git 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/snapshot/TakeSnapshotCommand.java
 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/snapshot/TakeSnapshotCommand.java
index 10bac3497..e76f215f4 100644
--- 
a/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/snapshot/TakeSnapshotCommand.java
+++ 
b/ratis-shell/src/main/java/org/apache/ratis/shell/cli/sh/snapshot/TakeSnapshotCommand.java
@@ -23,7 +23,7 @@ import org.apache.commons.cli.Options;
 import org.apache.ratis.client.RaftClient;
 import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftPeerId;
-import org.apache.ratis.shell.cli.RaftUtils;
+import org.apache.ratis.shell.cli.CliUtils;
 import org.apache.ratis.shell.cli.sh.command.AbstractRatisCommand;
 import org.apache.ratis.shell.cli.sh.command.Context;
 
@@ -58,7 +58,7 @@ public class TakeSnapshotCommand extends AbstractRatisCommand 
{
     } else {
       timeout = 3000;
     }
-    try(final RaftClient raftClient = RaftUtils.createClient(getRaftGroup())) {
+    try(final RaftClient raftClient = CliUtils.newRaftClient(getRaftGroup())) {
       if (cl.hasOption(PEER_ID_OPTION_NAME)) {
         peerId = 
RaftPeerId.getRaftPeerId(cl.getOptionValue(PEER_ID_OPTION_NAME));
       } else {

Reply via email to