INT-1690: fix bugs in MessageBuilder re sequenceDetails
This commit is contained in:
@@ -184,8 +184,8 @@ public final class MessageBuilder<T> {
|
||||
else {
|
||||
incomingSequenceDetails = new ArrayList<List<Object>>(incomingSequenceDetails);
|
||||
}
|
||||
incomingSequenceDetails.add(Arrays.asList(incomingCorrelationId, headers
|
||||
.get(MessageHeaders.SEQUENCE_NUMBER), headers.get(MessageHeaders.SEQUENCE_SIZE)));
|
||||
incomingSequenceDetails.add(Arrays.asList(incomingCorrelationId,
|
||||
headers.get(MessageHeaders.SEQUENCE_NUMBER), headers.get(MessageHeaders.SEQUENCE_SIZE)));
|
||||
incomingSequenceDetails = Collections.unmodifiableList(incomingSequenceDetails);
|
||||
}
|
||||
if (incomingSequenceDetails != null) {
|
||||
@@ -207,13 +207,18 @@ public final class MessageBuilder<T> {
|
||||
setCorrelationId(sequenceDetails.get(0));
|
||||
Integer sequenceNumber = (Integer) sequenceDetails.get(1);
|
||||
Integer sequenceSize = (Integer) sequenceDetails.get(2);
|
||||
if (sequenceSize > 0) {
|
||||
if (sequenceNumber != null) {
|
||||
setSequenceNumber(sequenceNumber);
|
||||
}
|
||||
if (sequenceSize != null) {
|
||||
setSequenceSize(sequenceSize);
|
||||
}
|
||||
if (!incomingSequenceDetails.isEmpty()) {
|
||||
headers.put(MessageHeaders.SEQUENCE_DETAILS, incomingSequenceDetails);
|
||||
}
|
||||
else {
|
||||
headers.remove(MessageHeaders.SEQUENCE_DETAILS);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -19,12 +19,12 @@ package org.springframework.integration.message;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotSame;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.integration.Message;
|
||||
import org.springframework.integration.MessageHeaders;
|
||||
import org.springframework.integration.support.MessageBuilder;
|
||||
@@ -163,5 +163,43 @@ public class MessageBuilderTests {
|
||||
.build();
|
||||
assertFalse(message2.getHeaders().containsKey("foo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPushAndPopSequenceDetails() throws Exception {
|
||||
Message<Integer> message1 = MessageBuilder.withPayload(1).pushSequenceDetails("foo", 1, 2).build();
|
||||
assertFalse(message1.getHeaders().containsKey(MessageHeaders.SEQUENCE_DETAILS));
|
||||
Message<Integer> message2 = MessageBuilder.fromMessage(message1).pushSequenceDetails("bar", 1, 1).build();
|
||||
assertTrue(message2.getHeaders().containsKey(MessageHeaders.SEQUENCE_DETAILS));
|
||||
Message<Integer> message3 = MessageBuilder.fromMessage(message2).popSequenceDetails().build();
|
||||
assertFalse(message3.getHeaders().containsKey(MessageHeaders.SEQUENCE_DETAILS));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPushAndPopSequenceDetailsWhenNoCorrelationId() throws Exception {
|
||||
Message<Integer> message1 = MessageBuilder.withPayload(1).build();
|
||||
assertFalse(message1.getHeaders().containsKey(MessageHeaders.SEQUENCE_DETAILS));
|
||||
Message<Integer> message2 = MessageBuilder.fromMessage(message1).pushSequenceDetails("bar", 1, 1).build();
|
||||
assertFalse(message2.getHeaders().containsKey(MessageHeaders.SEQUENCE_DETAILS));
|
||||
Message<Integer> message3 = MessageBuilder.fromMessage(message2).popSequenceDetails().build();
|
||||
assertFalse(message3.getHeaders().containsKey(MessageHeaders.SEQUENCE_DETAILS));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPopSequenceDetailsWhenNotPopped() throws Exception {
|
||||
Message<Integer> message1 = MessageBuilder.withPayload(1).build();
|
||||
assertFalse(message1.getHeaders().containsKey(MessageHeaders.SEQUENCE_DETAILS));
|
||||
Message<Integer> message2 = MessageBuilder.fromMessage(message1).popSequenceDetails().build();
|
||||
assertFalse(message2.getHeaders().containsKey(MessageHeaders.SEQUENCE_DETAILS));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPushAndPopSequenceDetailsWhenNoSequence() throws Exception {
|
||||
Message<Integer> message1 = MessageBuilder.withPayload(1).setCorrelationId("foo").build();
|
||||
assertFalse(message1.getHeaders().containsKey(MessageHeaders.SEQUENCE_DETAILS));
|
||||
Message<Integer> message2 = MessageBuilder.fromMessage(message1).pushSequenceDetails("bar", 1, 1).build();
|
||||
assertTrue(message2.getHeaders().containsKey(MessageHeaders.SEQUENCE_DETAILS));
|
||||
Message<Integer> message3 = MessageBuilder.fromMessage(message2).popSequenceDetails().build();
|
||||
assertFalse(message3.getHeaders().containsKey(MessageHeaders.SEQUENCE_DETAILS));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user