INT-1021, added check for 0 when checking for superseding messages, added test
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user