common: Fix NPE in log arguments
authorGeneviève Bastien <gbastien+lttng@versatic.net>
Fri, 24 Mar 2017 13:58:57 +0000 (09:58 -0400)
committerGenevieve Bastien <gbastien+lttng@versatic.net>
Tue, 28 Mar 2017 22:53:02 +0000 (18:53 -0400)
Loggers should NEVER throw exceptions

Change-Id: I39f7ffd18735c6ee2919b76afaec1e1616702c30
Signed-off-by: Geneviève Bastien <gbastien+lttng@versatic.net>
Reviewed-on: https://git.eclipse.org/r/93809
Reviewed-by: Hudson CI
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Tested-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
common/org.eclipse.tracecompass.common.core.tests/src/org/eclipse/tracecompass/common/core/tests/log/LoggerTest.java
common/org.eclipse.tracecompass.common.core/src/org/eclipse/tracecompass/common/core/log/TraceCompassLogUtils.java

index 1ac78d2c7e3e33d30a7d67ebf0b56cf4f2d0afdc..c8a3a5394d03d1f5a076274d529d0ee54fffb95c 100644 (file)
@@ -516,4 +516,19 @@ public class LoggerTest {
         assertEquals("FINE: {\"ts\":0,\"ph\":\"e\",\"tid\":1,\"name\":\"network connect\",\"cat\":\"net\",\"id\":\"0x1234\",\"args\":{\"msg\":\"OK\"}}", fLog.getMessages().get(6));
     }
 
+    /**
+     * Test that null values in arguments are properly handled
+     */
+    @Test
+    public void testNullArguments() {
+        Logger logger = fLogger;
+        assertNotNull(logger);
+        TraceCompassLogUtils.traceInstant(logger, Level.INFO, "test null value", "nullvalue", null);
+        TraceCompassLogUtils.traceInstant(logger, Level.INFO, "test null key", null, "value");
+
+        fStreamHandler.flush();
+        assertEquals("INFO: {\"ts\":0,\"ph\":\"i\",\"tid\":1,\"name\":\"test null value\",\"args\":{\"nullvalue\":\"null\"}}", fLog.getMessages().get(0));
+        assertEquals("INFO: {\"ts\":0,\"ph\":\"i\",\"tid\":1,\"name\":\"test null key\",\"args\":{\"null\":\"value\"}}", fLog.getMessages().get(1));
+    }
+
 }
index 77ee8534cf2a91765d029e4c2c27278570447e50..79cdbfa2c8d54202bf0d7abeea6a218271863597 100644 (file)
@@ -21,7 +21,6 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.tracecompass.common.core.NonNullUtils;
 
 /**
  * Logger helper
@@ -742,19 +741,19 @@ public final class TraceCompassLogUtils {
                 if (i > 0) {
                     appendTo.append(',');
                 }
-                writeObject(appendTo, keyVal, NonNullUtils.checkNotNull(value));
+                writeObject(appendTo, keyVal, value);
             }
         }
 
         return appendTo.append('}');
     }
 
-    private static StringBuilder writeObject(StringBuilder appendTo, Object key, Object value) {
+    private static StringBuilder writeObject(StringBuilder appendTo, Object key, @Nullable Object value) {
         appendTo.append('"').append(key).append('"').append(':');
         if (value instanceof Number) {
             appendTo.append(value);
         } else {
-            appendTo.append('"').append(value).append('"');
+            appendTo.append('"').append(String.valueOf(value)).append('"');
         }
         return appendTo;
     }
This page took 0.026593 seconds and 5 git commands to generate.