From 86fb75f615e72368bebbdd6f6c5f99e359e2532c Mon Sep 17 00:00:00 2001 From: Lucas Pedroza Date: Mon, 26 Aug 2024 20:35:27 +0200 Subject: [PATCH 1/2] Use cleaner impl for query tags deser --- .../codec/json/QueryTagsDeserializer.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/fauna/codec/json/QueryTagsDeserializer.java b/src/main/java/com/fauna/codec/json/QueryTagsDeserializer.java index 1c5e28c7..74baee58 100644 --- a/src/main/java/com/fauna/codec/json/QueryTagsDeserializer.java +++ b/src/main/java/com/fauna/codec/json/QueryTagsDeserializer.java @@ -8,8 +8,10 @@ import java.io.IOException; import java.text.MessageFormat; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; +import java.util.stream.Collectors; public class QueryTagsDeserializer extends JsonDeserializer> { @Override @@ -19,18 +21,15 @@ public Map deserialize(JsonParser jp, DeserializationContext dese case VALUE_NULL: return null; case VALUE_STRING: - var raw = jp.getValueAsString(); - Map ret = new HashMap<>(); - if (raw.isEmpty()) { - return ret; - } + var rawString = jp.getValueAsString(); - String[] tagPairs = jp.getValueAsString().split(","); - for (String tagPair : tagPairs) { - String[] tokens = tagPair.split("="); - ret.put(tokens[0], tokens[1]); + if (rawString.isEmpty()) { + return Map.of(); } - return ret; + + return Arrays.stream(rawString.split(",")) + .map(queryTag -> queryTag.split("=")) + .collect(Collectors.toMap(t -> t[0], t -> t[1])); default: throw new JsonParseException(jp, MessageFormat.format("Unexpected token `{0}` deserializing query tags", jp.currentToken())); } From 987ad03fa97757989c33ae3fe95032fb61a8e11c Mon Sep 17 00:00:00 2001 From: David Griffin Date: Mon, 26 Aug 2024 12:02:42 -0700 Subject: [PATCH 2/2] Add filter to ensure tag has key and value. --- src/main/java/com/fauna/codec/json/QueryTagsDeserializer.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/fauna/codec/json/QueryTagsDeserializer.java b/src/main/java/com/fauna/codec/json/QueryTagsDeserializer.java index 74baee58..789d988c 100644 --- a/src/main/java/com/fauna/codec/json/QueryTagsDeserializer.java +++ b/src/main/java/com/fauna/codec/json/QueryTagsDeserializer.java @@ -29,6 +29,7 @@ public Map deserialize(JsonParser jp, DeserializationContext dese return Arrays.stream(rawString.split(",")) .map(queryTag -> queryTag.split("=")) + .filter(parts -> parts.length >= 2) .collect(Collectors.toMap(t -> t[0], t -> t[1])); default: throw new JsonParseException(jp, MessageFormat.format("Unexpected token `{0}` deserializing query tags", jp.currentToken()));