diff --git a/spring-integration-core/src/main/java/org/springframework/integration/bus/DefaultErrorChannel.java b/spring-integration-core/src/main/java/org/springframework/integration/bus/DefaultErrorChannel.java
index f22b159b15..04d105c190 100644
--- a/spring-integration-core/src/main/java/org/springframework/integration/bus/DefaultErrorChannel.java
+++ b/spring-integration-core/src/main/java/org/springframework/integration/bus/DefaultErrorChannel.java
@@ -45,7 +45,7 @@ public class DefaultErrorChannel extends RendezvousChannel {
public void postSend(Message> message, MessageChannel channel, boolean sent) {
if (!sent) {
if (logger.isWarnEnabled()) {
- logger.warn("DefaultErrorChannel has reached capacity. Are any handlers subscribed?");
+ logger.warn("Error channel rejected Message. Are any handlers subscribed? " + message);
}
}
}
diff --git a/spring-integration-core/src/test/java/org/springframework/integration/endpoint/ReturnAddressTests.java b/spring-integration-core/src/test/java/org/springframework/integration/endpoint/ReturnAddressTests.java
index 25d5a12e28..c2f4681a6d 100644
--- a/spring-integration-core/src/test/java/org/springframework/integration/endpoint/ReturnAddressTests.java
+++ b/spring-integration-core/src/test/java/org/springframework/integration/endpoint/ReturnAddressTests.java
@@ -34,8 +34,8 @@ public class ReturnAddressTests {
@Test
public void testReturnAddressOverrides() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
- "returnAddressOverrides.xml", this.getClass());
- MessageChannel channel1 = (MessageChannel) context.getBean("channel1");
+ "returnAddressTests.xml", this.getClass());
+ MessageChannel channel1 = (MessageChannel) context.getBean("channel1WithOverride");
MessageChannel replyChannel = (MessageChannel) context.getBean("replyChannel");
context.start();
StringMessage message = new StringMessage("*");
@@ -47,9 +47,9 @@ public class ReturnAddressTests {
}
@Test
- public void testReturnAddressIsFallbackByDefault() {
+ public void testOutputTakesPrecedenceByDefault() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
- "returnAddressIsFallbackByDefault.xml", this.getClass());
+ "returnAddressTests.xml", this.getClass());
MessageChannel channel1 = (MessageChannel) context.getBean("channel1");
MessageChannel replyChannel = (MessageChannel) context.getBean("replyChannel");
context.start();
@@ -61,4 +61,44 @@ public class ReturnAddressTests {
assertEquals("********", response.getPayload());
}
+ @Test
+ public void testOutputTakesPrecedenceAndNoReturnAddress() {
+ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
+ "returnAddressTests.xml", this.getClass());
+ MessageChannel channel4 = (MessageChannel) context.getBean("channel4");
+ MessageChannel replyChannel = (MessageChannel) context.getBean("replyChannel");
+ context.start();
+ StringMessage message = new StringMessage("*");
+ channel4.send(message);
+ Message> response = replyChannel.receive(1000);
+ assertNotNull(response);
+ assertEquals("**", response.getPayload());
+ }
+
+ @Test
+ public void testReturnAddressFallbackButNotAvailable() {
+ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
+ "returnAddressTests.xml", this.getClass());
+ MessageChannel channel3 = (MessageChannel) context.getBean("channel3");
+ MessageChannel errorChannel = (MessageChannel) context.getBean("errorChannel");
+ context.start();
+ StringMessage message = new StringMessage("*");
+ channel3.send(message);
+ Message> errorMessage = errorChannel.receive(1000);
+ assertNotNull(errorMessage.getPayload());
+ }
+
+ @Test
+ public void testOutputFallbackButNotAvailable() {
+ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
+ "returnAddressTests.xml", this.getClass());
+ MessageChannel channel3 = (MessageChannel) context.getBean("channel3WithOverride");
+ MessageChannel errorChannel = (MessageChannel) context.getBean("errorChannel");
+ context.start();
+ StringMessage message = new StringMessage("*");
+ channel3.send(message);
+ Message> errorMessage = errorChannel.receive(1000);
+ assertNotNull(errorMessage.getPayload());
+ }
+
}
diff --git a/spring-integration-core/src/test/java/org/springframework/integration/endpoint/returnAddressIsFallbackByDefault.xml b/spring-integration-core/src/test/java/org/springframework/integration/endpoint/returnAddressIsFallbackByDefault.xml
deleted file mode 100644
index 6f47dcea78..0000000000
--- a/spring-integration-core/src/test/java/org/springframework/integration/endpoint/returnAddressIsFallbackByDefault.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/spring-integration-core/src/test/java/org/springframework/integration/endpoint/returnAddressOverrides.xml b/spring-integration-core/src/test/java/org/springframework/integration/endpoint/returnAddressTests.xml
similarity index 62%
rename from spring-integration-core/src/test/java/org/springframework/integration/endpoint/returnAddressOverrides.xml
rename to spring-integration-core/src/test/java/org/springframework/integration/endpoint/returnAddressTests.xml
index 92e38855f6..193965cb5c 100644
--- a/spring-integration-core/src/test/java/org/springframework/integration/endpoint/returnAddressOverrides.xml
+++ b/spring-integration-core/src/test/java/org/springframework/integration/endpoint/returnAddressTests.xml
@@ -7,18 +7,27 @@
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-core-1.0.xsd">
-
+
+
+
+
+
-
+
+
+
+