From 58cb653d4171e17a119425443726a4d3ce2b73b5 Mon Sep 17 00:00:00 2001 From: Guillaume Polaert Date: Fri, 28 Jul 2017 12:36:24 +0200 Subject: [PATCH] improving the normalizer --- .../trace/agent/integration/MongoHelper.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/dd-java-agent/src/main/java/com/datadoghq/trace/agent/integration/MongoHelper.java b/dd-java-agent/src/main/java/com/datadoghq/trace/agent/integration/MongoHelper.java index 454ccca5a4..d78324c588 100644 --- a/dd-java-agent/src/main/java/com/datadoghq/trace/agent/integration/MongoHelper.java +++ b/dd-java-agent/src/main/java/com/datadoghq/trace/agent/integration/MongoHelper.java @@ -9,6 +9,7 @@ import java.util.Arrays; import java.util.List; import java.util.Map; import lombok.extern.slf4j.Slf4j; +import org.bson.BsonArray; import org.bson.BsonDocument; import org.bson.BsonString; import org.bson.BsonValue; @@ -51,8 +52,6 @@ public class MongoHelper extends DDAgentTracingHelper entry : origin.entrySet()) { + if (WHILDCARD_FIELDS.contains(entry.getKey())) { + // Wildcard fields normalized.put(entry.getKey(), entry.getValue()); } else if (entry.getValue().isDocument()) { + // Nested documents final BsonDocument child = new BsonDocument(); normalized.put(entry.getKey(), child); norm(entry.getValue().asDocument(), child); + } else if (entry.getValue().isArray()) { + // Nested arrays (works only for 1-depth) TODO:recursive pattern? + for (final BsonValue subItemArray : entry.getValue().asArray()) { + final BsonArray array = new BsonArray(); + normalized.put(entry.getKey(), array); + if (subItemArray.isDocument()) { + // Nested array elements are documents + final BsonDocument child = new BsonDocument(); + array.add(child); + norm(subItemArray.asDocument(), child); + } else { + array.add(HIDDEN_CAR); + } + } } else { + // Hide the value normalized.put(entry.getKey(), HIDDEN_CAR); } }