From 6ec2b88e1b3d7dd00cd0be2b446e626de566eecc Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Thu, 26 Oct 2023 15:29:03 -0400 Subject: [PATCH] GH-8779: MongoDbMS Fix distinct result conversion (#8781) Fixes https://github.com/spring-projects/spring-integration/issues/8779 The `MongoTemplate` has now a `findDistinct()` API with a smart result conversion instead of native driver plain expectations **Cherry-pick to `6.1.x` & `6.0.x`** --- .../mongodb/store/ConfigurableMongoDbMessageStore.java | 5 +++-- .../integration/mongodb/store/MongoDbMessageStore.java | 3 +-- .../mongodb/store/AbstractMongoDbMessageGroupStoreTests.java | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/store/ConfigurableMongoDbMessageStore.java b/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/store/ConfigurableMongoDbMessageStore.java index cb6c809f8f..a4ad345b8e 100644 --- a/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/store/ConfigurableMongoDbMessageStore.java +++ b/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/store/ConfigurableMongoDbMessageStore.java @@ -239,8 +239,9 @@ public class ConfigurableMongoDbMessageStore extends AbstractConfigurableMongoDb @Override public Iterator iterator() { Query query = Query.query(Criteria.where(MessageDocumentFields.GROUP_ID).exists(true)); - Iterable groupIds = getMongoTemplate().getCollection(collectionName) - .distinct(MessageDocumentFields.GROUP_ID, query.getQueryObject(), String.class); + Iterable groupIds = + getMongoTemplate() + .findDistinct(query, MessageDocumentFields.GROUP_ID, this.collectionName, Object.class); return StreamSupport.stream(groupIds.spliterator(), false) .map(this::getMessageGroup) diff --git a/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/store/MongoDbMessageStore.java b/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/store/MongoDbMessageStore.java index 9696ffa387..b00d75a3da 100644 --- a/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/store/MongoDbMessageStore.java +++ b/spring-integration-mongodb/src/main/java/org/springframework/integration/mongodb/store/MongoDbMessageStore.java @@ -367,8 +367,7 @@ public class MongoDbMessageStore extends AbstractMessageGroupStore Query query = Query.query(Criteria.where(GROUP_ID_KEY).exists(true)); - Iterable groupIds = this.template.getCollection(this.collectionName) - .distinct(GROUP_ID_KEY, query.getQueryObject(), String.class); + Iterable groupIds = this.template.findDistinct(query, GROUP_ID_KEY, this.collectionName, Object.class); for (Object groupId : groupIds) { messageGroups.add(getMessageGroup(groupId)); diff --git a/spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/store/AbstractMongoDbMessageGroupStoreTests.java b/spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/store/AbstractMongoDbMessageGroupStoreTests.java index d8385cc178..74698b95df 100644 --- a/spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/store/AbstractMongoDbMessageGroupStoreTests.java +++ b/spring-integration-mongodb/src/test/java/org/springframework/integration/mongodb/store/AbstractMongoDbMessageGroupStoreTests.java @@ -374,7 +374,7 @@ public abstract class AbstractMongoDbMessageGroupStoreTests implements MongoDbCo Message message = new GenericMessage<>("1"); store2.addMessagesToGroup("1", message); store1.addMessagesToGroup("2", new GenericMessage<>("2")); - store2.addMessagesToGroup("3", new GenericMessage<>("3")); + store2.addMessagesToGroup(UUID.randomUUID(), new GenericMessage<>("3")); MessageGroupStore store3 = this.getMessageGroupStore(); Iterator iterator = store3.iterator();