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`**
This commit is contained in:
committed by
Gary Russell
parent
991d29eb15
commit
6ec2b88e1b
@@ -239,8 +239,9 @@ public class ConfigurableMongoDbMessageStore extends AbstractConfigurableMongoDb
|
||||
@Override
|
||||
public Iterator<MessageGroup> iterator() {
|
||||
Query query = Query.query(Criteria.where(MessageDocumentFields.GROUP_ID).exists(true));
|
||||
Iterable<String> groupIds = getMongoTemplate().getCollection(collectionName)
|
||||
.distinct(MessageDocumentFields.GROUP_ID, query.getQueryObject(), String.class);
|
||||
Iterable<Object> groupIds =
|
||||
getMongoTemplate()
|
||||
.findDistinct(query, MessageDocumentFields.GROUP_ID, this.collectionName, Object.class);
|
||||
|
||||
return StreamSupport.stream(groupIds.spliterator(), false)
|
||||
.map(this::getMessageGroup)
|
||||
|
||||
@@ -367,8 +367,7 @@ public class MongoDbMessageStore extends AbstractMessageGroupStore
|
||||
|
||||
Query query = Query.query(Criteria.where(GROUP_ID_KEY).exists(true));
|
||||
|
||||
Iterable<String> groupIds = this.template.getCollection(this.collectionName)
|
||||
.distinct(GROUP_ID_KEY, query.getQueryObject(), String.class);
|
||||
Iterable<Object> groupIds = this.template.findDistinct(query, GROUP_ID_KEY, this.collectionName, Object.class);
|
||||
|
||||
for (Object groupId : groupIds) {
|
||||
messageGroups.add(getMessageGroup(groupId));
|
||||
|
||||
@@ -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<MessageGroup> iterator = store3.iterator();
|
||||
|
||||
Reference in New Issue
Block a user