From 4d6292b35a8d868a29551d5f2dd7456b60cea74d Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Tue, 4 Mar 2008 22:46:22 +0000 Subject: [PATCH] Added test for a with "datatype" attribute. Also, the MessageSelectingInterceptor now provides the rejected Message to the MessageDeliveryException. --- .../MessageSelectingInterceptor.java | 4 +-- .../channel/MessagePayloadTestComparator.java | 32 +++++++++++++++++++ .../config/ChannelParserTests.java | 22 +++++++++++++ .../config/priorityChannelParserTests.xml | 8 +++-- 4 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 spring-integration-core/src/test/java/org/springframework/integration/channel/MessagePayloadTestComparator.java diff --git a/spring-integration-core/src/main/java/org/springframework/integration/channel/interceptor/MessageSelectingInterceptor.java b/spring-integration-core/src/main/java/org/springframework/integration/channel/interceptor/MessageSelectingInterceptor.java index 410a64d52c..c1381e96c6 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/channel/interceptor/MessageSelectingInterceptor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/channel/interceptor/MessageSelectingInterceptor.java @@ -45,8 +45,8 @@ public class MessageSelectingInterceptor extends ChannelInterceptorAdapter { public boolean preSend(Message message, MessageChannel channel) { for (MessageSelector selector : this.selectors) { if (!selector.accept(message)) { - throw new MessageDeliveryException( - "selector '" + selector + "' did not accept message '" + message + "'"); + throw new MessageDeliveryException(message, + "selector '" + selector + "' did not accept message"); } } return true; diff --git a/spring-integration-core/src/test/java/org/springframework/integration/channel/MessagePayloadTestComparator.java b/spring-integration-core/src/test/java/org/springframework/integration/channel/MessagePayloadTestComparator.java new file mode 100644 index 0000000000..1f4e925e8f --- /dev/null +++ b/spring-integration-core/src/test/java/org/springframework/integration/channel/MessagePayloadTestComparator.java @@ -0,0 +1,32 @@ +/* + * Copyright 2002-2007 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.integration.channel; + +import java.util.Comparator; + +import org.springframework.integration.message.Message; + +/** + * @author Mark Fisher + */ +public class MessagePayloadTestComparator implements Comparator>> { + + public int compare(Message> message1, Message> message2) { + return message1.getPayload().compareTo(message2.getPayload()); + } + +} diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/ChannelParserTests.java b/spring-integration-core/src/test/java/org/springframework/integration/config/ChannelParserTests.java index f1484bba9a..e3210515a0 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/ChannelParserTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/ChannelParserTests.java @@ -246,6 +246,28 @@ public class ChannelParserTests { assertEquals("D", reply4.getPayload()); } + @Test + public void testPriorityChannelWithIntegerDatatypeEnforced() { + ApplicationContext context = new ClassPathXmlApplicationContext( + "priorityChannelParserTests.xml", this.getClass()); + MessageChannel channel = (MessageChannel) context.getBean("integerOnlyPriorityChannel"); + channel.send(new GenericMessage(3)); + channel.send(new GenericMessage(2)); + channel.send(new GenericMessage(1)); + assertEquals(1, channel.receive(0).getPayload()); + assertEquals(2, channel.receive(0).getPayload()); + assertEquals(3, channel.receive(0).getPayload()); + boolean threwException = false; + try { + channel.send(new StringMessage("wrong type")); + } + catch (MessageDeliveryException e) { + assertEquals("wrong type", e.getUndeliveredMessage().getPayload()); + threwException = true; + } + assertTrue(threwException); + } + private static class TestHandler implements MessageHandler { diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/priorityChannelParserTests.xml b/spring-integration-core/src/test/java/org/springframework/integration/config/priorityChannelParserTests.xml index fd4d2aa40c..4490301301 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/priorityChannelParserTests.xml +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/priorityChannelParserTests.xml @@ -9,9 +9,11 @@ - + - + + +