diff --git a/spring-integration-jms/src/main/resources/org/springframework/integration/jms/config/spring-integration-jms-2.0.xsd b/spring-integration-jms/src/main/resources/org/springframework/integration/jms/config/spring-integration-jms-2.0.xsd
index 1eeccb9cf1..f4631428e7 100644
--- a/spring-integration-jms/src/main/resources/org/springframework/integration/jms/config/spring-integration-jms-2.0.xsd
+++ b/spring-integration-jms/src/main/resources/org/springframework/integration/jms/config/spring-integration-jms-2.0.xsd
@@ -106,10 +106,19 @@
]]>
-
+
+
+
+
+
+
+
+
diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsChannelParserTests-context.xml b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsChannelParserTests-context.xml
index 102853cb98..d6671ef9c5 100644
--- a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsChannelParserTests-context.xml
+++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsChannelParserTests-context.xml
@@ -23,6 +23,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsChannelParserTests.java b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsChannelParserTests.java
index d6d7c32469..936c0a8fab 100644
--- a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsChannelParserTests.java
+++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsChannelParserTests.java
@@ -18,18 +18,24 @@ package org.springframework.integration.jms.config;
import static org.junit.Assert.assertEquals;
+import java.util.List;
+
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.Topic;
+import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.DirectFieldAccessor;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.integration.MessageChannel;
+import org.springframework.integration.channel.ChannelInterceptor;
+import org.springframework.integration.channel.interceptor.ChannelInterceptorAdapter;
import org.springframework.integration.jms.SubscribableJmsChannel;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.listener.AbstractMessageListenerContainer;
@@ -69,9 +75,23 @@ public class JmsChannelParserTests {
@Autowired
private MessageChannel channelWithConcurrencySettings;
+ @Autowired
+ private MessageChannel queueChannelWithInterceptors;
+
+ @Autowired
+ private MessageChannel topicChannelWithInterceptors;
+
@Autowired
private Topic topic;
+ @Autowired
+ private AbstractApplicationContext context;
+
+
+ @After
+ public void closeContext() {
+ this.context.close();
+ }
@Test
public void queueReferenceChannel() {
@@ -149,6 +169,31 @@ public class JmsChannelParserTests {
assertEquals(55, container.getMaxConcurrentConsumers());
}
+ @Test
+ @SuppressWarnings("unchecked")
+ public void queueChannelWithInterceptors() {
+ assertEquals(SubscribableJmsChannel.class, queueChannelWithInterceptors.getClass());
+ SubscribableJmsChannel channel = (SubscribableJmsChannel) queueChannelWithInterceptors;
+ DirectFieldAccessor accessor = new DirectFieldAccessor(channel);
+ List interceptors = (List) new DirectFieldAccessor(
+ accessor.getPropertyValue("interceptors")).getPropertyValue("interceptors");
+ assertEquals(1, interceptors.size());
+ assertEquals(TestInterceptor.class, interceptors.get(0).getClass());
+ }
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void topicChannelWithInterceptors() {
+ assertEquals(SubscribableJmsChannel.class, topicChannelWithInterceptors.getClass());
+ SubscribableJmsChannel channel = (SubscribableJmsChannel) topicChannelWithInterceptors;
+ DirectFieldAccessor accessor = new DirectFieldAccessor(channel);
+ List interceptors = (List) new DirectFieldAccessor(
+ accessor.getPropertyValue("interceptors")).getPropertyValue("interceptors");
+ assertEquals(2, interceptors.size());
+ assertEquals(TestInterceptor.class, interceptors.get(0).getClass());
+ assertEquals(TestInterceptor.class, interceptors.get(1).getClass());
+ }
+
static class TestDestinationResolver implements DestinationResolver {
@@ -167,4 +212,8 @@ public class JmsChannelParserTests {
}
}
+
+ static class TestInterceptor extends ChannelInterceptorAdapter {
+ }
+
}