This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-2.25.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-2.25.x by this push:
new 0ddcfaf [Backport] fix(mongodb): converter failure (#5192)
0ddcfaf is described below
commit 0ddcfaf2efd5d30871e21a91a3c1bc3d4efcc978
Author: Pasquale Congiusti <[email protected]>
AuthorDate: Wed Mar 10 13:00:07 2021 +0100
[Backport] fix(mongodb): converter failure (#5192)
Backporting an issue fixed via #5177
---
.../converters/MongoDbBasicConverters.java | 11 +++++++++--
.../component/mongodb3/MongoDbConversionsTest.java | 22 ++++++++++++++++++++++
2 files changed, 31 insertions(+), 2 deletions(-)
diff --git
a/components/camel-mongodb3/src/main/java/org/apache/camel/component/mongodb3/converters/MongoDbBasicConverters.java
b/components/camel-mongodb3/src/main/java/org/apache/camel/component/mongodb3/converters/MongoDbBasicConverters.java
index c03345f..f77d725 100644
---
a/components/camel-mongodb3/src/main/java/org/apache/camel/component/mongodb3/converters/MongoDbBasicConverters.java
+++
b/components/camel-mongodb3/src/main/java/org/apache/camel/component/mongodb3/converters/MongoDbBasicConverters.java
@@ -110,9 +110,11 @@ public final class MongoDbBasicConverters {
return true;
}
- @Converter
+ @Converter(allowNull = true)
public static List<Bson> fromStringToList(String value) {
-
+ if (!isArrayNotation(value)) {
+ return null;
+ }
final CodecRegistry codecRegistry =
CodecRegistries.fromProviders(Arrays.asList(new ValueCodecProvider(), new
BsonValueCodecProvider(), new DocumentCodecProvider()));
JsonReader reader = new JsonReader(value);
@@ -128,4 +130,9 @@ public final class MongoDbBasicConverters {
return answer;
}
+ private static boolean isArrayNotation(String value) {
+ return value != null && !value.isEmpty() && value.length() > 1 &&
value.charAt(0) == '['
+ && value.charAt(value.length() - 1) == ']';
+ }
+
}
diff --git
a/components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbConversionsTest.java
b/components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbConversionsTest.java
index aaefc72..bbd5cd9 100644
---
a/components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbConversionsTest.java
+++
b/components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbConversionsTest.java
@@ -18,11 +18,14 @@ package org.apache.camel.component.mongodb3;
import java.io.ByteArrayInputStream;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mongodb3.converters.MongoDbBasicConverters;
import org.apache.camel.converter.IOConverter;
import org.bson.Document;
+import org.bson.conversions.Bson;
import org.junit.Test;
import static com.mongodb.client.model.Filters.eq;
@@ -117,4 +120,23 @@ public class MongoDbConversionsTest extends
AbstractMongoDbTest {
// CHECKSTYLE:ON
}
+ @Test
+ public void shouldConvertJsonStringListToBSONList() {
+ String jsonListArray = "[{\"key\":\"value1\"}, {\"key\":\"value2\"}]";
+ List<Bson> bsonList =
MongoDbBasicConverters.fromStringToList(jsonListArray);
+ assertNotNull(bsonList);
+ assertEquals(2, bsonList.size());
+
+ String jsonEmptyArray = "[]";
+ bsonList = MongoDbBasicConverters.fromStringToList(jsonEmptyArray);
+ assertNotNull(bsonList);
+ assertEquals(0, bsonList.size());
+ }
+
+ @Test
+ public void shouldNotConvertJsonStringListToBSONList() {
+ String jsonSingleValue = "{\"key\":\"value1\"}";
+ List<Bson> bsonList =
MongoDbBasicConverters.fromStringToList(jsonSingleValue);
+ assertNull(bsonList);
+ }
}