private void resolveObjectToColumns(Map<String, String> columnData, Object value) {
      if (value instanceof PdxInstance) {
        resolvePdxToColumns(columnData, (PdxInstance) value);
      } else if (value instanceof Struct) {
        resolveStructToColumns(columnData, (StructImpl) value);
      } else if (value instanceof UUID) {
        columnData.put("Result", valueToJson(value));
      } else {
        ObjectMapper mapper = GeodeJsonMapper.getMapperWithAlwaysInclusion();
        JsonNode node = mapper.valueToTree(value);

        node.fieldNames().forEachRemaining(field -> {
          try {
            columnData.put(field, mapper.writeValueAsString(node.get(field)));
          } catch (JsonProcessingException e) {
            columnData.put(field, e.getMessage());
          }
        });
      }
    }
This method returns result when flag interactive=false i.e. Command returns result in one go
and does not goes through steps waiting for user input. Method returns CompositeResultData
instead of Result as Command Step is required to add NEXT_STEP information to guide
executionStrategy to route it through final step.
geode-gfsh/src/main/java/org/apache/geode/management/internal/cli/domain/DataCommandResult.java