From 73c9ebf4940eeae3e82a6d33bec3fde746ef9b3d Mon Sep 17 00:00:00 2001 From: Benjamin Benoist Date: Wed, 9 Sep 2020 14:54:32 +0200 Subject: [PATCH] Common: fix pattern matching against null in ScrambleMapFunction (close #338) --- .../registry/pii/PiiPseudonymizerEnrichment.scala | 5 +++-- .../registry/pii/PiiPseudonymizerEnrichmentSpec.scala | 8 +++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/modules/common/src/main/scala/com.snowplowanalytics.snowplow.enrich/common/enrichments/registry/pii/PiiPseudonymizerEnrichment.scala b/modules/common/src/main/scala/com.snowplowanalytics.snowplow.enrich/common/enrichments/registry/pii/PiiPseudonymizerEnrichment.scala index 3d851969a..414a183ae 100644 --- a/modules/common/src/main/scala/com.snowplowanalytics.snowplow.enrich/common/enrichments/registry/pii/PiiPseudonymizerEnrichment.scala +++ b/modules/common/src/main/scala/com.snowplowanalytics.snowplow.enrich/common/enrichments/registry/pii/PiiPseudonymizerEnrichment.scala @@ -23,7 +23,7 @@ import io.circe.jackson._ import io.circe.syntax._ import com.fasterxml.jackson.databind.JsonNode -import com.fasterxml.jackson.databind.node.{ArrayNode, ObjectNode, TextNode} +import com.fasterxml.jackson.databind.node.{ArrayNode, NullNode, ObjectNode, TextNode} import com.fasterxml.jackson.databind.ObjectMapper import com.jayway.jsonpath.{Configuration, JsonPath => JJsonPath} @@ -306,8 +306,9 @@ private final case class ScrambleMapFunction( ) arr.add(newValue) case default: AnyRef => arr.add(default) + case null => arr.add(NullNode.getInstance()) } arr - case default: AnyRef => default + case _ => currentValue } } diff --git a/modules/common/src/test/scala/com.snowplowanalytics.snowplow.enrich.common/enrichments/registry/pii/PiiPseudonymizerEnrichmentSpec.scala b/modules/common/src/test/scala/com.snowplowanalytics.snowplow.enrich.common/enrichments/registry/pii/PiiPseudonymizerEnrichmentSpec.scala index 3fab13138..3c124570e 100644 --- a/modules/common/src/test/scala/com.snowplowanalytics.snowplow.enrich.common/enrichments/registry/pii/PiiPseudonymizerEnrichmentSpec.scala +++ b/modules/common/src/test/scala/com.snowplowanalytics.snowplow.enrich.common/enrichments/registry/pii/PiiPseudonymizerEnrichmentSpec.scala @@ -116,7 +116,8 @@ class PiiPseudonymizerEnrichmentSpec extends Specification with ValidatedMatcher | { | "schema": "iglu:com.test/array/jsonschema/1-0-0", | "data": { - | "field" : ["hello", "world"] + | "field" : ["hello", "world"], + | "field2" : null | } | } | ] @@ -347,6 +348,11 @@ class PiiPseudonymizerEnrichmentSpec extends Specification with ValidatedMatcher schemaCriterion = SchemaCriterion("com.test", "array", "jsonschema", 1, 0, 0), jsonPath = "$.field" ), + PiiJson( + fieldMutator = JsonMutators("contexts"), + schemaCriterion = SchemaCriterion("com.test", "array", "jsonschema", 1, 0, 0), + jsonPath = "$.field2" + ), PiiJson( fieldMutator = JsonMutators("unstruct_event"), schemaCriterion = SchemaCriterion("com.mailgun", "message_clicked", "jsonschema", 1, 0, 0),