INT-1069: Change MessageGroup interfaces to better match use cases

This commit is contained in:
David Syer
2010-06-18 10:49:43 +00:00
parent d5614ff3e8
commit 4e4cb559d1
17 changed files with 127 additions and 71 deletions

View File

@@ -34,7 +34,7 @@ public class SequenceSizeReleaseStrategyTests {
public void testIncompleteList() {
Message<String> message = MessageBuilder.withPayload("test1")
.setSequenceSize(2).build();
MessageGroup messages = new SimpleMessageGroup("FOO");
SimpleMessageGroup messages = new SimpleMessageGroup("FOO");
messages.add(message);
SequenceSizeReleaseStrategy releaseStrategy = new SequenceSizeReleaseStrategy();
assertFalse(releaseStrategy.canRelease(messages));
@@ -46,7 +46,7 @@ public class SequenceSizeReleaseStrategyTests {
.setSequenceSize(2).build();
Message<String> message2 = MessageBuilder.withPayload("test2")
.setSequenceSize(2).build();
MessageGroup messages = new SimpleMessageGroup("FOO");
SimpleMessageGroup messages = new SimpleMessageGroup("FOO");
messages.add(message1);
messages.add(message2);
SequenceSizeReleaseStrategy releaseStrategy = new SequenceSizeReleaseStrategy();

View File

@@ -34,7 +34,7 @@ public class TimeoutCountSequenceSizeReleaseStrategyTests {
public void testIncompleteList() {
Message<String> message = MessageBuilder.withPayload("test1")
.setSequenceSize(2).build();
MessageGroup messages = new SimpleMessageGroup("FOO");
SimpleMessageGroup messages = new SimpleMessageGroup("FOO");
messages.add(message);
TimeoutCountSequenceSizeReleaseStrategy releaseStrategy = new TimeoutCountSequenceSizeReleaseStrategy();
assertFalse(releaseStrategy.canRelease(messages));
@@ -44,7 +44,7 @@ public class TimeoutCountSequenceSizeReleaseStrategyTests {
public void testIncompleteListWithTimeout() {
Message<String> message = MessageBuilder.withPayload("test1")
.setSequenceSize(2).build();
MessageGroup messages = new SimpleMessageGroup("FOO");
SimpleMessageGroup messages = new SimpleMessageGroup("FOO");
messages.add(message);
TimeoutCountSequenceSizeReleaseStrategy releaseStrategy = new TimeoutCountSequenceSizeReleaseStrategy(TimeoutCountSequenceSizeReleaseStrategy.DEFAULT_THRESHOLD, -100);
assertTrue(releaseStrategy.canRelease(messages));
@@ -54,7 +54,7 @@ public class TimeoutCountSequenceSizeReleaseStrategyTests {
public void testIncompleteListWithCount() {
Message<String> message = MessageBuilder.withPayload("test1")
.setSequenceSize(2).build();
MessageGroup messages = new SimpleMessageGroup("FOO");
SimpleMessageGroup messages = new SimpleMessageGroup("FOO");
messages.add(message);
TimeoutCountSequenceSizeReleaseStrategy releaseStrategy = new TimeoutCountSequenceSizeReleaseStrategy(1, TimeoutCountSequenceSizeReleaseStrategy.DEFAULT_TIMEOUT);
assertTrue(releaseStrategy.canRelease(messages));
@@ -66,7 +66,7 @@ public class TimeoutCountSequenceSizeReleaseStrategyTests {
.setSequenceSize(2).build();
Message<String> message2 = MessageBuilder.withPayload("test2")
.setSequenceSize(2).build();
MessageGroup messages = new SimpleMessageGroup("FOO");
SimpleMessageGroup messages = new SimpleMessageGroup("FOO");
messages.add(message1);
messages.add(message2);
SequenceSizeReleaseStrategy releaseStrategy = new SequenceSizeReleaseStrategy();

View File

@@ -16,15 +16,19 @@
package org.springframework.integration.store;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.junit.Test;
import org.springframework.integration.core.Message;
import org.springframework.integration.message.StringMessage;
import org.springframework.test.util.ReflectionTestUtils;
import java.util.*;
import static org.junit.Assert.assertEquals;
/**
* @author Dave Syer
*/
@@ -68,17 +72,20 @@ public class MessageStoreTests {
return Arrays.asList(testMessages).iterator();
}
public void addMessageToGroup(Object correlationKey, Message<?> message) {
public MessageGroup addMessageToGroup(Object correlationKey, Message<?> message) {
throw new UnsupportedOperationException();
}
public MessageGroup getMessageGroup(Object correlationKey) {
return removed ? new SimpleMessageGroup(correlationKey) : testMessages;
}
public void markMessageGroup(MessageGroup group) {
public MessageGroup markMessageGroup(MessageGroup group) {
throw new UnsupportedOperationException();
}
public void markMessageInGroup(Object key, Message<?> messageToMark) {
public MessageGroup removeMessageFromGroup(Object key, Message<?> messageToMark) {
throw new UnsupportedOperationException();
}
public void removeMessageGroup(Object correlationKey) {

View File

@@ -5,11 +5,9 @@ import static org.junit.Assert.assertThat;
import java.util.Collections;
import org.junit.Before;
import org.junit.Test;
import org.springframework.integration.core.Message;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.integration.store.SimpleMessageGroup;
/**
* @author Iwein Fuld
@@ -20,28 +18,25 @@ public class SimpleMessageGroupTests {
private Object key = new Object();
private MessageGroup group;
@Before
public void buildMessageGroup() {
group = new SimpleMessageGroup(Collections.<Message<?>> emptyList(), key);
}
private SimpleMessageGroup group = new SimpleMessageGroup(Collections.<Message<?>> emptyList(), key);
@Test
public void shouldFindSupersedingMessages() {
final Message<?> message1 = MessageBuilder.withPayload("test").setSequenceNumber(1).build();
final Message<?> message2 = MessageBuilder.fromMessage(message1).setSequenceNumber(1).build();
assertThat(group.add(message1), is(true));
assertThat(group.canAdd(message1), is(true));
group.add(message1);
group.add(message2);
assertThat(group.add(message1), is(false));
assertThat(group.canAdd(message1), is(false));
}
@Test
public void shouldIgnoreMessagesWithZeroSequenceNumber() {
final Message<?> message1 = MessageBuilder.withPayload("test").build();
final Message<?> message2 = MessageBuilder.fromMessage(message1).build();
assertThat(group.add(message1), is(true));
assertThat(group.canAdd(message1), is(true));
group.add(message1);
group.add(message2);
assertThat(group.add(message1), is(true));
assertThat(group.canAdd(message1), is(true));
}
}

View File

@@ -82,6 +82,17 @@ public class SimpleMessageStoreTests {
assertEquals(1, store.getMessageGroup("bar").size());
}
@Test
public void shouldRemoveFromGroup() throws Exception {
SimpleMessageStore store = new SimpleMessageStore();
Message<String> testMessage1 = MessageBuilder.withPayload("foo").build();
store.addMessageToGroup("bar", testMessage1);
Message<?> testMessage2 = store.getMessageGroup("bar").getOne();
MessageGroup group = store.removeMessageFromGroup("bar", testMessage2);
assertEquals(0, group.size());
assertEquals(0, store.getMessageGroup("bar").size());
}
@Test
public void shouldCopyMessageGroup() throws Exception {
SimpleMessageStore store = new SimpleMessageStore();