INT-1021, added check for 0 when checking for superseding messages, added test

This commit is contained in:
Oleg Zhurakousky
2010-03-12 03:43:05 +00:00
parent 2b3bdd9e8c
commit 42a88d4f28
2 changed files with 29 additions and 21 deletions

View File

@@ -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;
}

View File

@@ -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));
}
}