KNOX-2345 - KnoxShellTable must handle NULL cols
diff --git a/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTableRenderer.java b/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTableRenderer.java
index 38f5bd2..ff5b398 100644
--- a/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTableRenderer.java
+++ b/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTableRenderer.java
@@ -166,7 +166,12 @@
// cell value length
for (List<Comparable<? extends Object>> row : tableToRender.rows) {
for (int i = 0; i < row.size(); i++) {
- cellValue = ensureEvenLength(row.get(i).toString());
+ Object o = row.get(i);
+ if (o == null) {
+ o = "NULL";
+ row.set(i, (String) o);
+ }
+ cellValue = ensureEvenLength(o.toString());
if (map.get(i) == null || cellValue.length() > map.get(i)) {
map.put(i, cellValue.length());
}
diff --git a/gateway-shell/src/test/java/org/apache/knox/gateway/shell/table/KnoxShellTableTest.java b/gateway-shell/src/test/java/org/apache/knox/gateway/shell/table/KnoxShellTableTest.java
index 6831e34..e44e6a1 100644
--- a/gateway-shell/src/test/java/org/apache/knox/gateway/shell/table/KnoxShellTableTest.java
+++ b/gateway-shell/src/test/java/org/apache/knox/gateway/shell/table/KnoxShellTableTest.java
@@ -115,6 +115,18 @@
}
@Test
+ public void testNullCellRendering() {
+ KnoxShellTable table = new KnoxShellTable();
+
+ table.header("Column A").header("Column B").header("Column C");
+
+ table.row().value(null).value("456").value("344444444");
+ table.row().value("789").value("012").value("844444444");
+
+ table.toString();
+ }
+
+ @Test
public void testTableSelect() {
String expectedResult = "+------------+------------+--------------+\n"
+ "| Column A | Column B | Column C |\n" + "+------------+------------+--------------+\n"