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

prhomberg pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/develop by this push:
     new df093b5  GEODE-4722: Refactor CliUtil (#1487)
df093b5 is described below

commit df093b5b8f2d1bee549e0b76472b4fcdd51ddc7f
Author: Patrick Rhomberg <prhomb...@pivotal.io>
AuthorDate: Fri Feb 23 10:03:45 2018 -0800

    GEODE-4722: Refactor CliUtil (#1487)
    
    * Reorder methods, grouped by similar functionality.
    * Replace .stackTraceToString and .contains with Apache Commons methods.
    * Moved getClientIdFromCacheClientProxy to only class that calls it.
    * Move arrayToString from CliUtil to sensible StringUtils.  Moved 
associated test.
    * Refactor CliUtil methods.
---
 .../jdbc/internal/cli/ExceptionHandler.java        |   3 +-
 .../distributed/internal/InternalLocator.java      |   5 +-
 .../geode/internal/admin/ClientStatsManager.java   |   5 +-
 .../apache/geode/internal/lang/StringUtils.java    |  13 +
 .../internal/beans/CacheServerBridge.java          |  16 +-
 .../geode/management/internal/cli/CliUtil.java     | 653 +++++++++------------
 .../internal/cli/CommandResponseBuilder.java       |   4 +-
 .../geode/management/internal/cli/Launcher.java    |   7 +-
 .../cli/commands/CompactDiskStoreCommand.java      |   3 +-
 .../commands/CompactOfflineDiskStoreCommand.java   |   3 +-
 .../internal/cli/commands/CreateRegionCommand.java |   6 +-
 .../cli/commands/DescribeMemberCommand.java        |   5 +-
 .../cli/commands/DescribeRegionCommand.java        |   5 +-
 .../commands/UpgradeOfflineDiskStoreCommand.java   |   3 +-
 .../internal/cli/domain/RegionAttributesInfo.java  |   3 +-
 .../cli/functions/AlterRuntimeConfigFunction.java  |   4 +-
 .../cli/functions/GarbageCollectionFunction.java   |   5 +-
 .../cli/functions/RegionAlterFunction.java         |   3 +-
 .../cli/functions/RegionCreateFunction.java        |   3 +-
 .../geode/management/internal/cli/shell/Gfsh.java  |   2 +-
 .../internal/cli/util/DiskStoreCompacter.java      |  13 +-
 .../internal/cli/util/DiskStoreUpgrader.java       |  13 +-
 .../geode/internal/lang/StringUtilsJUnitTest.java  |  11 +
 .../geode/management/internal/cli/CliUtilTest.java |  11 -
 .../cli/commands/ClientCommandsTestUtils.java      |   5 +-
 .../commands/DescribeClientCommandDUnitTest.java   |  14 +-
 .../cli/commands/ListClientCommandDUnitTest.java   |   7 +-
 27 files changed, 392 insertions(+), 433 deletions(-)

diff --git 
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/ExceptionHandler.java
 
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/ExceptionHandler.java
index 0909d7a..59b4a6a 100644
--- 
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/ExceptionHandler.java
+++ 
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/ExceptionHandler.java
@@ -16,6 +16,7 @@ package org.apache.geode.connectors.jdbc.internal.cli;
 
 import java.io.Serializable;
 
+import org.apache.commons.lang.exception.ExceptionUtils;
 import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.cache.Cache;
@@ -51,7 +52,7 @@ class ExceptionHandler implements Serializable {
   private String getExceptionMessage(final Exception exception) {
     String message = exception.getMessage();
     if (message == null) {
-      message = CliUtil.stackTraceAsString(exception);
+      message = ExceptionUtils.getStackTrace(exception);
     }
     return message;
   }
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java
index 8608b5c..7c7b5af 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/InternalLocator.java
@@ -34,6 +34,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.exception.ExceptionUtils;
 import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.CancelException;
@@ -75,7 +76,6 @@ import org.apache.geode.internal.net.SocketCreator;
 import org.apache.geode.internal.net.SocketCreatorFactory;
 import org.apache.geode.management.internal.JmxManagerLocator;
 import org.apache.geode.management.internal.JmxManagerLocatorRequest;
-import org.apache.geode.management.internal.cli.CliUtil;
 import 
org.apache.geode.management.internal.configuration.domain.SharedConfigurationStatus;
 import 
org.apache.geode.management.internal.configuration.handlers.SharedConfigurationStatusRequestHandler;
 import 
org.apache.geode.management.internal.configuration.messages.SharedConfigurationStatusRequest;
@@ -1123,7 +1123,8 @@ public class InternalLocator extends Locator implements 
ConnectListener {
     try {
       response = statusFuture.get(5, TimeUnit.SECONDS);
     } catch (Exception e) {
-      logger.info("Exception occurred while fetching the status {}", 
CliUtil.stackTraceAsString(e));
+      logger.info("Exception occurred while fetching the status {}",
+          ExceptionUtils.getStackTrace(e));
       response = new SharedConfigurationStatusResponse();
       response.setStatus(SharedConfigurationStatus.UNDETERMINED);
     }
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/admin/ClientStatsManager.java
 
b/geode-core/src/main/java/org/apache/geode/internal/admin/ClientStatsManager.java
index 38b7122..c333906 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/admin/ClientStatsManager.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/admin/ClientStatsManager.java
@@ -18,6 +18,8 @@ import java.util.Date;
 import java.util.Map;
 import java.util.Map.Entry;
 
+import org.apache.commons.lang.exception.ExceptionUtils;
+
 import org.apache.geode.Statistics;
 import org.apache.geode.StatisticsType;
 import org.apache.geode.cache.CacheWriterException;
@@ -34,7 +36,6 @@ import org.apache.geode.internal.cache.GemFireCacheImpl;
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 import org.apache.geode.internal.offheap.annotations.Released;
-import org.apache.geode.management.internal.cli.CliUtil;
 
 /**
  * This class publishes the client statistics using the admin region.
@@ -255,7 +256,7 @@ public class ClientStatsManager {
 
     } catch (Exception e) {
       logger.fine("Exception in getting pool stats in  getClientHealthStats "
-          + CliUtil.stackTraceAsString(e));
+          + ExceptionUtils.getStackTrace(e));
     }
 
     stats.setUpdateTime(new Date());
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/lang/StringUtils.java 
b/geode-core/src/main/java/org/apache/geode/internal/lang/StringUtils.java
index 298f44f..5930e6e 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/lang/StringUtils.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/lang/StringUtils.java
@@ -15,6 +15,9 @@
 
 package org.apache.geode.internal.lang;
 
+import java.util.Arrays;
+import java.util.stream.Collectors;
+
 import org.apache.geode.internal.cache.CachedDeserializable;
 import org.apache.geode.internal.cache.Token;
 
@@ -192,6 +195,16 @@ public class StringUtils extends 
org.apache.commons.lang.StringUtils {
     }
   }
 
+  /**
+   * Unlike the other arrayToString methods in this class, this method does 
not surround
+   * the array with "[" "]" delimiters.
+   */
+  public static <T> String arrayToString(T[] array) {
+    if (array == null) {
+      return "null";
+    }
+    return 
Arrays.stream(array).map(String::valueOf).collect(Collectors.joining(", "));
+  }
 
   private static <T> String arrayToString(T[] a, int maxArrayElements) {
     if (maxArrayElements < 0) {
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/beans/CacheServerBridge.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/beans/CacheServerBridge.java
index efb9425..e17abf6 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/beans/CacheServerBridge.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/beans/CacheServerBridge.java
@@ -62,7 +62,6 @@ import 
org.apache.geode.management.internal.beans.stats.StatType;
 import org.apache.geode.management.internal.beans.stats.StatsAverageLatency;
 import org.apache.geode.management.internal.beans.stats.StatsKey;
 import org.apache.geode.management.internal.beans.stats.StatsRate;
-import org.apache.geode.management.internal.cli.CliUtil;
 import org.apache.geode.management.membership.ClientMembershipListener;
 
 /**
@@ -713,7 +712,7 @@ public class CacheServerBridge extends ServerBridge {
     if (!p.isConnected() && !proxyID.isDurable()) {
       return null;
     }
-    queueDetail.setClientId(CliUtil.getClientIdFromCacheClientProxy(p));
+    queueDetail.setClientId(getClientIdFromCacheClientProxy(p));
 
     HARegionQueue queue = p.getHARegionQueue();
     if (queue == null) {
@@ -737,7 +736,7 @@ public class CacheServerBridge extends ServerBridge {
         Collection<CacheClientProxy> clientProxies =
             acceptor.getCacheClientNotifier().getClientProxies();
         for (CacheClientProxy p : clientProxies) {
-          String buffer = CliUtil.getClientIdFromCacheClientProxy(p);
+          String buffer = getClientIdFromCacheClientProxy(p);
           if (buffer.equals(clientId)) {
             ClientQueueDetail queueDetail = getClientQueueDetail(p);
             return queueDetail;
@@ -750,4 +749,15 @@ public class CacheServerBridge extends ServerBridge {
     return null;
   }
 
+
+  private static String getClientIdFromCacheClientProxy(CacheClientProxy p) {
+    if (p == null) {
+      return null;
+    }
+    StringBuffer buffer = new StringBuffer();
+    
buffer.append("[").append(p.getProxyID()).append(":port=").append(p.getRemotePort())
+        .append(":primary=").append(p.isPrimary()).append("]");
+    return buffer.toString();
+  }
+
 }
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/CliUtil.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/CliUtil.java
index ed6ee28..b57bc90 100755
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/CliUtil.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/CliUtil.java
@@ -23,17 +23,16 @@ import java.io.FileOutputStream;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.PrintWriter;
 import java.io.Serializable;
-import java.io.StringWriter;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.nio.charset.Charset;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.zip.DataFormatException;
@@ -55,7 +54,6 @@ import 
org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.ClassPathLoader;
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.execute.AbstractExecution;
-import org.apache.geode.internal.cache.tier.sockets.CacheClientProxy;
 import org.apache.geode.internal.util.IOUtils;
 import org.apache.geode.management.DistributedRegionMXBean;
 import org.apache.geode.management.ManagementService;
@@ -76,136 +74,154 @@ import 
org.apache.geode.management.internal.cli.shell.Gfsh;
 public class CliUtil {
   public static final FileFilter JAR_FILE_FILTER = new 
CustomFileFilter(".jar");
 
-  public static String cliDependenciesExist(boolean includeGfshDependencies) {
-    String jarProductName;
-
-    // Parser & CliCommand from Spring Shell
-    jarProductName =
-        checkLibraryByLoadingClass("org.springframework.shell.core.Parser", 
"Spring Shell");
-    jarProductName = checkLibraryByLoadingClass(
-        "org.springframework.shell.core.annotation.CliCommand", "Spring 
Shell");
-    if (jarProductName != null) {
-      return jarProductName;
+  public static InternalCache getCacheIfExists() {
+    InternalCache cache;
+    try {
+      cache = getInternalCache();
+    } catch (CacheClosedException e) {
+      // ignore & return null
+      cache = null;
     }
 
-    // SpringVersion from Spring Core
-    jarProductName =
-        checkLibraryByLoadingClass("org.springframework.core.SpringVersion", 
"Spring Core");
-    if (jarProductName != null) {
-      return jarProductName;
-    }
+    return cache;
+  }
 
+  public static String cliDependenciesExist(boolean includeGfshDependencies) {
+    // "Validate" each dependency by attempting to load an associated class
+    Map<String, String> classLibraryMap = new HashMap<>();
+    classLibraryMap.put("org.springframework.shell.core.Parser", "Spring 
Shell");
+    
classLibraryMap.put("org.springframework.shell.core.annotation.CliCommand", 
"Spring Shell");
+    classLibraryMap.put("org.springframework.core.SpringVersion", "Spring 
Core");
     if (includeGfshDependencies) {
-      // ConsoleReader from jline
-      jarProductName = 
checkLibraryByLoadingClass("jline.console.ConsoleReader", "JLine");
-      if (jarProductName != null) {
-        return jarProductName;
-      }
+      classLibraryMap.put("jline.console.ConsoleReader", "JLine");
     }
 
-    return jarProductName;
+    List<String> unloadableJars =
+        classLibraryMap.entrySet().stream().filter(entry -> 
!canLoadClass(entry.getKey()))
+            .map(Map.Entry::getValue).collect(Collectors.toList());
+    return unloadableJars.isEmpty() ? null : String.join(",", unloadableJars);
   }
 
-  private static String checkLibraryByLoadingClass(String className, String 
jarProductName) {
+  private static boolean canLoadClass(String className) {
     try {
       ClassPathLoader.getLatest().forName(className);
     } catch (ClassNotFoundException e) {
-      return jarProductName;
-    }
-
-    return null;
-  }
-
-  public static InternalCache getCacheIfExists() {
-    InternalCache cache;
-    try {
-      cache = getInternalCache();
-    } catch (CacheClosedException e) {
-      // ignore & return null
-      cache = null;
+      return false;
     }
-
-    return cache;
+    return true;
   }
 
   /**
-   * Even thought this is only used in a test, caller of 
MemberMXBean.processCommand(String, Map,
-   * Byte[][]) will need to use this method to convert a fileList to Byte[][] 
to call that
-   * deprecated API.
+   * Returns a Set of DistributedMember for members that have the specified 
<code>region</code>.
+   * <code>returnAll</code> indicates whether to return all members or only 
the first member we
+   * find.
    *
-   * Once that deprecated API is removed, we can delete this method and the 
tests.
+   * @param region region path for which members that have this region are 
required
+   * @param cache cache instance to use to find members
+   * @param returnAll if true, returns all matching members, else returns only 
first one found.
+   * @return a Set of DistributedMember for members that have the specified 
<code>region</code>.
    */
-  public static Byte[][] filesToBytes(List<String> fileNames) throws 
IOException {
-    List<byte[]> filesDataList = new ArrayList<>();
+  public static Set<DistributedMember> getRegionAssociatedMembers(String 
region,
+      final InternalCache cache, boolean returnAll) {
+    if (region == null || region.isEmpty()) {
+      return Collections.emptySet();
+    }
 
-    for (String fileName : fileNames) {
-      File file = new File(fileName);
+    if (!region.startsWith(Region.SEPARATOR)) {
+      region = Region.SEPARATOR + region;
+    }
 
-      if (!file.exists()) {
-        throw new FileNotFoundException("Could not find " + 
file.getCanonicalPath());
-      }
+    DistributedRegionMXBean regionMXBean =
+        
ManagementService.getManagementService(cache).getDistributedRegionMXBean(region);
 
-      if (file.isDirectory()) {
-        File[] childrenFiles = file.listFiles(JAR_FILE_FILTER);
-        for (File childrenFile : childrenFiles) {
-          // 1. add name of the file as bytes at even index
-          filesDataList.add(childrenFile.getName().getBytes());
-          // 2. add file contents as bytes at odd index
-          filesDataList.add(toByteArray(new FileInputStream(childrenFile)));
+    if (regionMXBean == null) {
+      return Collections.emptySet();
+    }
+
+    String[] regionAssociatedMemberNames = regionMXBean.getMembers();
+    Set<DistributedMember> matchedMembers = new HashSet<>();
+    Set<DistributedMember> allClusterMembers = new 
HashSet<>(cache.getMembers());
+    allClusterMembers.add(cache.getDistributedSystem().getDistributedMember());
+
+    for (DistributedMember member : allClusterMembers) {
+      for (String regionAssociatedMemberName : regionAssociatedMemberNames) {
+        String name = MBeanJMXAdapter.getMemberNameOrId(member);
+        if (name.equals(regionAssociatedMemberName)) {
+          matchedMembers.add(member);
+          if (!returnAll) {
+            return matchedMembers;
+          }
         }
-      } else {
-        filesDataList.add(file.getName().getBytes());
-        filesDataList.add(toByteArray(new FileInputStream(file)));
       }
     }
+    return matchedMembers;
+  }
+
+  /**
+   * this finds the member that hosts all the regions passed in.
+   *
+   * @param returnAll if true, returns all matching members, otherwise, 
returns only one.
+   */
+  public static Set<DistributedMember> 
getQueryRegionsAssociatedMembers(Set<String> regions,
+      final InternalCache cache, boolean returnAll) {
+    Set<DistributedMember> results = regions.stream()
+        .map(region -> getRegionAssociatedMembers(region, cache, 
true)).reduce((s1, s2) -> {
+          s1.retainAll(s2);
+          return s1;
+        }).get();
 
-    List<Byte[]> convertedList =
-        
filesDataList.stream().map(ArrayUtils::toObject).collect(Collectors.toList());
+    if (returnAll || results.size() <= 1) {
+      return results;
+    }
 
-    return convertedList.toArray(new Byte[convertedList.size()][]);
+    // returns a set of only one item
+    return Collections.singleton(results.iterator().next());
   }
 
-  public static byte[] toByteArray(InputStream input) throws IOException {
-    ByteArrayOutputStream output = new ByteArrayOutputStream();
-    int n = 0;
-    byte[] buffer = new byte[4096];
-    while (-1 != (n = input.read(buffer))) {
-      output.write(buffer, 0, n);
+  public static String getMemberNameOrId(DistributedMember distributedMember) {
+    String nameOrId = null;
+    if (distributedMember != null) {
+      nameOrId = distributedMember.getName();
+      nameOrId = nameOrId != null && !nameOrId.isEmpty() ? nameOrId : 
distributedMember.getId();
     }
+    return nameOrId;
+  }
 
-    return output.toByteArray();
+  /**
+   * Returns a set of all the members of the distributed system excluding 
locators.
+   */
+  @SuppressWarnings("unchecked")
+  public static Set<DistributedMember> getAllNormalMembers(InternalCache 
cache) {
+    return new HashSet<DistributedMember>(cache.getInternalDistributedSystem()
+        .getDistributionManager().getNormalDistributionManagerIds());
   }
 
-  public static List<String> bytesToFiles(Byte[][] fileData, String 
parentDirPath)
-      throws IOException, UnsupportedOperationException {
-    List<String> filesPaths = new ArrayList<>();
-    FileOutputStream fos = null;
-    File file = null;
+  /**
+   * Returns a set of all the members of the distributed system including 
locators.
+   */
+  @SuppressWarnings("unchecked")
+  public static Set<DistributedMember> getAllMembers(InternalCache cache) {
+    return getAllMembers(cache.getInternalDistributedSystem());
+  }
 
-    File parentDir = new File(parentDirPath);
-    if (!parentDir.exists() && !parentDir.mkdirs()) {
-      throw new UnsupportedOperationException(
-          "Couldn't create required directory structure for " + parentDirPath);
-    }
-    for (int i = 0; i < fileData.length; i++) {
-      byte[] bytes = ArrayUtils.toPrimitive(fileData[i]);
-      if (i % 2 == 0) {
-        // Expect file name as bytes at even index
-        String fileName = new String(bytes);
-        file = new File(parentDir, fileName);
-        fos = new FileOutputStream(file);
-      } else {
-        // Expect file contents as bytes at odd index
-        fos.write(bytes);
-        fos.close();
-        filesPaths.add(file.getAbsolutePath());
-      }
-    }
-    return filesPaths;
+  @SuppressWarnings("unchecked")
+  public static Set<DistributedMember> getAllMembers(InternalDistributedSystem 
internalDS) {
+    return new HashSet<DistributedMember>(
+        internalDS.getDistributionManager().getDistributionManagerIds());
   }
 
-  private static InternalCache getInternalCache() {
-    return (InternalCache) CacheFactory.getAnyInstance();
+  public static Set<DistributedMember> 
getMembersWithAsyncEventQueue(InternalCache cache,
+      String queueId) {
+    Set<DistributedMember> members = findMembers(null, null);
+    return members.stream().filter(m -> getAsyncEventQueueIds(cache, 
m).contains(queueId))
+        .collect(Collectors.toSet());
+  }
+
+  public static Set<String> getAsyncEventQueueIds(InternalCache cache, 
DistributedMember member) {
+    SystemManagementService managementService =
+        (SystemManagementService) 
ManagementService.getExistingManagementService(cache);
+    return managementService.getAsyncEventQueueMBeanNames(member).stream()
+        .map(x -> x.getKeyProperty("queue")).collect(Collectors.toSet());
   }
 
   public static Set<String> getAllRegionNames() {
@@ -225,30 +241,6 @@ public class CliUtil {
     return regionNames;
   }
 
-  public static String convertStringSetToString(Set<String> stringSet, char 
delimiter) {
-    StringBuilder sb = new StringBuilder();
-    if (stringSet != null) {
-
-      for (String stringValue : stringSet) {
-        sb.append(stringValue);
-        sb.append(delimiter);
-      }
-    }
-    return sb.toString();
-  }
-
-  public static String convertStringListToString(List<String> stringList, char 
delimiter) {
-    StringBuilder sb = new StringBuilder();
-    if (stringList != null) {
-
-      for (String stringValue : stringList) {
-        sb.append(stringValue);
-        sb.append(delimiter);
-      }
-    }
-    return sb.toString();
-  }
-
   /**
    * Finds all Members (including both servers and locators) which belong to 
the given arrays of
    * groups or members.
@@ -328,104 +320,77 @@ public class CliUtil {
     return memberFound;
   }
 
-  public static String stackTraceAsString(Throwable e) {
-    String stackAsString = "";
-    if (e != null) {
-      StringWriter writer = new StringWriter();
-      PrintWriter pw = new PrintWriter(writer);
-      e.printStackTrace(pw);
-      stackAsString = writer.toString();
-    }
-    return stackAsString;
-  }
+  /**
+   * Even thought this is only used in a test, caller of 
MemberMXBean.processCommand(String, Map,
+   * Byte[][]) will need to use this method to convert a fileList to Byte[][] 
to call that
+   * deprecated API.
+   *
+   * Once that deprecated API is removed, we can delete this method and the 
tests.
+   */
+  public static Byte[][] filesToBytes(List<String> fileNames) throws 
IOException {
+    List<byte[]> filesDataList = new ArrayList<>();
 
-  @SuppressWarnings("unchecked")
-  public static <K> Class<K> forName(String classToLoadName, String neededFor) 
{
-    Class<K> loadedClass = null;
-    try {
-      // Set Constraints
-      ClassPathLoader classPathLoader = ClassPathLoader.getLatest();
-      if (classToLoadName != null && !classToLoadName.isEmpty()) {
-        loadedClass = (Class<K>) classPathLoader.forName(classToLoadName);
+    for (String fileName : fileNames) {
+      File file = new File(fileName);
+
+      if (!file.exists()) {
+        throw new FileNotFoundException("Could not find " + 
file.getCanonicalPath());
+      }
+
+      if (file.isDirectory()) {
+        File[] childrenFiles = file.listFiles(JAR_FILE_FILTER);
+        for (File childrenFile : childrenFiles) {
+          // 1. add name of the file as bytes at even index
+          filesDataList.add(childrenFile.getName().getBytes());
+          // 2. add file contents as bytes at odd index
+          filesDataList.add(toByteArray(new FileInputStream(childrenFile)));
+        }
+      } else {
+        filesDataList.add(file.getName().getBytes());
+        filesDataList.add(toByteArray(new FileInputStream(file)));
       }
-    } catch (ClassNotFoundException | NoClassDefFoundError e) {
-      throw new RuntimeException(
-          
CliStrings.format(CliStrings.CREATE_REGION__MSG__COULD_NOT_FIND_CLASS_0_SPECIFIED_FOR_1,
-              classToLoadName, neededFor),
-          e);
-    } catch (ClassCastException e) {
-      throw new RuntimeException(CliStrings.format(
-          
CliStrings.CREATE_REGION__MSG__CLASS_SPECIFIED_FOR_0_SPECIFIED_FOR_1_IS_NOT_OF_EXPECTED_TYPE,
-          classToLoadName, neededFor), e);
     }
 
-    return loadedClass;
+    return 
filesDataList.stream().map(ArrayUtils::toObject).toArray(Byte[][]::new);
   }
 
-  public static <K> K newInstance(Class<K> klass, String neededFor) {
-    K instance;
-    try {
-      instance = klass.newInstance();
-    } catch (InstantiationException e) {
-      throw new RuntimeException(CliStrings.format(
-          
CliStrings.CREATE_REGION__MSG__COULD_NOT_INSTANTIATE_CLASS_0_SPECIFIED_FOR_1, 
klass,
-          neededFor), e);
-    } catch (IllegalAccessException e) {
-      throw new RuntimeException(
-          
CliStrings.format(CliStrings.CREATE_REGION__MSG__COULD_NOT_ACCESS_CLASS_0_SPECIFIED_FOR_1,
-              klass, neededFor),
-          e);
+  public static byte[] toByteArray(InputStream input) throws IOException {
+    ByteArrayOutputStream output = new ByteArrayOutputStream();
+    int n;
+    byte[] buffer = new byte[4096];
+    while (-1 != (n = input.read(buffer))) {
+      output.write(buffer, 0, n);
     }
 
-    return instance;
+    return output.toByteArray();
   }
 
-  public static Result getFunctionResult(ResultCollector<?, ?> rc, String 
commandName) {
-    Result result;
-    List<Object> results = (List<Object>) rc.getResult();
-    if (results != null) {
-      Object resultObj = results.get(0);
-      if (resultObj instanceof String) {
-        result = ResultBuilder.createInfoResult((String) resultObj);
-      } else if (resultObj instanceof Exception) {
-        result = ResultBuilder.createGemFireErrorResult(((Exception) 
resultObj).getMessage());
-      } else {
-        result = ResultBuilder.createGemFireErrorResult(
-            CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, 
commandName));
-      }
-    } else {
-      result = ResultBuilder.createGemFireErrorResult(
-          CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, commandName));
-    }
-    return result;
-  }
-
-  public static Set<DistributedMember> 
getMembersWithAsyncEventQueue(InternalCache cache,
-      String queueId) {
-    Set<DistributedMember> members = findMembers(null, null);
-    return members.stream().filter(m -> getAsyncEventQueueIds(cache, 
m).contains(queueId))
-        .collect(Collectors.toSet());
-  }
-
-  public static Set<String> getAsyncEventQueueIds(InternalCache cache, 
DistributedMember member) {
-    SystemManagementService managementService =
-        (SystemManagementService) 
ManagementService.getExistingManagementService(cache);
-    return managementService.getAsyncEventQueueMBeanNames(member).stream()
-        .map(x -> x.getKeyProperty("queue")).collect(Collectors.toSet());
-  }
-
-  static class CustomFileFilter implements FileFilter {
-    private String extensionWithDot;
+  public static List<String> bytesToFiles(Byte[][] fileData, String 
parentDirPath)
+      throws IOException, UnsupportedOperationException {
+    List<String> filesPaths = new ArrayList<>();
+    FileOutputStream fos = null;
+    File file = null;
 
-    public CustomFileFilter(String extensionWithDot) {
-      this.extensionWithDot = extensionWithDot;
+    File parentDir = new File(parentDirPath);
+    if (!parentDir.exists() && !parentDir.mkdirs()) {
+      throw new UnsupportedOperationException(
+          "Couldn't create required directory structure for " + parentDirPath);
     }
-
-    @Override
-    public boolean accept(File pathname) {
-      String name = pathname.getName();
-      return name.endsWith(extensionWithDot);
+    for (int i = 0; i < fileData.length; i++) {
+      byte[] bytes = ArrayUtils.toPrimitive(fileData[i]);
+      if (i % 2 == 0) {
+        // Expect file name as bytes at even index
+        String fileName = new String(bytes);
+        file = new File(parentDir, fileName);
+        fos = new FileOutputStream(file);
+      } else {
+        // Expect file contents as bytes at odd index
+        fos.write(bytes);
+        fos.close();
+        filesPaths.add(file.getAbsolutePath());
+      }
     }
+    return filesPaths;
   }
 
   public static DeflaterInflaterData compressBytes(byte[] input) {
@@ -434,7 +399,7 @@ public class CliUtil {
     compresser.finish();
     byte[] buffer = new byte[100];
     byte[] result = new byte[0];
-    int compressedDataLength = 0;
+    int compressedDataLength;
     int totalCompressedDataLength = 0;
     do {
       byte[] newResult = new byte[result.length + buffer.length];
@@ -467,66 +432,84 @@ public class CliUtil {
     return new DeflaterInflaterData(result.length, result);
   }
 
-  public static class DeflaterInflaterData implements Serializable {
-    private static final long serialVersionUID = 1104813333595216795L;
-
-    private final int dataLength;
-    private final byte[] data;
-
-    public DeflaterInflaterData(int dataLength, byte[] data) {
-      this.dataLength = dataLength;
-      this.data = data;
-    }
-
-    public int getDataLength() {
-      return dataLength;
+  public static String decodeWithDefaultCharSet(String urlToDecode) {
+    try {
+      return URLDecoder.decode(urlToDecode, Charset.defaultCharset().name());
+    } catch (UnsupportedEncodingException e) {
+      return urlToDecode;
     }
+  }
 
-    public byte[] getData() {
-      return data;
+  public static <K> Class<K> forName(String classToLoadName, String neededFor) 
{
+    Class<K> loadedClass = null;
+    try {
+      // Set Constraints
+      ClassPathLoader classPathLoader = ClassPathLoader.getLatest();
+      if (classToLoadName != null && !classToLoadName.isEmpty()) {
+        loadedClass = (Class<K>) classPathLoader.forName(classToLoadName);
+      }
+    } catch (ClassNotFoundException | NoClassDefFoundError e) {
+      throw new RuntimeException(
+          
CliStrings.format(CliStrings.CREATE_REGION__MSG__COULD_NOT_FIND_CLASS_0_SPECIFIED_FOR_1,
+              classToLoadName, neededFor),
+          e);
+    } catch (ClassCastException e) {
+      throw new RuntimeException(CliStrings.format(
+          
CliStrings.CREATE_REGION__MSG__CLASS_SPECIFIED_FOR_0_SPECIFIED_FOR_1_IS_NOT_OF_EXPECTED_TYPE,
+          classToLoadName, neededFor), e);
     }
 
-    @Override
-    public String toString() {
-      return String.valueOf(dataLength);
-    }
+    return loadedClass;
   }
 
-  public static boolean contains(Object[] array, Object object) {
-    boolean contains = false;
-
-    if (array != null && object != null) {
-      contains = Arrays.asList(array).contains(object);
+  public static <K> K newInstance(Class<K> klass, String neededFor) {
+    K instance;
+    try {
+      instance = klass.newInstance();
+    } catch (InstantiationException e) {
+      throw new RuntimeException(CliStrings.format(
+          
CliStrings.CREATE_REGION__MSG__COULD_NOT_INSTANTIATE_CLASS_0_SPECIFIED_FOR_1, 
klass,
+          neededFor), e);
+    } catch (IllegalAccessException e) {
+      throw new RuntimeException(
+          
CliStrings.format(CliStrings.CREATE_REGION__MSG__COULD_NOT_ACCESS_CLASS_0_SPECIFIED_FOR_1,
+              klass, neededFor),
+          e);
     }
 
-    return contains;
-  }
-
-  /**
-   * Returns a set of all the members of the distributed system excluding 
locators.
-   *
-   * @param cache
-   */
-  @SuppressWarnings("unchecked")
-  public static Set<DistributedMember> getAllNormalMembers(InternalCache 
cache) {
-    return new HashSet<DistributedMember>(cache.getInternalDistributedSystem()
-        .getDistributionManager().getNormalDistributionManagerIds());
+    return instance;
   }
 
   /**
-   * Returns a set of all the members of the distributed system including 
locators.
+   * Resolves file system path relative to Gfsh. If the pathname is not 
specified, then pathname is
+   * returned.
    *
-   * @param cache
+   * @param pathname a String value specifying the file system pathname to 
resolve.
+   * @return a String specifying a path relative to Gfsh.
    */
-  @SuppressWarnings("unchecked")
-  public static Set<DistributedMember> getAllMembers(InternalCache cache) {
-    return getAllMembers(cache.getInternalDistributedSystem());
+  public static String resolvePathname(final String pathname) {
+    return (StringUtils.isBlank(pathname) ? pathname
+        : IOUtils.tryGetCanonicalPathElseGetAbsolutePath(new File(pathname)));
   }
 
-  @SuppressWarnings("unchecked")
-  public static Set<DistributedMember> getAllMembers(InternalDistributedSystem 
internalDS) {
-    return new HashSet<DistributedMember>(
-        internalDS.getDistributionManager().getDistributionManagerIds());
+  public static Result getFunctionResult(ResultCollector<?, ?> rc, String 
commandName) {
+    Result result;
+    List<Object> results = (List<Object>) rc.getResult();
+    if (results != null) {
+      Object resultObj = results.get(0);
+      if (resultObj instanceof String) {
+        result = ResultBuilder.createInfoResult((String) resultObj);
+      } else if (resultObj instanceof Exception) {
+        result = ResultBuilder.createGemFireErrorResult(((Exception) 
resultObj).getMessage());
+      } else {
+        result = ResultBuilder.createGemFireErrorResult(
+            CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, 
commandName));
+      }
+    } else {
+      result = ResultBuilder.createGemFireErrorResult(
+          CliStrings.format(CliStrings.COMMAND_FAILURE_MESSAGE, commandName));
+    }
+    return result;
   }
 
   /***
@@ -553,113 +536,8 @@ public class CliUtil {
     return execution.execute(function);
   }
 
-  /**
-   * Returns a Set of DistributedMember for members that have the specified 
<code>region</code>.
-   * <code>returnAll</code> indicates whether to return all members or only 
the first member we
-   * find.
-   *
-   * @param region region path for which members that have this region are 
required
-   * @param cache cache instance to use to find members
-   * @param returnAll if true, returns all matching members, else returns only 
first one found.
-   * @return a Set of DistributedMember for members that have the specified 
<code>region</code>.
-   */
-  public static Set<DistributedMember> getRegionAssociatedMembers(String 
region,
-      final InternalCache cache, boolean returnAll) {
-    if (region == null || region.isEmpty()) {
-      return Collections.emptySet();
-    }
-
-    if (!region.startsWith(Region.SEPARATOR)) {
-      region = Region.SEPARATOR + region;
-    }
-
-    DistributedRegionMXBean regionMXBean =
-        
ManagementService.getManagementService(cache).getDistributedRegionMXBean(region);
-
-    if (regionMXBean == null) {
-      return Collections.emptySet();
-    }
-
-    String[] regionAssociatedMemberNames = regionMXBean.getMembers();
-    Set<DistributedMember> matchedMembers = new HashSet<>();
-    Set<DistributedMember> allClusterMembers = new HashSet<>();
-    allClusterMembers.addAll(cache.getMembers());
-    allClusterMembers.add(cache.getDistributedSystem().getDistributedMember());
-
-    for (DistributedMember member : allClusterMembers) {
-      for (String regionAssociatedMemberName : regionAssociatedMemberNames) {
-        String name = MBeanJMXAdapter.getMemberNameOrId(member);
-        if (name.equals(regionAssociatedMemberName)) {
-          matchedMembers.add(member);
-          if (!returnAll) {
-            return matchedMembers;
-          }
-        }
-      }
-    }
-    return matchedMembers;
-  }
-
-  /**
-   * this finds the member that hosts all the regions passed in.
-   *
-   * @param regions
-   * @param cache
-   * @param returnAll if true, returns all matching members, otherwise, 
returns only one.
-   */
-  public static Set<DistributedMember> 
getQueryRegionsAssociatedMembers(Set<String> regions,
-      final InternalCache cache, boolean returnAll) {
-    Set<DistributedMember> results = regions.stream()
-        .map(region -> getRegionAssociatedMembers(region, cache, 
true)).reduce((s1, s2) -> {
-          s1.retainAll(s2);
-          return s1;
-        }).get();
-
-    if (returnAll || results.size() <= 1) {
-      return results;
-    }
 
-    // returns a set of only one item
-    return Collections.singleton(results.iterator().next());
-  }
-
-  public static String getMemberNameOrId(DistributedMember distributedMember) {
-    String nameOrId = null;
-    if (distributedMember != null) {
-      nameOrId = distributedMember.getName();
-      nameOrId = nameOrId != null && !nameOrId.isEmpty() ? nameOrId : 
distributedMember.getId();
-    }
-    return nameOrId;
-  }
-
-  public static <T> String arrayToString(T[] array) {
-    if (array == null) {
-      return "null";
-    }
-    return 
Arrays.stream(array).map(String::valueOf).collect(Collectors.joining(", "));
-  }
-
-  public static String decodeWithDefaultCharSet(String urlToDecode) {
-    try {
-      return URLDecoder.decode(urlToDecode, Charset.defaultCharset().name());
-    } catch (UnsupportedEncodingException e) {
-      return urlToDecode;
-    }
-  }
-
-  /**
-   * Resolves file system path relative to Gfsh. If the pathname is not 
specified, then pathname is
-   * returned.
-   *
-   * @param pathname a String value specifying the file system pathname to 
resolve.
-   * @return a String specifying a path relative to Gfsh.
-   */
-  public static String resolvePathname(final String pathname) {
-    return (StringUtils.isBlank(pathname) ? pathname
-        : IOUtils.tryGetCanonicalPathElseGetAbsolutePath(new File(pathname)));
-  }
-
-  public static void runLessCommandAsExternalViewer(Result commandResult, 
boolean isError) {
+  public static void runLessCommandAsExternalViewer(Result commandResult) {
     StringBuilder sb = new StringBuilder();
     String NEW_LINE = System.getProperty("line.separator");
 
@@ -688,14 +566,53 @@ public class CliUtil {
     }
   }
 
-  public static String getClientIdFromCacheClientProxy(CacheClientProxy p) {
-    if (p == null) {
-      return null;
+
+  static class CustomFileFilter implements FileFilter {
+
+
+    private String extensionWithDot;
+
+    public CustomFileFilter(String extensionWithDot) {
+      this.extensionWithDot = extensionWithDot;
     }
-    StringBuffer buffer = new StringBuffer();
-    
buffer.append("[").append(p.getProxyID()).append(":port=").append(p.getRemotePort())
-        .append(":primary=").append(p.isPrimary()).append("]");
-    return buffer.toString();
+
+    @Override
+    public boolean accept(File pathname) {
+      String name = pathname.getName();
+      return name.endsWith(extensionWithDot);
+    }
+
   }
 
+  public static class DeflaterInflaterData implements Serializable {
+
+    private static final long serialVersionUID = 1104813333595216795L;
+    private final int dataLength;
+
+    private final byte[] data;
+
+    public DeflaterInflaterData(int dataLength, byte[] data) {
+      this.dataLength = dataLength;
+      this.data = data;
+    }
+
+    public int getDataLength() {
+      return dataLength;
+    }
+
+    public byte[] getData() {
+      return data;
+    }
+
+    @Override
+    public String toString() {
+      return String.valueOf(dataLength);
+    }
+  }
+
+  // Methods that will be removed by the next commit:
+
+  private static InternalCache getInternalCache() {
+    return (InternalCache) CacheFactory.getAnyInstance();
+  }
 }
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/CommandResponseBuilder.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/CommandResponseBuilder.java
index e7152a5..aa6c011 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/CommandResponseBuilder.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/CommandResponseBuilder.java
@@ -14,6 +14,8 @@
  */
 package org.apache.geode.management.internal.cli;
 
+import org.apache.commons.lang.exception.ExceptionUtils;
+
 import org.apache.geode.management.cli.CliMetaData;
 import org.apache.geode.management.internal.cli.json.GfJsonException;
 import org.apache.geode.management.internal.cli.json.GfJsonObject;
@@ -40,7 +42,7 @@ public class CommandResponseBuilder {
     try {
       jsonObject = new GfJsonObject(jsonString);
     } catch (GfJsonException e) {
-      jsonObject = 
GfJsonObject.getGfJsonErrorObject(CliUtil.stackTraceAsString(e));
+      jsonObject = 
GfJsonObject.getGfJsonErrorObject(ExceptionUtils.getStackTrace(e));
     }
     return new CommandResponse(jsonObject);
   }
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/Launcher.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/Launcher.java
index a22f615..a652255 100755
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/Launcher.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/Launcher.java
@@ -27,6 +27,7 @@ import org.springframework.shell.core.ExitShellRequest;
 import org.apache.geode.internal.ExitCode;
 import org.apache.geode.internal.GemFireVersion;
 import org.apache.geode.internal.PureJavaMode;
+import org.apache.geode.internal.lang.StringUtils;
 import org.apache.geode.management.internal.cli.i18n.CliStrings;
 import org.apache.geode.management.internal.cli.shell.Gfsh;
 import org.apache.geode.management.internal.cli.shell.GfshConfig;
@@ -168,7 +169,7 @@ public class Launcher {
 
         if (!commandIsAllowed) {
           System.err.println(
-              CliStrings.format(MSG_INVALID_COMMAND_OR_OPTION, 
CliUtil.arrayToString(args)));
+              CliStrings.format(MSG_INVALID_COMMAND_OR_OPTION, 
StringUtils.arrayToString(args)));
           exitRequest = ExitShellRequest.FATAL_EXIT;
         } else {
           if (!gfsh.executeScriptLine(commandLineCommand)) {
@@ -189,8 +190,8 @@ public class Launcher {
     try {
       parsedOptions = this.commandLineParser.parse(args);
     } catch (OptionException e) {
-      System.err
-          .println(CliStrings.format(MSG_INVALID_COMMAND_OR_OPTION, 
CliUtil.arrayToString(args)));
+      System.err.println(
+          CliStrings.format(MSG_INVALID_COMMAND_OR_OPTION, 
StringUtils.arrayToString(args)));
       return ExitShellRequest.FATAL_EXIT.getExitCode();
     }
     boolean launchShell = true;
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CompactDiskStoreCommand.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CompactDiskStoreCommand.java
index 34cc6c3..ced3749 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CompactDiskStoreCommand.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CompactDiskStoreCommand.java
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.commons.lang.ArrayUtils;
 import org.springframework.shell.core.annotation.CliCommand;
 import org.springframework.shell.core.annotation.CliOption;
 
@@ -176,7 +177,7 @@ public class CompactDiskStoreCommand implements GfshCommand 
{
 
     for (Map.Entry<String, String[]> entry : entrySet) {
       String[] value = entry.getValue();
-      if (CliUtil.contains(value, diskStoreName)) {
+      if (diskStoreName != null && ArrayUtils.contains(value, diskStoreName)) {
         return true;
       }
     }
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CompactOfflineDiskStoreCommand.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CompactOfflineDiskStoreCommand.java
index ae73440..2fdd8d7 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CompactOfflineDiskStoreCommand.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CompactOfflineDiskStoreCommand.java
@@ -28,6 +28,7 @@ import org.springframework.shell.core.annotation.CliCommand;
 import org.springframework.shell.core.annotation.CliOption;
 
 import org.apache.geode.GemFireIOException;
+import org.apache.geode.internal.lang.StringUtils;
 import org.apache.geode.management.cli.CliMetaData;
 import org.apache.geode.management.cli.Result;
 import org.apache.geode.management.internal.cli.CliUtil;
@@ -137,7 +138,7 @@ public class CompactOfflineDiskStoreCommand implements 
GfshCommand {
       }
       String fieldsMessage = (maxOplogSize != -1
           ? CliStrings.COMPACT_OFFLINE_DISK_STORE__MAXOPLOGSIZE + "=" + 
maxOplogSize + "," : "");
-      fieldsMessage += CliUtil.arrayToString(diskDirs);
+      fieldsMessage += StringUtils.arrayToString(diskDirs);
       String errorString = CliStrings.format(
           
CliStrings.COMPACT_OFFLINE_DISK_STORE__MSG__ERROR_WHILE_COMPACTING_DISKSTORE_0_WITH_1_REASON_2,
           diskStoreName, fieldsMessage);
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommand.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommand.java
index c24a50e..a20488c 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommand.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommand.java
@@ -23,7 +23,9 @@ import java.util.stream.Collectors;
 
 import javax.management.ObjectName;
 
+import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.exception.ExceptionUtils;
 import org.springframework.shell.core.annotation.CliCommand;
 import org.springframework.shell.core.annotation.CliOption;
 
@@ -494,7 +496,7 @@ public class CreateRegionCommand implements GfshCommand {
               throw (IllegalArgumentException) object;
             } else if (object instanceof Throwable) {
               Throwable th = (Throwable) object;
-              LogWrapper.getInstance().info(CliUtil.stackTraceAsString((th)));
+              
LogWrapper.getInstance().info(ExceptionUtils.getStackTrace((th)));
               throw new IllegalArgumentException(CliStrings.format(
                   
CliStrings.CREATE_REGION__MSG__COULD_NOT_RETRIEVE_REGION_ATTRS_FOR_PATH_0_REASON_1,
                   regionPath, th.getMessage()));
@@ -568,7 +570,7 @@ public class CreateRegionCommand implements GfshCommand {
 
     for (Map.Entry<String, String[]> entry : entrySet) {
       String[] value = entry.getValue();
-      if (CliUtil.contains(value, diskStoreName)) {
+      if (diskStoreName != null && ArrayUtils.contains(value, diskStoreName)) {
         return true;
       }
     }
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeMemberCommand.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeMemberCommand.java
index 9aec188..ec5e1ec 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeMemberCommand.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeMemberCommand.java
@@ -19,6 +19,7 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.commons.lang.StringUtils;
 import org.springframework.shell.core.annotation.CliCommand;
 import org.springframework.shell.core.annotation.CliOption;
 
@@ -28,7 +29,6 @@ import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.management.cli.CliMetaData;
 import org.apache.geode.management.cli.ConverterHint;
 import org.apache.geode.management.cli.Result;
-import org.apache.geode.management.internal.cli.CliUtil;
 import org.apache.geode.management.internal.cli.domain.CacheServerInfo;
 import org.apache.geode.management.internal.cli.domain.MemberInformation;
 import 
org.apache.geode.management.internal.cli.functions.GetMemberInformationFunction;
@@ -72,8 +72,7 @@ public class DescribeMemberCommand implements GfshCommand {
         section.addData("Name", memberInformation.getName());
         section.addData("Id", memberInformation.getId());
         section.addData("Host", memberInformation.getHost());
-        section.addData("Regions",
-            
CliUtil.convertStringSetToString(memberInformation.getHostedRegions(), '\n'));
+        section.addData("Regions", 
StringUtils.join(memberInformation.getHostedRegions(), '\n'));
         section.addData("PID", memberInformation.getProcessId());
         section.addData("Groups", memberInformation.getGroups());
         section.addData("Used Heap", memberInformation.getHeapUsage() + "M");
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeRegionCommand.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeRegionCommand.java
index d75253a..937a355 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeRegionCommand.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeRegionCommand.java
@@ -20,9 +20,9 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.logging.log4j.Logger;
 import org.springframework.shell.core.annotation.CliCommand;
 import org.springframework.shell.core.annotation.CliOption;
@@ -33,7 +33,6 @@ import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.management.cli.CliMetaData;
 import org.apache.geode.management.cli.ConverterHint;
 import org.apache.geode.management.cli.Result;
-import org.apache.geode.management.internal.cli.CliUtil;
 import 
org.apache.geode.management.internal.cli.domain.FixedPartitionAttributesInfo;
 import org.apache.geode.management.internal.cli.domain.RegionDescription;
 import 
org.apache.geode.management.internal.cli.domain.RegionDescriptionPerMember;
@@ -134,7 +133,7 @@ public class DescribeRegionCommand implements GfshCommand {
         memberType = CliStrings.DESCRIBE_REGION__HOSTING__MEMBER;
       }
       regionSection.addData(memberType,
-          
CliUtil.convertStringSetToString(regionDescription.getHostingMembers(), '\n'));
+          StringUtils.join(regionDescription.getHostingMembers(), '\n'));
       regionSection.addSeparator('.');
 
       TabularResultData commonNonDefaultAttrTable = 
regionSection.addSection().addTable();
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/UpgradeOfflineDiskStoreCommand.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/UpgradeOfflineDiskStoreCommand.java
index 85b86db..bf2b505 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/UpgradeOfflineDiskStoreCommand.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/UpgradeOfflineDiskStoreCommand.java
@@ -28,6 +28,7 @@ import org.springframework.shell.core.annotation.CliCommand;
 import org.springframework.shell.core.annotation.CliOption;
 
 import org.apache.geode.GemFireIOException;
+import org.apache.geode.internal.lang.StringUtils;
 import org.apache.geode.management.cli.CliMetaData;
 import org.apache.geode.management.cli.Result;
 import org.apache.geode.management.internal.cli.CliUtil;
@@ -139,7 +140,7 @@ public class UpgradeOfflineDiskStoreCommand implements 
GfshCommand {
       }
       String fieldsMessage = (maxOplogSize != -1
           ? CliStrings.UPGRADE_OFFLINE_DISK_STORE__MAXOPLOGSIZE + "=" + 
maxOplogSize + "," : "");
-      fieldsMessage += CliUtil.arrayToString(diskDirs);
+      fieldsMessage += StringUtils.arrayToString(diskDirs);
       String errorString = CliStrings.format(
           
CliStrings.UPGRADE_OFFLINE_DISK_STORE__MSG__ERROR_WHILE_COMPACTING_DISKSTORE_0_WITH_1_REASON_2,
           diskStoreName, fieldsMessage);
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/RegionAttributesInfo.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/RegionAttributesInfo.java
index 42738eb..afc86e9 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/RegionAttributesInfo.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/RegionAttributesInfo.java
@@ -37,7 +37,6 @@ import org.apache.geode.cache.RegionAttributes;
 import org.apache.geode.cache.Scope;
 import org.apache.geode.compression.Compressor;
 import org.apache.geode.internal.cache.AbstractRegion;
-import org.apache.geode.management.internal.cli.CliUtil;
 import org.apache.geode.management.internal.cli.util.RegionAttributesDefault;
 import org.apache.geode.management.internal.cli.util.RegionAttributesNames;
 
@@ -489,7 +488,7 @@ public class RegionAttributesInfo implements Serializable {
 
     if (cacheListenerClassNames != null && !cacheListenerClassNames.isEmpty()) 
{
       nonDefaultAttributes.put(RegionAttributesNames.CACHE_LISTENERS,
-          CliUtil.convertStringListToString(cacheListenerClassNames, ','));
+          StringUtils.join(cacheListenerClassNames, ","));
     }
 
     if (cacheLoaderClassName != null && !cacheLoaderClassName.isEmpty()) {
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/AlterRuntimeConfigFunction.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/AlterRuntimeConfigFunction.java
index 74ea983..3ef6eab 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/AlterRuntimeConfigFunction.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/AlterRuntimeConfigFunction.java
@@ -18,6 +18,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 
+import org.apache.commons.lang.exception.ExceptionUtils;
 import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.cache.CacheClosedException;
@@ -27,7 +28,6 @@ import org.apache.geode.internal.ConfigSource;
 import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.execute.InternalFunction;
 import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.management.internal.cli.CliUtil;
 import org.apache.geode.management.internal.cli.i18n.CliStrings;
 
 public class AlterRuntimeConfigFunction implements InternalFunction {
@@ -79,7 +79,7 @@ public class AlterRuntimeConfigFunction implements 
InternalFunction {
     } catch (Exception e) {
       logger.error("Exception happened on : " + memberId, e);
       CliFunctionResult cliFuncResult =
-          new CliFunctionResult(memberId, e, CliUtil.stackTraceAsString(e));
+          new CliFunctionResult(memberId, e, ExceptionUtils.getStackTrace(e));
       context.getResultSender().lastResult(cliFuncResult);
     }
   }
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GarbageCollectionFunction.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GarbageCollectionFunction.java
index fc00710..f9d6da4 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GarbageCollectionFunction.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GarbageCollectionFunction.java
@@ -17,11 +17,12 @@ package org.apache.geode.management.internal.cli.functions;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.lang.exception.ExceptionUtils;
+
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.execute.FunctionContext;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.internal.cache.execute.InternalFunction;
-import org.apache.geode.management.internal.cli.CliUtil;
 import org.apache.geode.management.internal.cli.util.BytesToString;
 
 /**
@@ -59,7 +60,7 @@ public class GarbageCollectionFunction implements 
InternalFunction {
       resultMap.put("HeapSizeAfterGC", bytesToString.of(totalMemoryAfterGC - 
freeMemoryAfterGC));
       resultMap.put("TimeSpentInGC", String.valueOf(timeAfterGC - 
timeBeforeGC));
     } catch (Exception ex) {
-      String message = "Exception in GC:" + ex.getMessage() + 
CliUtil.stackTraceAsString(ex);
+      String message = "Exception in GC:" + ex.getMessage() + 
ExceptionUtils.getStackTrace(ex);
 
       context.getResultSender().lastResult(message);
     }
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunction.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunction.java
index 2e686fe..55b3d89 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunction.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionAlterFunction.java
@@ -16,6 +16,7 @@ package org.apache.geode.management.internal.cli.functions;
 
 import java.util.Set;
 
+import org.apache.commons.lang.exception.ExceptionUtils;
 import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.SystemFailure;
@@ -88,7 +89,7 @@ public class RegionAlterFunction implements InternalFunction {
 
       String exceptionMsg = th.getMessage();
       if (exceptionMsg == null) {
-        exceptionMsg = CliUtil.stackTraceAsString(th);
+        exceptionMsg = ExceptionUtils.getStackTrace(th);
       }
       resultSender.lastResult(new CliFunctionResult(memberNameOrId, false, 
exceptionMsg));
     }
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java
index 9fba15c..1b42caa 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java
@@ -19,6 +19,7 @@ import java.util.List;
 import java.util.Set;
 
 import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.exception.ExceptionUtils;
 import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.cache.Cache;
@@ -117,7 +118,7 @@ public class RegionCreateFunction implements 
InternalFunction {
     } catch (Exception e) {
       String exceptionMsg = e.getMessage();
       if (exceptionMsg == null) {
-        exceptionMsg = CliUtil.stackTraceAsString(e);
+        exceptionMsg = ExceptionUtils.getStackTrace(e);
       }
       resultSender.lastResult(handleException(memberNameOrId, exceptionMsg, 
e));
     }
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/shell/Gfsh.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/shell/Gfsh.java
index 0fe7049..cd3e4ed 100755
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/shell/Gfsh.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/shell/Gfsh.java
@@ -681,7 +681,7 @@ public class Gfsh extends JLineShell {
         if (useExternalViewer(commandResult)) {
           // - Save file and pass to less so that viewer can scroll through
           // results
-          CliUtil.runLessCommandAsExternalViewer(commandResult, isError);
+          CliUtil.runLessCommandAsExternalViewer(commandResult);
         } else {
           if (!isScriptRunning) {
             // Normal Command
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreCompacter.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreCompacter.java
index 0b0c12b..b48d599 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreCompacter.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreCompacter.java
@@ -20,10 +20,13 @@ import java.io.StringReader;
 import java.util.Properties;
 import java.util.regex.Pattern;
 
+import org.apache.commons.lang.exception.ExceptionUtils;
+
 import org.apache.geode.GemFireIOException;
 import org.apache.geode.cache.DiskAccessException;
 import org.apache.geode.internal.cache.DiskStoreImpl;
 import org.apache.geode.internal.i18n.LocalizedStrings;
+import org.apache.geode.internal.lang.StringUtils;
 import org.apache.geode.management.internal.cli.CliUtil;
 import org.apache.geode.management.internal.cli.GfshParser;
 import org.apache.geode.management.internal.cli.i18n.CliStrings;
@@ -76,7 +79,7 @@ public class DiskStoreCompacter {
             message)) {
           errorString = CliStrings.format(
               
CliStrings.COMPACT_OFFLINE_DISK_STORE__MSG__VERIFY_WHETHER_DISKSTORE_EXISTS_IN_0,
-              CliUtil.arrayToString(diskDirs));
+              StringUtils.arrayToString(diskDirs));
         } else {
           errorString = message;
         }
@@ -95,15 +98,15 @@ public class DiskStoreCompacter {
         if (!isKnownCause) {
           errorString = CliStrings.format(
               
CliStrings.COMPACT_OFFLINE_DISK_STORE__MSG__CANNOT_ACCESS_DISKSTORE_0_FROM_1_CHECK_GFSH_LOGS,
-              new Object[] {diskStoreName, CliUtil.arrayToString(diskDirs)});
+              new Object[] {diskStoreName, 
StringUtils.arrayToString(diskDirs)});
         }
       } else {
         errorString = e.getMessage(); // which are other known exceptions?
       }
-      stackTraceString = CliUtil.stackTraceAsString(e);
+      stackTraceString = ExceptionUtils.getStackTrace(e);
     } catch (IllegalArgumentException e) {
       errorString = e.getMessage();
-      stackTraceString = CliUtil.stackTraceAsString(e);
+      stackTraceString = ExceptionUtils.getStackTrace(e);
     } finally {
       if (errorString != null) {
         System.err.println(errorString);
@@ -128,7 +131,7 @@ public class DiskStoreCompacter {
     } catch (Exception ex) {
       String fieldsMessage = (maxOplogSize != -1
           ? CliStrings.COMPACT_OFFLINE_DISK_STORE__MAXOPLOGSIZE + "=" + 
maxOplogSize + "," : "");
-      fieldsMessage += CliUtil.arrayToString(dirs);
+      fieldsMessage += StringUtils.arrayToString(dirs);
       throw new GemFireIOException(CliStrings.format(
           
CliStrings.COMPACT_OFFLINE_DISK_STORE__MSG__ERROR_WHILE_COMPACTING_DISKSTORE_0_WITH_1_REASON_2,
           new Object[] {diskStoreName, fieldsMessage, ex.getMessage()}), ex);
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreUpgrader.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreUpgrader.java
index f5c803e..e628548 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreUpgrader.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreUpgrader.java
@@ -20,10 +20,13 @@ import java.io.StringReader;
 import java.util.Properties;
 import java.util.regex.Pattern;
 
+import org.apache.commons.lang.exception.ExceptionUtils;
+
 import org.apache.geode.GemFireIOException;
 import org.apache.geode.cache.DiskAccessException;
 import org.apache.geode.internal.cache.DiskStoreImpl;
 import org.apache.geode.internal.i18n.LocalizedStrings;
+import org.apache.geode.internal.lang.StringUtils;
 import org.apache.geode.management.internal.cli.CliUtil;
 import org.apache.geode.management.internal.cli.GfshParser;
 import org.apache.geode.management.internal.cli.i18n.CliStrings;
@@ -73,7 +76,7 @@ public class DiskStoreUpgrader {
             message)) {
           errorString = CliStrings.format(
               
CliStrings.UPGRADE_OFFLINE_DISK_STORE__MSG__CANNOT_LOCATE_0_DISKSTORE_IN_1,
-              diskStoreName, CliUtil.arrayToString(diskDirs));
+              diskStoreName, StringUtils.arrayToString(diskDirs));
         } else {
           errorString = message;
         }
@@ -92,15 +95,15 @@ public class DiskStoreUpgrader {
         if (!isKnownCause) {
           errorString = CliStrings.format(
               
CliStrings.UPGRADE_OFFLINE_DISK_STORE__MSG__CANNOT_ACCESS_DISKSTORE_0_FROM_1_CHECK_GFSH_LOGS,
-              new Object[] {diskStoreName, CliUtil.arrayToString(diskDirs)});
+              new Object[] {diskStoreName, 
StringUtils.arrayToString(diskDirs)});
         }
       } else {
         errorString = e.getMessage(); // which are other known exceptions?
       }
-      stackTraceString = CliUtil.stackTraceAsString(e);
+      stackTraceString = ExceptionUtils.getStackTrace(e);
     } catch (IllegalArgumentException e) {
       errorString = e.getMessage();
-      stackTraceString = CliUtil.stackTraceAsString(e);
+      stackTraceString = ExceptionUtils.getStackTrace(e);
     } finally {
       if (errorString != null) {
         System.err.println(errorString);
@@ -125,7 +128,7 @@ public class DiskStoreUpgrader {
     } catch (Exception ex) {
       String fieldsMessage = (maxOplogSize != -1
           ? CliStrings.UPGRADE_OFFLINE_DISK_STORE__MAXOPLOGSIZE + "=" + 
maxOplogSize + "," : "");
-      fieldsMessage += CliUtil.arrayToString(dirs);
+      fieldsMessage += StringUtils.arrayToString(dirs);
       throw new GemFireIOException(CliStrings.format(
           
CliStrings.UPGRADE_OFFLINE_DISK_STORE__MSG__ERROR_WHILE_COMPACTING_DISKSTORE_0_WITH_1_REASON_2,
           new Object[] {diskStoreName, fieldsMessage, ex.getMessage()}), ex);
diff --git 
a/geode-core/src/test/java/org/apache/geode/internal/lang/StringUtilsJUnitTest.java
 
b/geode-core/src/test/java/org/apache/geode/internal/lang/StringUtilsJUnitTest.java
index f324d10..dedd85b 100644
--- 
a/geode-core/src/test/java/org/apache/geode/internal/lang/StringUtilsJUnitTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/internal/lang/StringUtilsJUnitTest.java
@@ -14,6 +14,7 @@
  */
 package org.apache.geode.internal.lang;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertSame;
@@ -45,6 +46,16 @@ import org.apache.geode.test.junit.categories.UnitTest;
 public class StringUtilsJUnitTest {
 
 
+  @Test
+  public void arrayToString() {
+    assertThat(StringUtils.arrayToString(null)).isEqualTo("null");
+    String[] array1 = {"one", "two", "three"};
+    assertThat(StringUtils.arrayToString(array1)).isEqualTo("one, two, three");
+    String[] array2 = {"one", null, "three"};
+    assertThat(StringUtils.arrayToString(array2)).isEqualTo("one, null, 
three");
+    String[] array3 = {null};
+    assertThat(StringUtils.arrayToString(array3)).isEqualTo("null");
+  }
 
   @Test
   public void testGetDigitsOnly() {
diff --git 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilTest.java
 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilTest.java
index d181054..44c5fe1 100644
--- 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/CliUtilTest.java
@@ -38,17 +38,6 @@ public class CliUtilTest {
   public TemporaryFolder temporaryFolder = new TemporaryFolder();
 
   @Test
-  public void arrayToString() throws Exception {
-    assertThat(CliUtil.arrayToString(null)).isEqualTo("null");
-    String[] array1 = {"one", "two", "three"};
-    assertThat(CliUtil.arrayToString(array1)).isEqualTo("one, two, three");
-    String[] array2 = {"one", null, "three"};
-    assertThat(CliUtil.arrayToString(array2)).isEqualTo("one, null, three");
-    String[] array3 = {null};
-    assertThat(CliUtil.arrayToString(array3)).isEqualTo("null");
-  }
-
-  @Test
   public void filesToBytesAndThenBytesToFiles() throws IOException {
     File file1 = new File(temporaryFolder.getRoot(), "file1.txt");
     File file2 = new File(temporaryFolder.getRoot(), "file2.txt");
diff --git 
a/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ClientCommandsTestUtils.java
 
b/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ClientCommandsTestUtils.java
index 5ab63e8..038e1c0 100644
--- 
a/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ClientCommandsTestUtils.java
+++ 
b/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ClientCommandsTestUtils.java
@@ -25,6 +25,8 @@ import static org.junit.Assert.assertTrue;
 import java.util.List;
 import java.util.Properties;
 
+import org.apache.commons.lang.exception.ExceptionUtils;
+
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.client.ClientCacheFactory;
@@ -33,7 +35,6 @@ import org.apache.geode.cache.query.QueryService;
 import org.apache.geode.cache.server.CacheServer;
 import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.internal.cache.GemFireCacheImpl;
-import org.apache.geode.management.internal.cli.CliUtil;
 import org.apache.geode.management.internal.cli.i18n.CliStrings;
 import org.apache.geode.management.internal.cli.result.CommandResult;
 import org.apache.geode.management.internal.cli.result.CompositeResultData;
@@ -90,7 +91,7 @@ class ClientCommandsTestUtils extends CliCommandTestBase {
         cache.getLogger()
             .info("setupCqs on vm created cqs = " + 
cache.getQueryService().getCqs().length);
       } catch (Exception e) {
-        cache.getLogger().info("setupCqs on vm Exception " + 
CliUtil.stackTraceAsString(e));
+        cache.getLogger().info("setupCqs on vm Exception " + 
ExceptionUtils.getStackTrace(e));
       }
       return true;
     });
diff --git 
a/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeClientCommandDUnitTest.java
 
b/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeClientCommandDUnitTest.java
index 37170b1..e36e96f 100644
--- 
a/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeClientCommandDUnitTest.java
+++ 
b/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/DescribeClientCommandDUnitTest.java
@@ -35,6 +35,7 @@ import java.util.concurrent.TimeUnit;
 
 import javax.management.ObjectName;
 
+import org.apache.commons.lang.exception.ExceptionUtils;
 import org.awaitility.Awaitility;
 import org.junit.Ignore;
 import org.junit.Test;
@@ -62,7 +63,6 @@ import org.apache.geode.management.ClientHealthStatus;
 import org.apache.geode.management.ManagementService;
 import org.apache.geode.management.cli.Result;
 import org.apache.geode.management.internal.SystemManagementService;
-import org.apache.geode.management.internal.cli.CliUtil;
 import org.apache.geode.management.internal.cli.LogWrapper;
 import org.apache.geode.management.internal.cli.i18n.CliStrings;
 import org.apache.geode.management.internal.cli.result.CommandResult;
@@ -462,7 +462,7 @@ public class DescribeClientCommandDUnitTest extends 
CliCommandTestBase {
             }
           } catch (Exception e) {
             LogWrapper.getInstance().warning("waitForMixedClients Exception in 
waitForMBean ::: "
-                + CliUtil.stackTraceAsString(e));
+                + ExceptionUtils.getStackTrace(e));
           }
           return false;
         }));
@@ -573,7 +573,7 @@ public class DescribeClientCommandDUnitTest extends 
CliCommandTestBase {
           assertNotNull(p);
         } catch (Exception eee) {
           System.err.println("Exception in creating pool " + poolName + "    
Exception =="
-              + CliUtil.stackTraceAsString(eee));
+              + ExceptionUtils.getStackTrace(eee));
         }
       }
     });
@@ -613,7 +613,7 @@ public class DescribeClientCommandDUnitTest extends 
CliCommandTestBase {
             } catch (Exception e) {
               LogWrapper.getInstance()
                   .warning("waitForListClientMBean3 Exception in 
waitForListClientMbean ::: "
-                      + CliUtil.stackTraceAsString(e));
+                      + ExceptionUtils.getStackTrace(e));
             }
             return false;
           }
@@ -653,7 +653,7 @@ public class DescribeClientCommandDUnitTest extends 
CliCommandTestBase {
               return false;
             } catch (Exception e) {
               LogWrapper.getInstance().warning(
-                  "waitForMBean Exception in waitForMBean ::: " + 
CliUtil.stackTraceAsString(e));
+                  "waitForMBean Exception in waitForMBean ::: " + 
ExceptionUtils.getStackTrace(e));
             }
             return false;
           }
@@ -701,7 +701,7 @@ public class DescribeClientCommandDUnitTest extends 
CliCommandTestBase {
           assertNotNull(p);
         } catch (Exception eee) {
           cache.getLogger().info("Exception in creating pool " + poolName + "  
  Exception =="
-              + CliUtil.stackTraceAsString(eee));
+              + ExceptionUtils.getStackTrace(eee));
         }
       }
     });
@@ -756,7 +756,7 @@ public class DescribeClientCommandDUnitTest extends 
CliCommandTestBase {
           } catch (Exception e) {
             LogWrapper.getInstance()
                 .warning("waitForNonSubScribedClientMBean Exception in 
waitForMBean ::: "
-                    + CliUtil.stackTraceAsString(e));
+                    + ExceptionUtils.getStackTrace(e));
           }
           return false;
         }));
diff --git 
a/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ListClientCommandDUnitTest.java
 
b/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ListClientCommandDUnitTest.java
index 81e318e..4d84f1e 100644
--- 
a/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ListClientCommandDUnitTest.java
+++ 
b/geode-cq/src/test/java/org/apache/geode/management/internal/cli/commands/ListClientCommandDUnitTest.java
@@ -31,6 +31,7 @@ import java.util.concurrent.TimeUnit;
 
 import javax.management.ObjectName;
 
+import org.apache.commons.lang.exception.ExceptionUtils;
 import org.awaitility.Awaitility;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -299,7 +300,7 @@ public class ListClientCommandDUnitTest extends 
CliCommandTestBase {
             } catch (Exception e) {
               LogWrapper.getInstance()
                   .warning("waitForListClientMbean3 Exception in 
waitForListClientMbean ::: "
-                      + CliUtil.stackTraceAsString(e));
+                      + ExceptionUtils.getStackTrace(e));
             }
             return false;
           }
@@ -351,7 +352,7 @@ public class ListClientCommandDUnitTest extends 
CliCommandTestBase {
           assertNotNull(p);
         } catch (Exception eee) {
           System.err.println("Exception in creating pool " + poolName + "    
Exception =="
-              + CliUtil.stackTraceAsString(eee));
+              + ExceptionUtils.getStackTrace(eee));
         }
       }
     });
@@ -384,7 +385,7 @@ public class ListClientCommandDUnitTest extends 
CliCommandTestBase {
             } catch (Exception e) {
               LogWrapper.getInstance()
                   .warning("waitForListClientMbean Exception in 
waitForListClientMbean ::: "
-                      + CliUtil.stackTraceAsString(e));
+                      + ExceptionUtils.getStackTrace(e));
             }
             return false;
           }

-- 
To stop receiving notification emails like this one, please contact
prhomb...@apache.org.

Reply via email to