From 2a196927a9c83c86fc9ba5e9908a757004eadb3e Mon Sep 17 00:00:00 2001 From: Andrea Di Cesare Date: Tue, 19 Dec 2023 11:11:39 +0100 Subject: [PATCH] :bug: Fix BsonUtils.toJson() for empty arrays --- .../src/main/java/org/restheart/utils/BsonUtils.java | 8 ++++---- .../test/java/org/restheart/utils/BsonUtilsTest.java | 10 ++++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/commons/src/main/java/org/restheart/utils/BsonUtils.java b/commons/src/main/java/org/restheart/utils/BsonUtils.java index 6c28cbe00..9b01e2c21 100644 --- a/commons/src/main/java/org/restheart/utils/BsonUtils.java +++ b/commons/src/main/java/org/restheart/utils/BsonUtils.java @@ -672,10 +672,8 @@ public static String toJson(BsonValue bson) { /** * @param bson either a BsonDocument or a BsonArray - * @param mode + * @param mode the JsonMode * @return the minified string representation of the bson value - * @throws IllegalArgumentException if bson is not a BsonDocument or a - * BsonArray */ public static String toJson(BsonValue bson, JsonMode mode) { if (bson == null) { @@ -700,7 +698,9 @@ public static String toJson(BsonValue bson, JsonMode mode) { sb.append("["); bson.asArray().stream().map(e -> toJson(e)).map(e -> minify(e)).forEach(e -> sb.append(e).append(",")); - sb.deleteCharAt(sb.length()-1); // remove last comma + if (sb.length() > 1) { + sb.deleteCharAt(sb.length()-1); // remove last comma + } sb.append("]"); return sb.toString(); diff --git a/commons/src/test/java/org/restheart/utils/BsonUtilsTest.java b/commons/src/test/java/org/restheart/utils/BsonUtilsTest.java index 1a9600f7a..3bbad2077 100644 --- a/commons/src/test/java/org/restheart/utils/BsonUtilsTest.java +++ b/commons/src/test/java/org/restheart/utils/BsonUtilsTest.java @@ -1000,4 +1000,14 @@ public void testXPathGet() { assertFalse(BsonUtils.get(doc, "array[100].idx").isPresent()); assertFalse(BsonUtils.get(doc, "not.exists").isPresent()); } + + + @Test + public void testToJsonEmptyArray() { + var expected = "[]"; + + var actual = BsonUtils.toJson(new BsonArray()); + + assertEquals(expected, actual); + } }