From 42a88d4f288c15a2865ce8084257e05e4e50fab3 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Fri, 12 Mar 2010 03:43:05 +0000 Subject: [PATCH] INT-1021, added check for 0 when checking for superseding messages, added test --- .../integration/aggregator/MessageGroup.java | 21 ++++++++------ .../aggregator/MessageGroupTests.java | 29 +++++++++++-------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/aggregator/MessageGroup.java b/org.springframework.integration/src/main/java/org/springframework/integration/aggregator/MessageGroup.java index 9269454e64..41aca1d3fe 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/aggregator/MessageGroup.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/aggregator/MessageGroup.java @@ -18,6 +18,7 @@ import java.util.*; * * * @author Iwein Fuld + * @author Oleg Zhurakousky */ public class MessageGroup { private final CompletionStrategy completionStrategy; @@ -34,17 +35,19 @@ public class MessageGroup { this.listeners = Collections.unmodifiableList(Arrays.asList(listeners)); } - public boolean hasNoMessageSuperseding(Message message) { + public boolean hasNoMessageSuperseding(Message message) { Integer messageSequenceNumber = message.getHeaders().getSequenceNumber(); - if (messageSequenceNumber == null) { - return true; - } - for (Message member : messages) { - Integer memberSequenceNumber = member.getHeaders().getSequenceNumber(); - if (memberSequenceNumber == messageSequenceNumber) { - return false; + if (messageSequenceNumber > 0){ + if (messageSequenceNumber == null) { + return true; } - } + for (Message member : messages) { + Integer memberSequenceNumber = member.getHeaders().getSequenceNumber(); + if (memberSequenceNumber == messageSequenceNumber) { + return false; + } + } + } return true; } diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/aggregator/MessageGroupTests.java b/org.springframework.integration/src/test/java/org/springframework/integration/aggregator/MessageGroupTests.java index 1458c56e5c..5175f1dd5c 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/aggregator/MessageGroupTests.java +++ b/org.springframework.integration/src/test/java/org/springframework/integration/aggregator/MessageGroupTests.java @@ -1,5 +1,10 @@ package org.springframework.integration.aggregator; +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import java.util.Collections; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -7,22 +12,14 @@ import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.integration.core.Message; import org.springframework.integration.message.MessageBuilder; -import org.springframework.integration.store.MessageStore; - -import java.util.Collections; - -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; /** - * + * @author Iwein Fuld + * @author Oleg Zhurakousky */ @RunWith(MockitoJUnitRunner.class) public class MessageGroupTests { - @Mock - private MessageStore store; - private Object key = new Object(); @Mock @@ -40,10 +37,18 @@ public class MessageGroupTests { @Test public void shouldFindSupersedingMessages() { - final Message message1 = MessageBuilder.withPayload("test").setCorrelationId("foo").build(); - final Message message2 = MessageBuilder.fromMessage(message1).build(); + final Message message1 = MessageBuilder.withPayload("test").setSequenceNumber(1).build(); + final Message message2 = MessageBuilder.fromMessage(message1).setSequenceNumber(1).build(); assertThat(group.hasNoMessageSuperseding(message1), is(true)); group.add(message2); assertThat(group.hasNoMessageSuperseding(message1), is(false)); } + @Test + public void shouldIgnoreMessagesWithZeroSequenceNumber() { + final Message message1 = MessageBuilder.withPayload("test").build(); + final Message message2 = MessageBuilder.fromMessage(message1).build(); + assertThat(group.hasNoMessageSuperseding(message1), is(true)); + group.add(message2); + assertThat(group.hasNoMessageSuperseding(message1), is(true)); + } }