INT-4349: Allow Number type for int headers

JIRA: https://jira.spring.io/browse/INT-4349

When headers come from the external system there is no guarantee
that special headers (e.g. `sequenceNumber`, `priority` etc.) in the
expected (`Integer`) type.

* Widen `int` headers setting value to the `Number` type
* Return primitive `int` for the `sequenceNumber` and `sequenceSize`
headers since for them `IntegrationMessageHeaderAccessor` never return
null for them
* Remove `SequenceNumberComparator` in favor of `MessageSequenceComparator`
since they are essentially duplicate each other
* Fix tests to deal with primitive `int` already
This commit is contained in:
Artem Bilan
2017-09-28 18:34:52 -04:00
committed by Gary Russell
parent e6225926c4
commit c65584a007
24 changed files with 176 additions and 209 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2008 the original author or authors.
* Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,6 +18,8 @@ package org.springframework.integration.aggregator;
import static org.junit.Assert.assertEquals;
import java.util.Comparator;
import org.junit.Test;
import org.springframework.messaging.Message;
@@ -25,12 +27,13 @@ import org.springframework.integration.support.MessageBuilder;
/**
* @author Mark Fisher
* @author Artem Bilan
*/
public class MessageSequenceComparatorTests {
@Test
public void testLessThan() {
MessageSequenceComparator comparator = new MessageSequenceComparator();
Comparator<Message<?>> comparator = new MessageSequenceComparator();
Message<String> message1 = MessageBuilder.withPayload("test1")
.setSequenceNumber(1).build();
Message<String> message2 = MessageBuilder.withPayload("test2")
@@ -40,7 +43,7 @@ public class MessageSequenceComparatorTests {
@Test
public void testEqual() {
MessageSequenceComparator comparator = new MessageSequenceComparator();
Comparator<Message<?>> comparator = new MessageSequenceComparator();
Message<String> message1 = MessageBuilder.withPayload("test1")
.setSequenceNumber(3).build();
Message<String> message2 = MessageBuilder.withPayload("test2")
@@ -50,7 +53,7 @@ public class MessageSequenceComparatorTests {
@Test
public void testGreaterThan() {
MessageSequenceComparator comparator = new MessageSequenceComparator();
Comparator<Message<?>> comparator = new MessageSequenceComparator();
Message<String> message1 = MessageBuilder.withPayload("test1")
.setSequenceNumber(5).build();
Message<String> message2 = MessageBuilder.withPayload("test2")
@@ -60,7 +63,7 @@ public class MessageSequenceComparatorTests {
@Test
public void testEqualWithDefaultValues() {
MessageSequenceComparator comparator = new MessageSequenceComparator();
Comparator<Message<?>> comparator = new MessageSequenceComparator();
Message<String> message1 = MessageBuilder.withPayload("test1").build();
Message<String> message2 = MessageBuilder.withPayload("test2").build();
assertEquals(0, comparator.compare(message1, message2));

View File

@@ -155,11 +155,11 @@ public class ResequencerTests {
Message<?> reply2 = replyChannel.receive(0);
Message<?> reply3 = replyChannel.receive(0);
assertNotNull(reply1);
assertEquals(new Integer(1), new IntegrationMessageHeaderAccessor(reply1).getSequenceNumber());
assertEquals(1, new IntegrationMessageHeaderAccessor(reply1).getSequenceNumber());
assertNotNull(reply2);
assertEquals(new Integer(2), new IntegrationMessageHeaderAccessor(reply2).getSequenceNumber());
assertEquals(2, new IntegrationMessageHeaderAccessor(reply2).getSequenceNumber());
assertNotNull(reply3);
assertEquals(new Integer(3), new IntegrationMessageHeaderAccessor(reply3).getSequenceNumber());
assertEquals(3, new IntegrationMessageHeaderAccessor(reply3).getSequenceNumber());
}
@Test
@@ -180,18 +180,18 @@ public class ResequencerTests {
Message<?> reply3 = replyChannel.receive(0);
// only messages 1 and 2 should have been received by now
assertNotNull(reply1);
assertEquals(new Integer(1), new IntegrationMessageHeaderAccessor(reply1).getSequenceNumber());
assertEquals(1, new IntegrationMessageHeaderAccessor(reply1).getSequenceNumber());
assertNotNull(reply2);
assertEquals(new Integer(2), new IntegrationMessageHeaderAccessor(reply2).getSequenceNumber());
assertEquals(2, new IntegrationMessageHeaderAccessor(reply2).getSequenceNumber());
assertNull(reply3);
// when sending the last message, the whole sequence must have been sent
this.resequencer.handleMessage(message4);
reply3 = replyChannel.receive(0);
Message<?> reply4 = replyChannel.receive(0);
assertNotNull(reply3);
assertEquals(new Integer(3), new IntegrationMessageHeaderAccessor(reply3).getSequenceNumber());
assertEquals(3, new IntegrationMessageHeaderAccessor(reply3).getSequenceNumber());
assertNotNull(reply4);
assertEquals(new Integer(4), new IntegrationMessageHeaderAccessor(reply4).getSequenceNumber());
assertEquals(4, new IntegrationMessageHeaderAccessor(reply4).getSequenceNumber());
}
@Test
@@ -230,18 +230,18 @@ public class ResequencerTests {
Message<?> reply3 = replyChannel.receive(0);
// only messages 1 and 2 should have been received by now
assertNotNull(reply1);
assertEquals(new Integer(1), new IntegrationMessageHeaderAccessor(reply1).getSequenceNumber());
assertEquals(1, new IntegrationMessageHeaderAccessor(reply1).getSequenceNumber());
assertNotNull(reply2);
assertEquals(new Integer(2), new IntegrationMessageHeaderAccessor(reply2).getSequenceNumber());
assertEquals(2, new IntegrationMessageHeaderAccessor(reply2).getSequenceNumber());
assertNull(reply3);
// when sending the last message, the whole sequence must have been sent
this.resequencer.handleMessage(message4);
reply3 = replyChannel.receive(0);
Message<?> reply4 = replyChannel.receive(0);
assertNotNull(reply3);
assertEquals(new Integer(3), new IntegrationMessageHeaderAccessor(reply3).getSequenceNumber());
assertEquals(3, new IntegrationMessageHeaderAccessor(reply3).getSequenceNumber());
assertNotNull(reply4);
assertEquals(new Integer(4), new IntegrationMessageHeaderAccessor(reply4).getSequenceNumber());
assertEquals(4, new IntegrationMessageHeaderAccessor(reply4).getSequenceNumber());
}
@Test
@@ -288,7 +288,7 @@ public class ResequencerTests {
Message<?> discard2 = discardChannel.receive(0);
// message2 has been discarded because it came in with the wrong sequence size
assertNotNull(discard1);
assertEquals(new Integer(1), new IntegrationMessageHeaderAccessor(discard1).getSequenceNumber());
assertEquals(1, new IntegrationMessageHeaderAccessor(discard1).getSequenceNumber());
assertNull(discard2);
}
@@ -329,13 +329,13 @@ public class ResequencerTests {
reply3 = replyChannel.receive(0);
Message<?> reply4 = replyChannel.receive(0);
assertNotNull(reply1);
assertEquals(new Integer(1), new IntegrationMessageHeaderAccessor(reply1).getSequenceNumber());
assertEquals(1, new IntegrationMessageHeaderAccessor(reply1).getSequenceNumber());
assertNotNull(reply2);
assertEquals(new Integer(2), new IntegrationMessageHeaderAccessor(reply2).getSequenceNumber());
assertEquals(2, new IntegrationMessageHeaderAccessor(reply2).getSequenceNumber());
assertNotNull(reply3);
assertEquals(new Integer(3), new IntegrationMessageHeaderAccessor(reply3).getSequenceNumber());
assertEquals(3, new IntegrationMessageHeaderAccessor(reply3).getSequenceNumber());
assertNotNull(reply4);
assertEquals(new Integer(4), new IntegrationMessageHeaderAccessor(reply4).getSequenceNumber());
assertEquals(4, new IntegrationMessageHeaderAccessor(reply4).getSequenceNumber());
}
@Test

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2016 the original author or authors.
* Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -82,7 +82,7 @@ public class ResequencerIntegrationTests {
inputChannel.send(message1);
message1 = outputChannel.receive(0);
assertNotNull(message1);
assertEquals((Integer) 1, new IntegrationMessageHeaderAccessor(message1).getSequenceNumber());
assertEquals(1, new IntegrationMessageHeaderAccessor(message1).getSequenceNumber());
assertFalse(message1.getHeaders().containsKey("foo"));
inputChannel.send(message2);
@@ -90,9 +90,9 @@ public class ResequencerIntegrationTests {
message3 = outputChannel.receive(0);
assertNotNull(message2);
assertNotNull(message3);
assertEquals((Integer) 2, new IntegrationMessageHeaderAccessor(message2).getSequenceNumber());
assertEquals(2, new IntegrationMessageHeaderAccessor(message2).getSequenceNumber());
assertTrue(message2.getHeaders().containsKey("foo"));
assertEquals((Integer) 3, new IntegrationMessageHeaderAccessor(message3).getSequenceNumber());
assertEquals(3, new IntegrationMessageHeaderAccessor(message3).getSequenceNumber());
assertFalse(message3.getHeaders().containsKey("foo"));
inputChannel.send(message5);
@@ -108,11 +108,11 @@ public class ResequencerIntegrationTests {
assertNotNull(message4);
assertNotNull(message5);
assertNotNull(message6);
assertEquals((Integer) 4, new IntegrationMessageHeaderAccessor(message4).getSequenceNumber());
assertEquals(4, new IntegrationMessageHeaderAccessor(message4).getSequenceNumber());
assertTrue(message4.getHeaders().containsKey("foo"));
assertEquals((Integer) 5, new IntegrationMessageHeaderAccessor(message5).getSequenceNumber());
assertEquals(5, new IntegrationMessageHeaderAccessor(message5).getSequenceNumber());
assertFalse(message5.getHeaders().containsKey("foo"));
assertEquals((Integer) 6, new IntegrationMessageHeaderAccessor(message6).getSequenceNumber());
assertEquals(6, new IntegrationMessageHeaderAccessor(message6).getSequenceNumber());
assertFalse(message6.getHeaders().containsKey("foo"));
assertEquals(0, store.getMessageGroup("A").getMessages().size());
@@ -148,7 +148,7 @@ public class ResequencerIntegrationTests {
inputChannel.send(message1);
message1 = outputChannel.receive(0);
assertNotNull(message1);
assertEquals((Integer) 1, new IntegrationMessageHeaderAccessor(message1).getSequenceNumber());
assertEquals(1, new IntegrationMessageHeaderAccessor(message1).getSequenceNumber());
}
}

View File

@@ -11,7 +11,7 @@
</channel>
<beans:bean id="messageStore" class="org.springframework.integration.store.SimpleMessageStore" />
<beans:bean id="comparator" class="org.springframework.integration.aggregator.MessageSequenceComparator" />
</beans:beans>

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2010 the original author or authors.
* Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -35,6 +35,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* @author Dave Syer
* @author Artem Bilan
*/
@ContextConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@@ -65,11 +66,11 @@ public class ResequencerWithMessageStoreParserTests {
Message<?> message3 = output.receive(500);
assertNotNull(message1);
assertEquals(new Integer(1), new IntegrationMessageHeaderAccessor(message1).getSequenceNumber());
assertEquals(1, new IntegrationMessageHeaderAccessor(message1).getSequenceNumber());
assertNotNull(message2);
assertEquals(new Integer(2), new IntegrationMessageHeaderAccessor(message2).getSequenceNumber());
assertEquals(2, new IntegrationMessageHeaderAccessor(message2).getSequenceNumber());
assertNotNull(message3);
assertEquals(new Integer(3), new IntegrationMessageHeaderAccessor(message3).getSequenceNumber());
assertEquals(3, new IntegrationMessageHeaderAccessor(message3).getSequenceNumber());
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2016 the original author or authors.
* Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,14 +22,15 @@ import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.springframework.messaging.Message;
import org.springframework.integration.IntegrationMessageHeaderAccessor;
import org.springframework.integration.aggregator.MessageSequenceComparator;
import org.springframework.integration.annotation.Aggregator;
import org.springframework.messaging.Message;
import org.springframework.messaging.support.GenericMessage;
/**
* @author Marius Bogoevici
* @author Artem Bilan
*/
public class TestAggregatorBean {
@@ -38,7 +39,7 @@ public class TestAggregatorBean {
@Aggregator
public Message<?> createSingleMessageFromGroup(List<Message<?>> messages) {
List<Message<?>> sortableList = new ArrayList<Message<?>>(messages);
List<Message<?>> sortableList = new ArrayList<>(messages);
Collections.sort(sortableList, new MessageSequenceComparator());
StringBuffer buffer = new StringBuffer();
Object correlationId = null;
@@ -48,15 +49,15 @@ public class TestAggregatorBean {
correlationId = new IntegrationMessageHeaderAccessor(message).getCorrelationId();
}
}
Message<?> returnedMessage = new GenericMessage<String>(buffer.toString());
Message<?> returnedMessage = new GenericMessage<>(buffer.toString());
if (correlationId != null) {
aggregatedMessages.put(correlationId, returnedMessage);
this.aggregatedMessages.put(correlationId, returnedMessage);
}
return returnedMessage;
}
public ConcurrentMap<Object, Message<?>> getAggregatedMessages() {
return aggregatedMessages;
return this.aggregatedMessages;
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2010 the original author or authors.
* Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,15 +22,16 @@ import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.springframework.messaging.Message;
import org.springframework.integration.IntegrationMessageHeaderAccessor;
import org.springframework.integration.aggregator.MessageSequenceComparator;
import org.springframework.integration.annotation.Aggregator;
import org.springframework.messaging.Message;
import org.springframework.messaging.support.GenericMessage;
import org.springframework.stereotype.Component;
/**
* @author Marius Bogoevici
* @author Artem Bilan
*/
@Component("endpointWithCustomizedAnnotation")
public class TestAnnotatedEndpointWithCustomizedAggregator {
@@ -44,7 +45,7 @@ public class TestAnnotatedEndpointWithCustomizedAggregator {
sendPartialResultsOnExpiry = "true",
sendTimeout = "98765432")
public Message<?> aggregatingMethod(List<Message<?>> messages) {
List<Message<?>> sortableList = new ArrayList<Message<?>>(messages);
List<Message<?>> sortableList = new ArrayList<>(messages);
Collections.sort(sortableList, new MessageSequenceComparator());
StringBuffer buffer = new StringBuffer();
Object correlationId = null;
@@ -54,13 +55,13 @@ public class TestAnnotatedEndpointWithCustomizedAggregator {
correlationId = new IntegrationMessageHeaderAccessor(message).getCorrelationId();
}
}
Message<?> returnedMessage = new GenericMessage<String>(buffer.toString());
Message<?> returnedMessage = new GenericMessage<>(buffer.toString());
aggregatedMessages.put(correlationId, returnedMessage);
return returnedMessage;
}
public ConcurrentMap<Object, Message<?>> getAggregatedMessages() {
return aggregatedMessages;
return this.aggregatedMessages;
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2016 the original author or authors.
* Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,15 +22,16 @@ import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.springframework.messaging.Message;
import org.springframework.integration.IntegrationMessageHeaderAccessor;
import org.springframework.integration.aggregator.MessageSequenceComparator;
import org.springframework.integration.annotation.Aggregator;
import org.springframework.integration.annotation.MessageEndpoint;
import org.springframework.messaging.Message;
import org.springframework.messaging.support.GenericMessage;
/**
* @author Marius Bogoevici
* @author Artem Bilan
*/
@MessageEndpoint("endpointWithDefaultAnnotation")
public class TestAnnotatedEndpointWithDefaultAggregator {
@@ -39,7 +40,7 @@ public class TestAnnotatedEndpointWithDefaultAggregator {
@Aggregator(inputChannel = "inputChannel")
public Message<?> aggregatingMethod(List<Message<?>> messages) {
List<Message<?>> sortableList = new ArrayList<Message<?>>(messages);
List<Message<?>> sortableList = new ArrayList<>(messages);
Collections.sort(sortableList, new MessageSequenceComparator());
StringBuffer buffer = new StringBuffer();
Object correlationId = null;
@@ -49,13 +50,13 @@ public class TestAnnotatedEndpointWithDefaultAggregator {
correlationId = new IntegrationMessageHeaderAccessor(message).getCorrelationId();
}
}
Message<?> returnedMessage = new GenericMessage<String>(buffer.toString());
aggregatedMessages.put(correlationId, returnedMessage);
Message<?> returnedMessage = new GenericMessage<>(buffer.toString());
this.aggregatedMessages.put(correlationId, returnedMessage);
return returnedMessage;
}
public ConcurrentMap<Object, Message<?>> getAggregatedMessages() {
return aggregatedMessages;
return this.aggregatedMessages;
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2010 the original author or authors.
* Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,16 +22,17 @@ import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.springframework.messaging.Message;
import org.springframework.integration.IntegrationMessageHeaderAccessor;
import org.springframework.integration.aggregator.MessageSequenceComparator;
import org.springframework.integration.annotation.Aggregator;
import org.springframework.integration.annotation.MessageEndpoint;
import org.springframework.integration.annotation.ReleaseStrategy;
import org.springframework.messaging.Message;
import org.springframework.messaging.support.GenericMessage;
/**
* @author Marius Bogoevici
* @author Artem Bilan
*/
@MessageEndpoint("endpointWithDefaultAnnotationAndCustomReleaseStrategy")
public class TestAnnotatedEndpointWithReleaseStrategy {
@@ -40,7 +41,7 @@ public class TestAnnotatedEndpointWithReleaseStrategy {
@Aggregator(inputChannel = "inputChannel")
public Message<?> aggregatingMethod(List<Message<?>> messages) {
List<Message<?>> sortableList = new ArrayList<Message<?>>(messages);
List<Message<?>> sortableList = new ArrayList<>(messages);
Collections.sort(sortableList, new MessageSequenceComparator());
StringBuffer buffer = new StringBuffer();
Object correlationId = null;
@@ -50,8 +51,8 @@ public class TestAnnotatedEndpointWithReleaseStrategy {
correlationId = new IntegrationMessageHeaderAccessor(message).getCorrelationId();
}
}
Message<?> returnedMessage = new GenericMessage<String>(buffer.toString());
aggregatedMessages.put(correlationId, returnedMessage);
Message<?> returnedMessage = new GenericMessage<>(buffer.toString());
this.aggregatedMessages.put(correlationId, returnedMessage);
return returnedMessage;
}
@@ -61,7 +62,7 @@ public class TestAnnotatedEndpointWithReleaseStrategy {
}
public ConcurrentMap<Object, Message<?>> getAggregatedMessages() {
return aggregatedMessages;
return this.aggregatedMessages;
}
}

View File

@@ -210,10 +210,10 @@ public class BroadcastingDispatcherTests {
dispatcher.addHandler(target2);
dispatcher.dispatch(new GenericMessage<String>("test"));
assertEquals(2, messages.size());
assertEquals(0, (int) new IntegrationMessageHeaderAccessor(messages.get(0)).getSequenceNumber());
assertEquals(0, (int) new IntegrationMessageHeaderAccessor(messages.get(0)).getSequenceSize());
assertEquals(0, (int) new IntegrationMessageHeaderAccessor(messages.get(1)).getSequenceNumber());
assertEquals(0, (int) new IntegrationMessageHeaderAccessor(messages.get(1)).getSequenceSize());
assertEquals(0, new IntegrationMessageHeaderAccessor(messages.get(0)).getSequenceNumber());
assertEquals(0, new IntegrationMessageHeaderAccessor(messages.get(0)).getSequenceSize());
assertEquals(0, new IntegrationMessageHeaderAccessor(messages.get(1)).getSequenceNumber());
assertEquals(0, new IntegrationMessageHeaderAccessor(messages.get(1)).getSequenceSize());
}
@Test
@@ -231,14 +231,14 @@ public class BroadcastingDispatcherTests {
Object originalId = inputMessage.getHeaders().getId();
dispatcher.dispatch(inputMessage);
assertEquals(3, messages.size());
assertEquals(1, (int) new IntegrationMessageHeaderAccessor(messages.get(0)).getSequenceNumber());
assertEquals(3, (int) new IntegrationMessageHeaderAccessor(messages.get(0)).getSequenceSize());
assertEquals(1, new IntegrationMessageHeaderAccessor(messages.get(0)).getSequenceNumber());
assertEquals(3, new IntegrationMessageHeaderAccessor(messages.get(0)).getSequenceSize());
assertEquals(originalId, new IntegrationMessageHeaderAccessor(messages.get(0)).getCorrelationId());
assertEquals(2, (int) new IntegrationMessageHeaderAccessor(messages.get(1)).getSequenceNumber());
assertEquals(3, (int) new IntegrationMessageHeaderAccessor(messages.get(1)).getSequenceSize());
assertEquals(2, new IntegrationMessageHeaderAccessor(messages.get(1)).getSequenceNumber());
assertEquals(3, new IntegrationMessageHeaderAccessor(messages.get(1)).getSequenceSize());
assertEquals(originalId, new IntegrationMessageHeaderAccessor(messages.get(1)).getCorrelationId());
assertEquals(3, (int) new IntegrationMessageHeaderAccessor(messages.get(2)).getSequenceNumber());
assertEquals(3, (int) new IntegrationMessageHeaderAccessor(messages.get(2)).getSequenceSize());
assertEquals(3, new IntegrationMessageHeaderAccessor(messages.get(2)).getSequenceNumber());
assertEquals(3, new IntegrationMessageHeaderAccessor(messages.get(2)).getSequenceSize());
assertEquals(originalId, new IntegrationMessageHeaderAccessor(messages.get(2)).getCorrelationId());
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2008 the original author or authors.
* Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -34,15 +34,15 @@ public class GenericMessageTests {
@Test
public void testMessageHeadersCopiedFromMap() {
Map<String, Object> headerMap = new HashMap<String, Object>();
headerMap.put("testAttribute", new Integer(123));
headerMap.put("testAttribute", Integer.valueOf(123));
headerMap.put("testProperty", "foo");
headerMap.put(IntegrationMessageHeaderAccessor.SEQUENCE_SIZE, 42);
headerMap.put(IntegrationMessageHeaderAccessor.SEQUENCE_NUMBER, 24);
GenericMessage<String> message = new GenericMessage<String>("test", headerMap);
assertEquals(new Integer(123), message.getHeaders().get("testAttribute"));
assertEquals(123, message.getHeaders().get("testAttribute"));
assertEquals("foo", message.getHeaders().get("testProperty", String.class));
assertEquals(new Integer(42), new IntegrationMessageHeaderAccessor(message).getSequenceSize());
assertEquals(new Integer(24), new IntegrationMessageHeaderAccessor(message).getSequenceNumber());
assertEquals(42, new IntegrationMessageHeaderAccessor(message).getSequenceSize());
assertEquals(24, new IntegrationMessageHeaderAccessor(message).getSequenceNumber());
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2016 the original author or authors.
* Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -47,6 +47,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* @author Mark Fisher
* @author Gary Russell
* @author Artem Bilan
*/
@ContextConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@@ -196,7 +197,7 @@ public class MessageBuilderTests {
@Test
public void testNonDestructiveSet() {
Message<Integer> message1 = MessageBuilder.withPayload(1)
.setPriority(42).build();
.setPriority(42).build();
Message<Integer> message2 = MessageBuilder.fromMessage(message1)
.setHeaderIfAbsent(IntegrationMessageHeaderAccessor.PRIORITY, 13)
.build();
@@ -222,20 +223,20 @@ public class MessageBuilderTests {
@Test
public void testRemove() {
Message<Integer> message1 = MessageBuilder.withPayload(1)
.setHeader("foo", "bar").build();
.setHeader("foo", "bar").build();
Message<Integer> message2 = MessageBuilder.fromMessage(message1)
.removeHeader("foo")
.build();
.removeHeader("foo")
.build();
assertFalse(message2.getHeaders().containsKey("foo"));
}
@Test
public void testSettingToNullRemoves() {
Message<Integer> message1 = MessageBuilder.withPayload(1)
.setHeader("foo", "bar").build();
.setHeader("foo", "bar").build();
Message<Integer> message2 = MessageBuilder.fromMessage(message1)
.setHeader("foo", null)
.build();
.setHeader("foo", null)
.build();
assertFalse(message2.getHeaders().containsKey("foo"));
}
@@ -351,4 +352,13 @@ public class MessageBuilderTests {
assertEquals(original, result);
}
@Test
public void testSequenceNumberAsLong() {
Message<String> message = MessageBuilder.withPayload("foo")
.setHeader(IntegrationMessageHeaderAccessor.SEQUENCE_NUMBER, Long.MAX_VALUE)
.build();
Integer sequenceNumber = new IntegrationMessageHeaderAccessor(message).getSequenceNumber();
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2016 the original author or authors.
* Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -310,12 +310,12 @@ public class RecipientListRouterTests {
assertNotNull(result1a);
assertNotNull(result1b);
assertEquals("test", result1a.getPayload());
assertEquals(0, new IntegrationMessageHeaderAccessor(result1a).getSequenceNumber().intValue());
assertEquals(0, new IntegrationMessageHeaderAccessor(result1a).getSequenceSize().intValue());
assertEquals(0, new IntegrationMessageHeaderAccessor(result1a).getSequenceNumber());
assertEquals(0, new IntegrationMessageHeaderAccessor(result1a).getSequenceSize());
assertNull(new IntegrationMessageHeaderAccessor(result1a).getCorrelationId());
assertEquals("test", result1b.getPayload());
assertEquals(0, new IntegrationMessageHeaderAccessor(result1b).getSequenceNumber().intValue());
assertEquals(0, new IntegrationMessageHeaderAccessor(result1b).getSequenceSize().intValue());
assertEquals(0, new IntegrationMessageHeaderAccessor(result1b).getSequenceNumber());
assertEquals(0, new IntegrationMessageHeaderAccessor(result1b).getSequenceSize());
assertNull(new IntegrationMessageHeaderAccessor(result1b).getCorrelationId());
}
@@ -338,12 +338,12 @@ public class RecipientListRouterTests {
assertNotNull(result1a);
assertNotNull(result1b);
assertEquals("test", result1a.getPayload());
assertEquals(1, new IntegrationMessageHeaderAccessor(result1a).getSequenceNumber().intValue());
assertEquals(2, new IntegrationMessageHeaderAccessor(result1a).getSequenceSize().intValue());
assertEquals(1, new IntegrationMessageHeaderAccessor(result1a).getSequenceNumber());
assertEquals(2, new IntegrationMessageHeaderAccessor(result1a).getSequenceSize());
assertEquals(message.getHeaders().getId(), new IntegrationMessageHeaderAccessor(result1a).getCorrelationId());
assertEquals("test", result1b.getPayload());
assertEquals(2, new IntegrationMessageHeaderAccessor(result1b).getSequenceNumber().intValue());
assertEquals(2, new IntegrationMessageHeaderAccessor(result1b).getSequenceSize().intValue());
assertEquals(2, new IntegrationMessageHeaderAccessor(result1b).getSequenceNumber());
assertEquals(2, new IntegrationMessageHeaderAccessor(result1b).getSequenceSize());
assertEquals(message.getHeaders().getId(), new IntegrationMessageHeaderAccessor(result1b).getCorrelationId());
}
@@ -453,6 +453,7 @@ public class RecipientListRouterTests {
public boolean accept(Message<?> message) {
return true;
}
}
@@ -466,6 +467,7 @@ public class RecipientListRouterTests {
public boolean accept(Message<?> message) {
return false;
}
}
}

View File

@@ -192,12 +192,12 @@ public class RouterParserTests {
assertEquals(originalMessage.getHeaders().getId(), new IntegrationMessageHeaderAccessor(message1).getCorrelationId());
assertEquals(originalMessage.getHeaders().getId(), new IntegrationMessageHeaderAccessor(message2).getCorrelationId());
assertEquals(originalMessage.getHeaders().getId(), new IntegrationMessageHeaderAccessor(message3).getCorrelationId());
assertEquals(new Integer(1), new IntegrationMessageHeaderAccessor(message1).getSequenceNumber());
assertEquals(new Integer(3), new IntegrationMessageHeaderAccessor(message1).getSequenceSize());
assertEquals(new Integer(2), new IntegrationMessageHeaderAccessor(message2).getSequenceNumber());
assertEquals(new Integer(3), new IntegrationMessageHeaderAccessor(message2).getSequenceSize());
assertEquals(new Integer(3), new IntegrationMessageHeaderAccessor(message3).getSequenceNumber());
assertEquals(new Integer(3), new IntegrationMessageHeaderAccessor(message3).getSequenceSize());
assertEquals(1, new IntegrationMessageHeaderAccessor(message1).getSequenceNumber());
assertEquals(3, new IntegrationMessageHeaderAccessor(message1).getSequenceSize());
assertEquals(2, new IntegrationMessageHeaderAccessor(message2).getSequenceNumber());
assertEquals(3, new IntegrationMessageHeaderAccessor(message2).getSequenceSize());
assertEquals(3, new IntegrationMessageHeaderAccessor(message3).getSequenceNumber());
assertEquals(3, new IntegrationMessageHeaderAccessor(message3).getSequenceSize());
}
@Test

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2016 the original author or authors.
* Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -355,13 +355,13 @@ public class MethodInvokingSplitterTests {
List<Message<?>> replies = replyChannel.clear();
Message<?> reply1 = replies.get(0);
assertNotNull(reply1);
assertEquals(new Integer(2), new IntegrationMessageHeaderAccessor(reply1).getSequenceSize());
assertEquals(new Integer(1), new IntegrationMessageHeaderAccessor(reply1).getSequenceNumber());
assertEquals(2, new IntegrationMessageHeaderAccessor(reply1).getSequenceSize());
assertEquals(1, new IntegrationMessageHeaderAccessor(reply1).getSequenceNumber());
assertEquals(message.getHeaders().getId(), new IntegrationMessageHeaderAccessor(reply1).getCorrelationId());
Message<?> reply2 = replies.get(1);
assertNotNull(reply2);
assertEquals(new Integer(2), new IntegrationMessageHeaderAccessor(reply2).getSequenceSize());
assertEquals(new Integer(2), new IntegrationMessageHeaderAccessor(reply2).getSequenceNumber());
assertEquals(2, new IntegrationMessageHeaderAccessor(reply2).getSequenceSize());
assertEquals(2, new IntegrationMessageHeaderAccessor(reply2).getSequenceNumber());
assertEquals(message.getHeaders().getId(), new IntegrationMessageHeaderAccessor(reply2).getCorrelationId());
}
@@ -375,13 +375,13 @@ public class MethodInvokingSplitterTests {
List<Message<?>> replies = replyChannel.clear();
Message<?> reply1 = replies.get(0);
assertNotNull(reply1);
assertEquals(new Integer(2), new IntegrationMessageHeaderAccessor(reply1).getSequenceSize());
assertEquals(new Integer(1), new IntegrationMessageHeaderAccessor(reply1).getSequenceNumber());
assertEquals(2, new IntegrationMessageHeaderAccessor(reply1).getSequenceSize());
assertEquals(1, new IntegrationMessageHeaderAccessor(reply1).getSequenceNumber());
assertEquals(message.getHeaders().getId(), new IntegrationMessageHeaderAccessor(reply1).getCorrelationId());
Message<?> reply2 = replies.get(1);
assertNotNull(reply2);
assertEquals(new Integer(2), new IntegrationMessageHeaderAccessor(reply2).getSequenceSize());
assertEquals(new Integer(2), new IntegrationMessageHeaderAccessor(reply2).getSequenceNumber());
assertEquals(2, new IntegrationMessageHeaderAccessor(reply2).getSequenceSize());
assertEquals(2, new IntegrationMessageHeaderAccessor(reply2).getSequenceNumber());
assertEquals(message.getHeaders().getId(), new IntegrationMessageHeaderAccessor(reply2).getCorrelationId());
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2016 the original author or authors.
* Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -119,17 +119,17 @@ public class SpelSplitterIntegrationTests {
Message<?> c = output.receive(0);
Message<?> d = output.receive(0);
assertEquals("a", a.getPayload());
assertEquals(new Integer(1), new IntegrationMessageHeaderAccessor(a).getSequenceNumber());
assertEquals(new Integer(0), new IntegrationMessageHeaderAccessor(a).getSequenceSize());
assertEquals(1, new IntegrationMessageHeaderAccessor(a).getSequenceNumber());
assertEquals(0, new IntegrationMessageHeaderAccessor(a).getSequenceSize());
assertEquals("b", b.getPayload());
assertEquals(new Integer(2), new IntegrationMessageHeaderAccessor(b).getSequenceNumber());
assertEquals(new Integer(0), new IntegrationMessageHeaderAccessor(b).getSequenceSize());
assertEquals(2, new IntegrationMessageHeaderAccessor(b).getSequenceNumber());
assertEquals(0, new IntegrationMessageHeaderAccessor(b).getSequenceSize());
assertEquals("c", c.getPayload());
assertEquals(new Integer(3), new IntegrationMessageHeaderAccessor(c).getSequenceNumber());
assertEquals(new Integer(0), new IntegrationMessageHeaderAccessor(c).getSequenceSize());
assertEquals(3, new IntegrationMessageHeaderAccessor(c).getSequenceNumber());
assertEquals(0, new IntegrationMessageHeaderAccessor(c).getSequenceSize());
assertEquals("d", d.getPayload());
assertEquals(new Integer(4), new IntegrationMessageHeaderAccessor(d).getSequenceNumber());
assertEquals(new Integer(0), new IntegrationMessageHeaderAccessor(d).getSequenceSize());
assertEquals(4, new IntegrationMessageHeaderAccessor(d).getSequenceNumber());
assertEquals(0, new IntegrationMessageHeaderAccessor(d).getSequenceSize());
assertNull(output.receive(0));
}
@@ -141,17 +141,17 @@ public class SpelSplitterIntegrationTests {
Message<?> c = output.receive(0);
Message<?> d = output.receive(0);
assertEquals("a", a.getPayload());
assertEquals(new Integer(1), new IntegrationMessageHeaderAccessor(a).getSequenceNumber());
assertEquals(new Integer(0), new IntegrationMessageHeaderAccessor(a).getSequenceSize());
assertEquals(1, new IntegrationMessageHeaderAccessor(a).getSequenceNumber());
assertEquals(0, new IntegrationMessageHeaderAccessor(a).getSequenceSize());
assertEquals("b", b.getPayload());
assertEquals(new Integer(2), new IntegrationMessageHeaderAccessor(b).getSequenceNumber());
assertEquals(new Integer(0), new IntegrationMessageHeaderAccessor(b).getSequenceSize());
assertEquals(2, new IntegrationMessageHeaderAccessor(b).getSequenceNumber());
assertEquals(0, new IntegrationMessageHeaderAccessor(b).getSequenceSize());
assertEquals("c", c.getPayload());
assertEquals(new Integer(3), new IntegrationMessageHeaderAccessor(c).getSequenceNumber());
assertEquals(new Integer(0), new IntegrationMessageHeaderAccessor(c).getSequenceSize());
assertEquals(3, new IntegrationMessageHeaderAccessor(c).getSequenceNumber());
assertEquals(0, new IntegrationMessageHeaderAccessor(c).getSequenceSize());
assertEquals("d", d.getPayload());
assertEquals(new Integer(4), new IntegrationMessageHeaderAccessor(d).getSequenceNumber());
assertEquals(new Integer(0), new IntegrationMessageHeaderAccessor(d).getSequenceSize());
assertEquals(4, new IntegrationMessageHeaderAccessor(d).getSequenceNumber());
assertEquals(0, new IntegrationMessageHeaderAccessor(d).getSequenceSize());
assertNull(output.receive(0));
}
@@ -177,6 +177,7 @@ public class SpelSplitterIntegrationTests {
public Iterator<String> splitIterator(String s) {
return Arrays.asList(s.split(",")).iterator();
}
}
}