From 4231235ca595923149e5800c466acf414c6379af Mon Sep 17 00:00:00 2001 From: Akbar Taufiq Herlangga Date: Thu, 4 Jan 2024 17:46:16 +0700 Subject: [PATCH] Fix JSON date parsing. (#3) --- .../firehose/serializer/MessageToJson.java | 2 +- .../firehose/serializer/MessageToJsonTest.java | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gotocompany/firehose/serializer/MessageToJson.java b/src/main/java/com/gotocompany/firehose/serializer/MessageToJson.java index 69daeaa38..2a081d676 100644 --- a/src/main/java/com/gotocompany/firehose/serializer/MessageToJson.java +++ b/src/main/java/com/gotocompany/firehose/serializer/MessageToJson.java @@ -114,7 +114,7 @@ private JSONObject convertProtoBuffTimeStampToDateTime(JSONObject jsonObject, St Date date; try { - date = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss").parse(timestampObject); + date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").parse(timestampObject); } catch (java.text.ParseException e) { throw new RuntimeException(String.format("Not able to parse date, %s", timestampObject)); } diff --git a/src/test/java/com/gotocompany/firehose/serializer/MessageToJsonTest.java b/src/test/java/com/gotocompany/firehose/serializer/MessageToJsonTest.java index 4d03e9cb3..c67d4fc1e 100644 --- a/src/test/java/com/gotocompany/firehose/serializer/MessageToJsonTest.java +++ b/src/test/java/com/gotocompany/firehose/serializer/MessageToJsonTest.java @@ -42,6 +42,24 @@ public void shouldProperlySerializeEsbMessage() throws DeserializerException { + "\\\"s2Id\\\":\\\"3344472187078705152\\\"}\"}"); } + @Test + public void shouldProperlyHandleMiddayCycle() throws DeserializerException { + MessageToJson messageToJson = new MessageToJson(protoParser, false, true); + + String logMessageWithMidday = "CgYI9/7PoQYSBgiz/8+hBhgNIICAgIDA9/y0LigCMAM\u003d"; + String logKeyWithMidday = "CgYI9/7PoQYSBgiz/8+hBhgNIICAgIDA9/y0LigC"; + Message message = new Message(Base64.getDecoder().decode(logKeyWithMidday.getBytes()), + Base64.getDecoder().decode(logMessageWithMidday.getBytes()), "sample-topic", 0, 100); + String actualOutput = messageToJson.serialize(message); + assertEquals(actualOutput, "{\"logMessage\":\"{\\\"uniqueDrivers\\\":\\\"3\\\"," + + "\\\"windowStartTime\\\":\\\"Apr 10, 2023 12:22:15 PM\\\"," + + "\\\"windowEndTime\\\":\\\"Apr 10, 2023 12:23:15 PM\\\",\\\"s2IdLevel\\\":13,\\\"vehicleType\\\":\\\"BIKE\\\"," + + "\\\"s2Id\\\":\\\"3344472187078705152\\\"}\",\"topic\":\"sample-topic\",\"logKey\":\"{" + + "\\\"windowStartTime\\\":\\\"Apr 10, 2023 12:22:15 PM\\\"," + + "\\\"windowEndTime\\\":\\\"Apr 10, 2023 12:23:15 PM\\\",\\\"s2IdLevel\\\":13,\\\"vehicleType\\\":\\\"BIKE\\\"," + + "\\\"s2Id\\\":\\\"3344472187078705152\\\"}\"}"); + } + @Test public void shouldSerializeWhenKeyIsMissing() throws DeserializerException { MessageToJson messageToJson = new MessageToJson(protoParser, false, true);