Refactored PollingDispatcher into separate ChannelPoller and SourcePoller implementations with an AbstractPoller base class.

This commit is contained in:
Mark Fisher
2008-09-07 15:23:17 +00:00
parent f0079d97f2
commit 15f9875b5b
25 changed files with 625 additions and 601 deletions

View File

@@ -25,8 +25,7 @@ import org.junit.Before;
import org.junit.Test;
import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.dispatcher.BroadcastingDispatcher;
import org.springframework.integration.dispatcher.PollingDispatcher;
import org.springframework.integration.endpoint.ChannelPoller;
import org.springframework.integration.message.GenericMessage;
import org.springframework.integration.message.StringMessage;
import org.springframework.integration.scheduling.PollingSchedule;
@@ -38,13 +37,13 @@ public class ByteStreamTargetTests {
private QueueChannel channel;
private PollingDispatcher dispatcher;
private ChannelPoller poller;
@Before
public void initialize() {
this.channel = new QueueChannel(10);
this.dispatcher = new PollingDispatcher(channel, new PollingSchedule(0), new BroadcastingDispatcher());
this.poller = new ChannelPoller(channel, new PollingSchedule(0));
}
@@ -74,12 +73,12 @@ public class ByteStreamTargetTests {
public void testMaxMessagesPerTaskSameAsMessageCount() {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ByteStreamTarget target = new ByteStreamTarget(stream);
dispatcher.setMaxMessagesPerPoll(3);
dispatcher.subscribe(target);
poller.setMaxMessagesPerPoll(3);
poller.subscribe(target);
channel.send(new GenericMessage<byte[]>(new byte[] {1,2,3}), 0);
channel.send(new GenericMessage<byte[]>(new byte[] {4,5,6}), 0);
channel.send(new GenericMessage<byte[]>(new byte[] {7,8,9}), 0);
dispatcher.run();
poller.run();
byte[] result = stream.toByteArray();
assertEquals(9, result.length);
assertEquals(1, result[0]);
@@ -90,12 +89,12 @@ public class ByteStreamTargetTests {
public void testMaxMessagesPerTaskLessThanMessageCount() {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ByteStreamTarget target = new ByteStreamTarget(stream);
dispatcher.setMaxMessagesPerPoll(2);
dispatcher.subscribe(target);
poller.setMaxMessagesPerPoll(2);
poller.subscribe(target);
channel.send(new GenericMessage<byte[]>(new byte[] {1,2,3}), 0);
channel.send(new GenericMessage<byte[]>(new byte[] {4,5,6}), 0);
channel.send(new GenericMessage<byte[]>(new byte[] {7,8,9}), 0);
dispatcher.run();
poller.run();
byte[] result = stream.toByteArray();
assertEquals(6, result.length);
assertEquals(1, result[0]);
@@ -105,13 +104,13 @@ public class ByteStreamTargetTests {
public void testMaxMessagesPerTaskExceedsMessageCount() {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ByteStreamTarget target = new ByteStreamTarget(stream);
dispatcher.setMaxMessagesPerPoll(5);
dispatcher.setReceiveTimeout(0);
dispatcher.subscribe(target);
poller.setMaxMessagesPerPoll(5);
poller.setReceiveTimeout(0);
poller.subscribe(target);
channel.send(new GenericMessage<byte[]>(new byte[] {1,2,3}), 0);
channel.send(new GenericMessage<byte[]>(new byte[] {4,5,6}), 0);
channel.send(new GenericMessage<byte[]>(new byte[] {7,8,9}), 0);
dispatcher.run();
poller.run();
byte[] result = stream.toByteArray();
assertEquals(9, result.length);
assertEquals(1, result[0]);
@@ -121,17 +120,17 @@ public class ByteStreamTargetTests {
public void testMaxMessagesLessThanMessageCountWithMultipleDispatches() {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ByteStreamTarget target = new ByteStreamTarget(stream);
dispatcher.setMaxMessagesPerPoll(2);
dispatcher.setReceiveTimeout(0);
dispatcher.subscribe(target);
poller.setMaxMessagesPerPoll(2);
poller.setReceiveTimeout(0);
poller.subscribe(target);
channel.send(new GenericMessage<byte[]>(new byte[] {1,2,3}), 0);
channel.send(new GenericMessage<byte[]>(new byte[] {4,5,6}), 0);
channel.send(new GenericMessage<byte[]>(new byte[] {7,8,9}), 0);
dispatcher.run();
poller.run();
byte[] result1 = stream.toByteArray();
assertEquals(6, result1.length);
assertEquals(1, result1[0]);
dispatcher.run();
poller.run();
byte[] result2 = stream.toByteArray();
assertEquals(9, result2.length);
assertEquals(1, result2[0]);
@@ -142,17 +141,17 @@ public class ByteStreamTargetTests {
public void testMaxMessagesExceedsMessageCountWithMultipleDispatches() {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ByteStreamTarget target = new ByteStreamTarget(stream);
dispatcher.setMaxMessagesPerPoll(5);
dispatcher.setReceiveTimeout(0);
dispatcher.subscribe(target);
poller.setMaxMessagesPerPoll(5);
poller.setReceiveTimeout(0);
poller.subscribe(target);
channel.send(new GenericMessage<byte[]>(new byte[] {1,2,3}), 0);
channel.send(new GenericMessage<byte[]>(new byte[] {4,5,6}), 0);
channel.send(new GenericMessage<byte[]>(new byte[] {7,8,9}), 0);
dispatcher.run();
poller.run();
byte[] result1 = stream.toByteArray();
assertEquals(9, result1.length);
assertEquals(1, result1[0]);
dispatcher.run();
poller.run();
byte[] result2 = stream.toByteArray();
assertEquals(9, result2.length);
assertEquals(1, result2[0]);
@@ -162,17 +161,17 @@ public class ByteStreamTargetTests {
public void testStreamResetBetweenDispatches() {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ByteStreamTarget target = new ByteStreamTarget(stream);
dispatcher.setMaxMessagesPerPoll(2);
dispatcher.setReceiveTimeout(0);
dispatcher.subscribe(target);
poller.setMaxMessagesPerPoll(2);
poller.setReceiveTimeout(0);
poller.subscribe(target);
channel.send(new GenericMessage<byte[]>(new byte[] {1,2,3}), 0);
channel.send(new GenericMessage<byte[]>(new byte[] {4,5,6}), 0);
channel.send(new GenericMessage<byte[]>(new byte[] {7,8,9}), 0);
dispatcher.run();
poller.run();
byte[] result1 = stream.toByteArray();
assertEquals(6, result1.length);
stream.reset();
dispatcher.run();
poller.run();
byte[] result2 = stream.toByteArray();
assertEquals(3, result2.length);
assertEquals(7, result2[0]);
@@ -182,18 +181,18 @@ public class ByteStreamTargetTests {
public void testStreamWriteBetweenDispatches() throws IOException {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ByteStreamTarget target = new ByteStreamTarget(stream);
dispatcher.setMaxMessagesPerPoll(2);
dispatcher.setReceiveTimeout(0);
dispatcher.subscribe(target);
poller.setMaxMessagesPerPoll(2);
poller.setReceiveTimeout(0);
poller.subscribe(target);
channel.send(new GenericMessage<byte[]>(new byte[] {1,2,3}), 0);
channel.send(new GenericMessage<byte[]>(new byte[] {4,5,6}), 0);
channel.send(new GenericMessage<byte[]>(new byte[] {7,8,9}), 0);
dispatcher.run();
poller.run();
byte[] result1 = stream.toByteArray();
assertEquals(6, result1.length);
stream.write(new byte[] {123});
stream.flush();
dispatcher.run();
poller.run();
byte[] result2 = stream.toByteArray();
assertEquals(10, result2.length);
assertEquals(1, result2[0]);

View File

@@ -24,8 +24,7 @@ import org.junit.Before;
import org.junit.Test;
import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.dispatcher.BroadcastingDispatcher;
import org.springframework.integration.dispatcher.PollingDispatcher;
import org.springframework.integration.endpoint.ChannelPoller;
import org.springframework.integration.message.GenericMessage;
import org.springframework.integration.message.StringMessage;
import org.springframework.integration.scheduling.PollingSchedule;
@@ -37,13 +36,13 @@ public class CharacterStreamTargetTests {
private QueueChannel channel;
private PollingDispatcher dispatcher;
private ChannelPoller poller;
@Before
public void initialize() {
this.channel = new QueueChannel(10);
this.dispatcher = new PollingDispatcher(channel, new PollingSchedule(0), new BroadcastingDispatcher());
this.poller = new ChannelPoller(channel, new PollingSchedule(0));
}
@@ -59,13 +58,13 @@ public class CharacterStreamTargetTests {
public void testTwoStringsAndNoNewLinesByDefault() {
StringWriter writer = new StringWriter();
CharacterStreamTarget target = new CharacterStreamTarget(writer);
dispatcher.subscribe(target);
dispatcher.setMaxMessagesPerPoll(1);
poller.subscribe(target);
poller.setMaxMessagesPerPoll(1);
channel.send(new StringMessage("foo"), 0);
channel.send(new StringMessage("bar"), 0);
dispatcher.run();
poller.run();
assertEquals("foo", writer.toString());
dispatcher.run();
poller.run();
assertEquals("foobar", writer.toString());
}
@@ -74,14 +73,14 @@ public class CharacterStreamTargetTests {
StringWriter writer = new StringWriter();
CharacterStreamTarget target = new CharacterStreamTarget(writer);
target.setShouldAppendNewLine(true);
dispatcher.subscribe(target);
dispatcher.setMaxMessagesPerPoll(1);
poller.subscribe(target);
poller.setMaxMessagesPerPoll(1);
channel.send(new StringMessage("foo"), 0);
channel.send(new StringMessage("bar"), 0);
dispatcher.run();
poller.run();
String newLine = System.getProperty("line.separator");
assertEquals("foo" + newLine, writer.toString());
dispatcher.run();
poller.run();
assertEquals("foo" + newLine + "bar" + newLine, writer.toString());
}
@@ -89,11 +88,11 @@ public class CharacterStreamTargetTests {
public void testMaxMessagesPerTaskSameAsMessageCount() {
StringWriter writer = new StringWriter();
CharacterStreamTarget target = new CharacterStreamTarget(writer);
dispatcher.setMaxMessagesPerPoll(2);
dispatcher.subscribe(target);
poller.setMaxMessagesPerPoll(2);
poller.subscribe(target);
channel.send(new StringMessage("foo"), 0);
channel.send(new StringMessage("bar"), 0);
dispatcher.run();
poller.run();
assertEquals("foobar", writer.toString());
}
@@ -101,13 +100,13 @@ public class CharacterStreamTargetTests {
public void testMaxMessagesPerTaskExceedsMessageCountWithAppendedNewLines() {
StringWriter writer = new StringWriter();
CharacterStreamTarget target = new CharacterStreamTarget(writer);
dispatcher.setMaxMessagesPerPoll(10);
dispatcher.setReceiveTimeout(0);
dispatcher.subscribe(target);
poller.setMaxMessagesPerPoll(10);
poller.setReceiveTimeout(0);
poller.subscribe(target);
target.setShouldAppendNewLine(true);
channel.send(new StringMessage("foo"), 0);
channel.send(new StringMessage("bar"), 0);
dispatcher.run();
poller.run();
String newLine = System.getProperty("line.separator");
assertEquals("foo" + newLine + "bar" + newLine, writer.toString());
}
@@ -116,11 +115,11 @@ public class CharacterStreamTargetTests {
public void testSingleNonStringObject() {
StringWriter writer = new StringWriter();
CharacterStreamTarget target = new CharacterStreamTarget(writer);
dispatcher.subscribe(target);
dispatcher.setMaxMessagesPerPoll(1);
poller.subscribe(target);
poller.setMaxMessagesPerPoll(1);
TestObject testObject = new TestObject("foo");
channel.send(new GenericMessage<TestObject>(testObject));
dispatcher.run();
poller.run();
assertEquals("foo", writer.toString());
}
@@ -128,14 +127,14 @@ public class CharacterStreamTargetTests {
public void testTwoNonStringObjectWithOutNewLines() {
StringWriter writer = new StringWriter();
CharacterStreamTarget target = new CharacterStreamTarget(writer);
dispatcher.setReceiveTimeout(0);
dispatcher.setMaxMessagesPerPoll(2);
dispatcher.subscribe(target);
poller.setReceiveTimeout(0);
poller.setMaxMessagesPerPoll(2);
poller.subscribe(target);
TestObject testObject1 = new TestObject("foo");
TestObject testObject2 = new TestObject("bar");
channel.send(new GenericMessage<TestObject>(testObject1), 0);
channel.send(new GenericMessage<TestObject>(testObject2), 0);
dispatcher.run();
poller.run();
assertEquals("foobar", writer.toString());
}
@@ -144,14 +143,14 @@ public class CharacterStreamTargetTests {
StringWriter writer = new StringWriter();
CharacterStreamTarget target = new CharacterStreamTarget(writer);
target.setShouldAppendNewLine(true);
dispatcher.setReceiveTimeout(0);
dispatcher.setMaxMessagesPerPoll(2);
dispatcher.subscribe(target);
poller.setReceiveTimeout(0);
poller.setMaxMessagesPerPoll(2);
poller.subscribe(target);
TestObject testObject1 = new TestObject("foo");
TestObject testObject2 = new TestObject("bar");
channel.send(new GenericMessage<TestObject>(testObject1), 0);
channel.send(new GenericMessage<TestObject>(testObject2), 0);
dispatcher.run();
poller.run();
String newLine = System.getProperty("line.separator");
assertEquals("foo" + newLine + "bar" + newLine, writer.toString());
}