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

bschuchardt pushed a commit to branch feature/GEODE-5013
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/feature/GEODE-5013 by this 
push:
     new 2101bbd  fixing unit test failures - still not ready for review
2101bbd is described below

commit 2101bbd8405a9878bc7966ee7cc41ed8063bdc44
Author: Bruce Schuchardt <[email protected]>
AuthorDate: Tue Mar 12 15:58:56 2019 -0700

    fixing unit test failures - still not ready for review
---
 .../LocatorLauncherRemoteIntegrationTestCase.java  |  1 +
 .../apache/geode/codeAnalysis/excludedClasses.txt  |  2 +-
 .../apache/geode/distributed/LocatorLauncher.java  | 11 +++++--
 .../apache/geode/distributed/ServerLauncher.java   |  3 +-
 .../membership/gms/membership/GMSJoinLeave.java    |  2 --
 .../geode/internal/cache/versions/VersionTag.java  |  3 +-
 .../internal/cli/CommandResponseBuilder.java       |  2 ++
 .../management/internal/cli/json/GfJsonArray.java  | 32 +++++++++----------
 .../management/internal/cli/json/GfJsonObject.java | 37 ++++++++++++++++------
 .../internal/cli/result/AbstractResultData.java    |  8 ++---
 .../internal/cli/result/LegacyCommandResult.java   | 10 +++---
 .../internal/cli/result/ModelCommandResult.java    |  1 +
 .../management/internal/cli/result/ResultData.java |  6 ++++
 .../internal/cli/result/TabularResultData.java     |  2 +-
 .../geode/management/internal/cli/shell/Gfsh.java  | 12 ++++++-
 .../web/controllers/ShellCommandsController.java   |  5 +++
 .../AbstractLauncherServiceStateTest.java          |  4 +--
 .../internal/cli/json/GfJsonArrayTest.java         | 14 ++++----
 .../management/internal/cli/HeadlessGfsh.java      | 11 +++++++
 .../geode/test/junit/rules/GfshCommandRule.java    |  2 ++
 20 files changed, 113 insertions(+), 55 deletions(-)

diff --git 
a/geode-core/src/integrationTest/java/org/apache/geode/distributed/LocatorLauncherRemoteIntegrationTestCase.java
 
b/geode-core/src/integrationTest/java/org/apache/geode/distributed/LocatorLauncherRemoteIntegrationTestCase.java
index 34f8f31..cff5c60 100644
--- 
a/geode-core/src/integrationTest/java/org/apache/geode/distributed/LocatorLauncherRemoteIntegrationTestCase.java
+++ 
b/geode-core/src/integrationTest/java/org/apache/geode/distributed/LocatorLauncherRemoteIntegrationTestCase.java
@@ -199,6 +199,7 @@ public abstract class 
LocatorLauncherRemoteIntegrationTestCase
       try {
         assertThat(launcher.status().getStatus()).isEqualTo(Status.ONLINE);
       } catch (Exception e) {
+        e.printStackTrace();
         throw new AssertionError(statusFailedWithException(e), e);
       }
     });
diff --git 
a/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
 
b/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
index 23a7c42..b4acde0 100644
--- 
a/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
+++ 
b/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/excludedClasses.txt
@@ -77,7 +77,7 @@ org/apache/geode/internal/tcp/VersionedByteBufferInputStream
 org/apache/geode/internal/util/concurrent/StoppableReadWriteLock
 org/apache/geode/management/internal/cli/commands/ShowMetricsCommand$Category
 org/apache/geode/management/internal/cli/exceptions/UserErrorException
-org/apache/geode/management/internal/cli/json/QueryResultFormatter$PreventReserializationModule
+org/apache/geode/management/internal/cli/json/AbstractJSONFormatter$PreventReserializationModule
 org/apache/geode/security/ResourcePermission
 org/apache/geode/security/ResourcePermission$Operation
 org/apache/geode/security/ResourcePermission$Resource
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/LocatorLauncher.java 
b/geode-core/src/main/java/org/apache/geode/distributed/LocatorLauncher.java
index 7ea24fe..d9a845c 100644
--- a/geode-core/src/main/java/org/apache/geode/distributed/LocatorLauncher.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/LocatorLauncher.java
@@ -78,7 +78,6 @@ import org.apache.geode.internal.process.ProcessType;
 import org.apache.geode.internal.process.ProcessUtils;
 import org.apache.geode.internal.process.UnableToControlProcessException;
 import org.apache.geode.lang.AttachAPINotFoundException;
-import org.apache.geode.management.internal.cli.json.GfJsonArray;
 import org.apache.geode.management.internal.cli.json.GfJsonException;
 import org.apache.geode.management.internal.cli.json.GfJsonObject;
 import org.apache.geode.management.internal.cli.util.HostUtils;
@@ -2000,8 +1999,16 @@ public class LocatorLauncher extends 
AbstractLauncher<String> {
 
         final Status status = 
Status.valueOfDescription(gfJsonObject.getString(JSON_STATUS));
 
+        // StringWriter writer = new StringWriter().append("Bruce: 
LocatorState.fromJson document
+        // keys=");
+        // for (Iterator<String> keys = gfJsonObject.keys(); keys.hasNext();) {
+        // writer.append(" ").append(keys.next());
+        // }
+        // System.out.println(writer.toString());
+        // System.out.println("Bruce: 
jvmArguments="+gfJsonObject.getJSONObject(JSON_JVMARGUMENTS));
+
         final List<String> jvmArguments =
-            
Arrays.asList(GfJsonArray.toStringArray(gfJsonObject.getJSONArray(JSON_JVMARGUMENTS)));
+            gfJsonObject.getJSONArray(JSON_JVMARGUMENTS).toStringList();
 
         return new LocatorState(status, 
gfJsonObject.getString(JSON_STATUSMESSAGE),
             gfJsonObject.getLong(JSON_TIMESTAMP), 
gfJsonObject.getString(JSON_LOCATION),
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/ServerLauncher.java 
b/geode-core/src/main/java/org/apache/geode/distributed/ServerLauncher.java
index 9edee8b..a12de6e 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/ServerLauncher.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/ServerLauncher.java
@@ -85,7 +85,6 @@ import org.apache.geode.internal.process.ProcessType;
 import org.apache.geode.internal.process.UnableToControlProcessException;
 import org.apache.geode.lang.AttachAPINotFoundException;
 import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.json.GfJsonArray;
 import org.apache.geode.management.internal.cli.json.GfJsonException;
 import org.apache.geode.management.internal.cli.json.GfJsonObject;
 import org.apache.geode.management.internal.cli.util.HostUtils;
@@ -2596,7 +2595,7 @@ public class ServerLauncher extends 
AbstractLauncher<String> {
 
         final Status status = 
Status.valueOfDescription(gfJsonObject.getString(JSON_STATUS));
         final List<String> jvmArguments =
-            
Arrays.asList(GfJsonArray.toStringArray(gfJsonObject.getJSONArray(JSON_JVMARGUMENTS)));
+            gfJsonObject.getJSONArray(JSON_JVMARGUMENTS).toStringList();
 
         return new ServerState(status, 
gfJsonObject.getString(JSON_STATUSMESSAGE),
             gfJsonObject.getLong(JSON_TIMESTAMP), 
gfJsonObject.getString(JSON_LOCATION),
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java
index a816e78..0aa6b13 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java
@@ -1078,8 +1078,6 @@ public class GMSJoinLeave implements JoinLeave, 
MessageHandler {
   private void forceDisconnect(String reason) {
     this.isStopping = true;
     if (!isJoined) {
-      logger.fatal("BRUCE: forcedDisconnect invoked.  isReconnecting={} 
isJoined={}",
-          services.getConfig().isReconnecting(), isJoined);
       joinResponse[0] =
           new JoinResponseMessage(
               "Stopping due to ForcedDisconnectException caused by '" + reason 
+ "'", -1);
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/cache/versions/VersionTag.java
 
b/geode-core/src/main/java/org/apache/geode/internal/cache/versions/VersionTag.java
index f34f4d9..2329cd6 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/cache/versions/VersionTag.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/cache/versions/VersionTag.java
@@ -408,9 +408,10 @@ public abstract class VersionTag<T extends VersionSource>
         this.previousMemberID = readMember(in);
       }
     }
-    setIsRemoteForTesting();
+    setBits(BITS_IS_REMOTE_TAG);
   }
 
+  /** for unit testing receipt of version tags from another member of the 
cluster */
   public void setIsRemoteForTesting() {
     setBits(BITS_IS_REMOTE_TAG);
   }
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 1d3956b..85ba64e 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
@@ -34,6 +34,8 @@ public class CommandResponseBuilder {
   private static CommandResponse prepareCommandResponse(String memberName, 
CommandResult result) {
     GfJsonObject content;
     content = result.getContent();
+    // System.out.println("Bruce:
+    // CommandResponseBuilder.prepareCommandResponse(content="+content+")");
     return new CommandResponse(memberName, getType(result), 
result.getStatus().getCode(), "1/1",
         CliMetaData.ANNOTATION_NULL_VALUE, getDebugInfo(), result.getHeader(), 
content,
         result.getFooter(), result.failedToPersist(), 
result.getFileToDownload());
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/GfJsonArray.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/GfJsonArray.java
index 2deeb29..5a65a21 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/GfJsonArray.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/GfJsonArray.java
@@ -14,6 +14,8 @@
  */
 package org.apache.geode.management.internal.cli.json;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
 import com.fasterxml.jackson.databind.JsonNode;
@@ -63,9 +65,9 @@ public class GfJsonArray extends AbstractJSONFormatter {
    * @return An object value.
    * @throws GfJsonException If there is no value for the index.
    */
-  public Object get(int index) throws GfJsonException {
+  public String getString(int index) throws GfJsonException {
     try {
-      return this.jsonArray.get(index).textValue();
+      return jsonArray.get(index).asText();
     } catch (IllegalArgumentException e) {
       throw new GfJsonException(e);
     }
@@ -81,7 +83,6 @@ public class GfJsonArray extends AbstractJSONFormatter {
 
   public GfJsonArray put(Object value) {
     this.jsonArray.add(toJsonNode(value));
-
     return this;
   }
 
@@ -139,7 +140,7 @@ public class GfJsonArray extends AbstractJSONFormatter {
       byteArray = new byte[length];
       for (int i = 0; i < length; i++) {
         try {
-          byteArray[i] = Byte.valueOf(String.valueOf(jsonArray.get(i)));
+          byteArray[i] = Byte.valueOf(String.valueOf(jsonArray.getString(i)));
         } catch (GfJsonException e) {
           throw new GfJsonException(e.getMessage());
         }
@@ -149,21 +150,18 @@ public class GfJsonArray extends AbstractJSONFormatter {
     return byteArray;
   }
 
-  public static String[] toStringArray(GfJsonArray jsonArray) {
-    String[] stringArray = null;
-    if (jsonArray != null) {
-      int length = jsonArray.size();
-      stringArray = new String[length];
-      for (int i = 0; i < length; i++) {
-        try {
-          stringArray[i] = String.valueOf(jsonArray.get(i));
-        } catch (GfJsonException e) {
-          logger.info("", e);
-          stringArray = null;
-        }
+  public List<String> toStringList() {
+    List<String> stringArray = null;
+    int length = jsonArray.size();
+    stringArray = new ArrayList<>(length);
+    for (int i = 0; i < length; i++) {
+      try {
+        stringArray.add(getString(i));
+      } catch (GfJsonException e) {
+        logger.info("", e);
+        stringArray = null;
       }
     }
-
     return stringArray;
   }
 
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/GfJsonObject.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/GfJsonObject.java
index 704dce6..9d667cc 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/GfJsonObject.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/json/GfJsonObject.java
@@ -138,22 +138,27 @@ public class GfJsonObject extends AbstractJSONFormatter {
     return this;
   }
 
-  // TODO all uses of this need to be examined - most can use type-specific 
get() methods
+  /**
+   * return the Jackson JsonNode associated with the given key
+   */
   public JsonNode get(String key) {
     return rootNode.get(key);
   }
 
   public String getString(String key) {
-    System.out.println("Bruce: rootNode.get(" + key + "=" + rootNode.get(key) 
+ ")");
+    System.out.println("Bruce: rootNode.getString(" + key + ") =" + 
rootNode.get(key)/*
+                                                                               
       * +
+                                                                               
       * " (rootNode="
+                                                                               
       * +rootNode+
+                                                                               
       * ")"
+                                                                               
       */);
+    if (key.equals("fileToDownload"))
+      Thread.dumpStack();
     JsonNode node = rootNode.get(key);
     if (node == null) {
-      return "null";
+      return null; // "null";
     }
-    String textValue = node.textValue();
-    if (textValue != null) {
-      return textValue;
-    }
-    return node.toString();
+    return node.asText();
   }
 
   public int getInt(String key) {
@@ -191,9 +196,18 @@ public class GfJsonObject extends AbstractJSONFormatter {
    */
   public GfJsonArray getJSONArray(String key) throws GfJsonException {
     JsonNode node = rootNode.get(key);
-    if (!(node instanceof ArrayNode)) {
+    if (node == null) {
       return null;
     }
+    if (!(node instanceof ArrayNode)) {
+      // convert from list format to array format
+      ArrayNode newNode = mapper.createArrayNode();
+      for (int i = 0; i < node.size(); i++) {
+        newNode.add(node.get("" + i));
+      }
+      rootNode.set(key, newNode);
+      return new GfJsonArray(newNode);
+    }
     return new GfJsonArray(node);
   }
 
@@ -329,6 +343,8 @@ public class GfJsonObject extends AbstractJSONFormatter {
 
   public List<String> getArrayValues(String key) {
     List<String> result = new ArrayList<>();
+    System.out.println("Bruce: GfJsonObject.getArrayValues(" + key + ") node=" 
+ rootNode.get(key)
+        + " class=" + rootNode.get(key).getClass());
     if (rootNode.has(key)) {
       JsonNode node = rootNode.get(key);
       if (!(node instanceof ArrayNode)) {
@@ -336,7 +352,8 @@ public class GfJsonObject extends AbstractJSONFormatter {
       }
       ArrayNode array = (ArrayNode) node;
       for (int i = 0; i < array.size(); i++) {
-        result.add(array.get(i).textValue());
+        JsonNode valueNode = array.get(i);
+        result.add(valueNode.asText());
       }
     }
     return result;
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/AbstractResultData.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/AbstractResultData.java
index db65160..1164494 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/AbstractResultData.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/AbstractResultData.java
@@ -187,7 +187,7 @@ public abstract class AbstractResultData implements 
ResultData {
         fileNameBytes = GfJsonArray.toByteArray(fileNameJsonBytes);
         fileName = new String(fileNameBytes);
       } else { // if on member
-        fileName = object.get(FILE_NAME_FIELD).toString();
+        fileName = object.getString(FILE_NAME_FIELD);
       }
 
       // build file message
@@ -198,11 +198,11 @@ public abstract class AbstractResultData implements 
ResultData {
         fileMessageBytes = GfJsonArray.toByteArray(fileMessageJsonBytes);
         fileMessage = new String(fileMessageBytes);
       } else { // if on member
-        fileMessage = object.get(FILE_MESSAGE).asText();
+        fileMessage = object.getString(FILE_MESSAGE);
       }
 
-      String fileDataString = object.get(FILE_DATA_FIELD).asText();
-      int fileDataLength = object.get(DATA_LENGTH_FIELD).asInt();
+      String fileDataString = object.getString(FILE_DATA_FIELD);
+      int fileDataLength = object.getInt(DATA_LENGTH_FIELD);
       byte[] byteArray = Base64.getDecoder().decode(fileDataString);
       byte[] uncompressBytes = CliUtil.uncompressBytes(byteArray, 
fileDataLength).getData();
 
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/LegacyCommandResult.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/LegacyCommandResult.java
index 5ec7c38..afed0f1 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/LegacyCommandResult.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/LegacyCommandResult.java
@@ -262,7 +262,7 @@ public class LegacyCommandResult implements CommandResult {
   }
 
   private static String[] getValuesSeparatedByLines(Object object) {
-    String valueString = String.valueOf(object);
+    String valueString = "" + object;
     return valueString.split(GfshParser.LINE_SEPARATOR);
   }
 
@@ -275,7 +275,7 @@ public class LegacyCommandResult implements CommandResult {
 
     // build Table Header first
     for (int i = 0; i < numOfColumns; i++) {
-      Object object = columnNames.get(i);
+      Object object = columnNames.getString(i);
       if (ResultData.BYTE_DATA_ACCESSOR.equals(object)) {
         // skip file data if any
         continue;
@@ -286,7 +286,7 @@ public class LegacyCommandResult implements CommandResult {
     // Build remaining rows by extracting data column-wise from JSON object
     Row[] dataRows = null;
     for (int i = 0; i < numOfColumns; i++) {
-      Object object = columnNames.get(i);
+      Object object = columnNames.getString(i);
       if (ResultData.BYTE_DATA_ACCESSOR.equals(object)) {
         // skip file data if any
         continue;
@@ -312,7 +312,7 @@ public class LegacyCommandResult implements CommandResult {
 
     // Add data column-wise
     for (int j = 0; j < size; j++) {
-      dataRows[j].newLeftCol(accumulatedData.get(j));
+      dataRows[j].newLeftCol(accumulatedData.getString(j));
     }
     return dataRows;
   }
@@ -402,6 +402,7 @@ public class LegacyCommandResult implements CommandResult {
   public String getMessageFromContent() {
     List<String> messages;
     try {
+      // System.out.println("BRUCE: getMessageFromContent() 
content="+getContent());
       GfJsonArray jsonArray = getContent().getJSONArray("message");
       if (jsonArray == null) {
         return "";
@@ -421,6 +422,7 @@ public class LegacyCommandResult implements CommandResult {
 
   @Override
   public List<String> getListFromContent(String key) {
+    System.out.println("BRUCE: LegacyCommandResult.getListFromContentString(" 
+ key + ")");
     return getContent().getArrayValues(key);
   }
 
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/ModelCommandResult.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/ModelCommandResult.java
index 3143d61..dfe8e00 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/ModelCommandResult.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/ModelCommandResult.java
@@ -167,6 +167,7 @@ public class ModelCommandResult implements CommandResult {
 
   @Override
   public List<String> getListFromContent(String key) {
+    System.out.println("BRUCE: ModelCommandResult.getListFromContentString(" + 
key + ")");
     return null;
   }
 
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/ResultData.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/ResultData.java
index 94cf9ed..e79da62 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/ResultData.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/ResultData.java
@@ -14,6 +14,8 @@
  */
 package org.apache.geode.management.internal.cli.result;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 import org.apache.geode.management.cli.Result.Status;
 import org.apache.geode.management.internal.cli.json.GfJsonObject;
 
@@ -46,21 +48,25 @@ public interface ResultData {
 
   String getFooter();
 
+  @JsonIgnore
   default GfJsonObject getGfJsonObject() {
     throw new UnsupportedOperationException(
         "This should never be called and only exists during migration from 
GfJsonObject to POJOs - use getContent() instead");
   }
 
+  @JsonIgnore
   default String getType() {
     throw new UnsupportedOperationException(
         "This should never be called and only exists during migration from 
GfJsonObject to POJOs");
   }
 
+  @JsonIgnore
   default Status getStatus() {
     throw new UnsupportedOperationException(
         "This should never be called and only exists during migration from 
GfJsonObject to POJOs");
   }
 
+  @JsonIgnore
   default void setStatus(final Status status) {
     throw new UnsupportedOperationException(
         "This should never be called and only exists during migration from 
GfJsonObject to POJOs");
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/TabularResultData.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/TabularResultData.java
index c18b892..736e60f 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/TabularResultData.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/result/TabularResultData.java
@@ -119,7 +119,7 @@ public class TabularResultData extends AbstractResultData {
       GfJsonArray jsonArray = contentObject.getJSONArray(columnName);
       int size = jsonArray.size();
       for (int i = 0; i < size; i++) {
-        values.add(String.valueOf(jsonArray.get(i)));
+        values.add(String.valueOf(jsonArray.getString(i)));
       }
     } catch (GfJsonException e) {
       throw new ResultDataException(e.getMessage());
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 ac38304..0e01adb 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
@@ -270,18 +270,23 @@ public class Gfsh extends JLineShell {
   }
 
   public static void println() {
+    System.out.println("Bruce: println()");
     gfshout.println();
   }
 
   public static <T> void println(T toPrint) {
+    System.out.println("Bruce: println(" + "\"" + toPrint + "\")");
     gfshout.println(toPrint);
   }
 
   public static <T> void print(T toPrint) {
+    System.out.print("Bruce: print(\"" + toPrint + "\")");
     gfshout.print(toPrint);
   }
 
   public static <T> void printlnErr(T toPrint) {
+    System.err.println("Bruce: printlnErr(\"" + toPrint + "\"");
+    Thread.dumpStack();
     gfsherr.println(toPrint);
   }
 
@@ -706,7 +711,9 @@ public class Gfsh extends JLineShell {
           if (!isScriptRunning) {
             // Normal Command
             while (commandResult.hasNextLine()) {
-              write(commandResult.nextLine(), isError);
+              String nextLine = commandResult.nextLine();
+              System.out.println("Bruce: Gfsh.handleExecutionResult writing " 
+ nextLine);
+              write(nextLine, isError);
             }
           } else if (!suppressScriptCmdOutput) {
             // Command is part of script. Show output only when quite=false
@@ -722,6 +729,7 @@ public class Gfsh extends JLineShell {
         // to save the exported file at this point. All file saving should be 
done in the
         // specific command's postExecutor
         if (result instanceof LegacyCommandResult) {
+          System.out.println("Bruce: Gfsh.handleExecutionResult processing 
LegacyCommandResult");
           CommandResult cmdResult = (CommandResult) result;
           if (cmdResult.hasIncomingFiles()) {
             boolean isAlreadySaved = cmdResult.getNumTimesSaved() > 0;
@@ -733,9 +741,11 @@ public class Gfsh extends JLineShell {
         }
       }
       if (result != null && !(result instanceof Result)) {
+        System.out.println("Bruce: Gfsh.handleExecutionResult is printing " + 
result);
         printAsInfo(result.toString());
       }
     } catch (Exception e) {
+      e.printStackTrace();
       printAsWarning(e.getMessage());
       logToFile(e.getMessage(), e);
     }
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/ShellCommandsController.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/ShellCommandsController.java
index 16e53e5..e070cd6 100644
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/ShellCommandsController.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/ShellCommandsController.java
@@ -48,6 +48,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import org.apache.geode.annotations.Immutable;
 import org.apache.geode.cache.RegionShortcut;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.internal.GemFireVersion;
 import org.apache.geode.internal.util.IOUtils;
 import org.apache.geode.management.cli.Result;
@@ -191,8 +192,12 @@ public class ShellCommandsController extends 
AbstractCommandsController {
   private ResponseEntity<InputStreamResource> getResponse(String result) {
     CommandResult commandResult = ResultBuilder.fromJson(result);
     if (commandResult.getStatus().equals(Result.Status.OK) && 
commandResult.hasFileToDownload()) {
+      InternalDistributedSystem.getLogger()
+          .info("Bruce: returning file download response from 
ShellCommandsController.getResponse");
       return getFileDownloadResponse(commandResult);
     } else {
+      InternalDistributedSystem.getLogger()
+          .info("Bruce: returning json response from 
ShellCommandsController.getResponse");
       return getJsonResponse(result);
     }
   }
diff --git 
a/geode-core/src/test/java/org/apache/geode/distributed/AbstractLauncherServiceStateTest.java
 
b/geode-core/src/test/java/org/apache/geode/distributed/AbstractLauncherServiceStateTest.java
index da47ac7..07d0a36 100755
--- 
a/geode-core/src/test/java/org/apache/geode/distributed/AbstractLauncherServiceStateTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/distributed/AbstractLauncherServiceStateTest.java
@@ -42,7 +42,6 @@ import org.junit.Test;
 
 import org.apache.geode.internal.GemFireVersion;
 import org.apache.geode.internal.process.ProcessUtils;
-import org.apache.geode.management.internal.cli.json.GfJsonArray;
 import org.apache.geode.management.internal.cli.json.GfJsonException;
 import org.apache.geode.management.internal.cli.json.GfJsonObject;
 
@@ -805,8 +804,7 @@ public class AbstractLauncherServiceStateTest {
           GfJsonObject gfJsonObject = new GfJsonObject(json);
 
           Status status = 
valueOfDescription(gfJsonObject.getString(JSON_STATUS));
-          List<String> jvmArguments = Arrays
-              
.asList(GfJsonArray.toStringArray(gfJsonObject.getJSONArray(JSON_JVMARGUMENTS)));
+          List<String> jvmArguments = 
gfJsonObject.getJSONArray(JSON_JVMARGUMENTS).toStringList();
 
           return new TestState(status, 
gfJsonObject.getString(JSON_STATUSMESSAGE),
               gfJsonObject.getLong(JSON_TIMESTAMP), 
gfJsonObject.getString(JSON_LOCATION),
diff --git 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/GfJsonArrayTest.java
 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/GfJsonArrayTest.java
index 3247bf1..ce67c4b 100644
--- 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/GfJsonArrayTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/json/GfJsonArrayTest.java
@@ -59,15 +59,15 @@ public class GfJsonArrayTest {
     gfJsonArray = new GfJsonArray(new String[] {"a", "b", "c"});
 
     assertThat(gfJsonArray.size()).isEqualTo(3);
-    assertThat(gfJsonArray.get(0)).isEqualTo("a");
-    assertThat(gfJsonArray.get(1)).isEqualTo("b");
-    assertThat(gfJsonArray.get(2)).isEqualTo("c");
+    assertThat(gfJsonArray.getString(0)).isEqualTo("a");
+    assertThat(gfJsonArray.getString(1)).isEqualTo("b");
+    assertThat(gfJsonArray.getString(2)).isEqualTo("c");
   }
 
   @Test
   public void addSingleObject() throws Exception {
     gfJsonArray.put("a");
-    assertThat(gfJsonArray.get(0)).isEqualTo("a");
+    assertThat(gfJsonArray.getString(0)).isEqualTo("a");
     assertThat(gfJsonArray.toString()).isEqualTo("[\"a\"]");
   }
 
@@ -77,9 +77,9 @@ public class GfJsonArrayTest {
     gfJsonArray.put("b");
     gfJsonArray.put("c");
 
-    assertThat(gfJsonArray.get(0)).isEqualTo("a");
-    assertThat(gfJsonArray.get(1)).isEqualTo("b");
-    assertThat(gfJsonArray.get(2)).isEqualTo("c");
+    assertThat(gfJsonArray.getString(0)).isEqualTo("a");
+    assertThat(gfJsonArray.getString(1)).isEqualTo("b");
+    assertThat(gfJsonArray.getString(2)).isEqualTo("c");
     assertThat(gfJsonArray.toString()).isEqualTo("[\"a\",\"b\",\"c\"]");
   }
 
diff --git 
a/geode-dunit/src/main/java/org/apache/geode/management/internal/cli/HeadlessGfsh.java
 
b/geode-dunit/src/main/java/org/apache/geode/management/internal/cli/HeadlessGfsh.java
index f395e36..2a31f6f 100644
--- 
a/geode-dunit/src/main/java/org/apache/geode/management/internal/cli/HeadlessGfsh.java
+++ 
b/geode-dunit/src/main/java/org/apache/geode/management/internal/cli/HeadlessGfsh.java
@@ -105,6 +105,9 @@ public class HeadlessGfsh implements ResultHandler {
     if (!success && shell.output != null) {
       outputString = shell.output.toString();
       shell.output.reset();
+      System.out.println(
+          "Bruce: HeadlessGfsh.executeCommand setting gfsh.outputString to " + 
outputString);
+      Thread.dumpStack();
     }
     return success;
   }
@@ -117,6 +120,11 @@ public class HeadlessGfsh implements ResultHandler {
   @Override
   public void handleExecutionResult(Object result, String sysout) {
     queue.add(result);
+    System.out.println("Bruce: HeadlessGfsh.handleExecutionResult result class 
is "
+        + result.getClass() + " toString=" + result);
+    System.out
+        .println("Bruce: HeadlessGfsh.handleExecutionResult is setting 
gfsh.outputString to \""
+            + sysout + "\"");
     outputString = sysout;
   }
 
@@ -126,6 +134,7 @@ public class HeadlessGfsh implements ResultHandler {
       return null;
     try {
       Object result = queue.poll(timeout, TimeUnit.SECONDS);
+      // System.out.println("Bruce: HeadlessGfsh.getResult found " + result);
       queue.clear();
       if (!(result instanceof 
org.apache.geode.management.internal.cli.result.CommandResult)) {
         if (result == null) {
@@ -206,6 +215,8 @@ public class HeadlessGfsh implements ResultHandler {
     @Override
     protected void handleExecutionResult(Object result) {
       if (!result.equals(ERROR_RESULT)) {
+        System.out
+            .println("HeadlessGfsh.handleExecutionResult output is \"" + 
output.toString() + "\"");
         super.handleExecutionResult(result);
         handler.handleExecutionResult(result, output.toString());
         output.reset();
diff --git 
a/geode-dunit/src/main/java/org/apache/geode/test/junit/rules/GfshCommandRule.java
 
b/geode-dunit/src/main/java/org/apache/geode/test/junit/rules/GfshCommandRule.java
index eb25ebf..3e3fc0d 100644
--- 
a/geode-dunit/src/main/java/org/apache/geode/test/junit/rules/GfshCommandRule.java
+++ 
b/geode-dunit/src/main/java/org/apache/geode/test/junit/rules/GfshCommandRule.java
@@ -256,6 +256,8 @@ public class GfshCommandRule extends 
DescribedExternalResource {
     } catch (InterruptedException e) {
       throw new RuntimeException(e);
     }
+    System.out
+        .println("Bruce: GfshCommandRule.executeCommand gfsh.outputString=" + 
gfsh.outputString);
     if (StringUtils.isBlank(gfsh.outputString) && result != null
         && !result.getMessageFromContent().isEmpty()) {
       if (result.getStatus() == Result.Status.ERROR) {

Reply via email to