From 39e293d4ab150da7a8e792b5943ab19d410913e9 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Thu, 23 Sep 2010 17:05:15 -0400 Subject: [PATCH] INT-965 added support for 'interceptors' as a sub-element of JMS channel and publish-subcribe-channel elements --- .../jms/config/spring-integration-jms-2.0.xsd | 11 ++++- .../config/JmsChannelParserTests-context.xml | 13 +++++ .../jms/config/JmsChannelParserTests.java | 49 +++++++++++++++++++ 3 files changed, 72 insertions(+), 1 deletion(-) 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 { + } + }