use of org.springframework.messaging.support.ChannelInterceptor in project spring-integration by spring-projects.
the class EnableIntegrationTests method testParentChildAnnotationConfiguration.
@Test
public void testParentChildAnnotationConfiguration() {
AnnotationConfigApplicationContext child = new AnnotationConfigApplicationContext();
child.register(ChildConfiguration.class);
child.setParent(this.context);
child.refresh();
AbstractMessageChannel foo = child.getBean("foo", AbstractMessageChannel.class);
ChannelInterceptor baz = child.getBean("baz", ChannelInterceptor.class);
assertTrue(foo.getChannelInterceptors().contains(baz));
assertFalse(this.output.getChannelInterceptors().contains(baz));
child.close();
}
use of org.springframework.messaging.support.ChannelInterceptor in project spring-integration by spring-projects.
the class GlobalChannelInterceptorProcessor method addMatchingInterceptors.
/**
* Add any interceptor whose pattern matches against the channel's name.
* @param channel the message channel to add interceptors.
* @param beanName the message channel bean name to match the pattern.
*/
public void addMatchingInterceptors(ChannelInterceptorAware channel, String beanName) {
if (logger.isDebugEnabled()) {
logger.debug("Applying global interceptors on channel '" + beanName + "'");
}
List<GlobalChannelInterceptorWrapper> tempInterceptors = new ArrayList<>();
for (GlobalChannelInterceptorWrapper globalChannelInterceptorWrapper : this.positiveOrderInterceptors) {
String[] patterns = globalChannelInterceptorWrapper.getPatterns();
patterns = StringUtils.trimArrayElements(patterns);
if (beanName != null && Boolean.TRUE.equals(PatternMatchUtils.smartMatch(beanName, patterns))) {
tempInterceptors.add(globalChannelInterceptorWrapper);
}
}
Collections.sort(tempInterceptors, this.comparator);
for (GlobalChannelInterceptorWrapper next : tempInterceptors) {
ChannelInterceptor channelInterceptor = next.getChannelInterceptor();
if (!(channelInterceptor instanceof VetoCapableInterceptor) || ((VetoCapableInterceptor) channelInterceptor).shouldIntercept(beanName, channel)) {
channel.addInterceptor(channelInterceptor);
}
}
tempInterceptors.clear();
for (GlobalChannelInterceptorWrapper globalChannelInterceptorWrapper : this.negativeOrderInterceptors) {
String[] patterns = globalChannelInterceptorWrapper.getPatterns();
patterns = StringUtils.trimArrayElements(patterns);
if (beanName != null && Boolean.TRUE.equals(PatternMatchUtils.smartMatch(beanName, patterns))) {
tempInterceptors.add(globalChannelInterceptorWrapper);
}
}
Collections.sort(tempInterceptors, this.comparator);
if (!tempInterceptors.isEmpty()) {
for (int i = tempInterceptors.size() - 1; i >= 0; i--) {
ChannelInterceptor channelInterceptor = tempInterceptors.get(i).getChannelInterceptor();
if (!(channelInterceptor instanceof VetoCapableInterceptor) || ((VetoCapableInterceptor) channelInterceptor).shouldIntercept(beanName, channel)) {
channel.addInterceptor(0, channelInterceptor);
}
}
}
}
use of org.springframework.messaging.support.ChannelInterceptor in project spring-integration by spring-projects.
the class MessageChannelsMonitorIntegrationTests method doTest.
private void doTest(String config, String channelName) throws Exception {
ClassPathXmlApplicationContext context = createContext(config, channelName);
try {
int before = service.getCounter();
CountDownLatch latch = new CountDownLatch(1);
service.setLatch(latch);
channel.send(new GenericMessage<String>("bar"));
assertTrue(latch.await(10, TimeUnit.SECONDS));
assertEquals(before + 1, service.getCounter());
// The handler monitor is registered under the endpoint id (since it is explicit)
int sends = messageChannelsMonitor.getChannelSendRate("" + channel).getCount();
assertEquals("No statistics for input channel", 1, sends, 0.01);
assertThat(channel, Matchers.instanceOf(ChannelInterceptorAware.class));
List<ChannelInterceptor> channelInterceptors = ((ChannelInterceptorAware) channel).getChannelInterceptors();
assertEquals(1, channelInterceptors.size());
assertThat(channelInterceptors.get(0), Matchers.instanceOf(WireTap.class));
} finally {
context.close();
}
}
use of org.springframework.messaging.support.ChannelInterceptor in project spring-integration by spring-projects.
the class GlobalChannelInterceptorTests method testJmsChannel.
@Test
public void testJmsChannel() {
ActiveMqTestUtils.prepare();
ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("GlobalChannelInterceptorTests-context.xml", GlobalChannelInterceptorTests.class);
ChannelInterceptorAware jmsChannel = context.getBean("jmsChannel", AbstractMessageChannel.class);
List<ChannelInterceptor> interceptors = jmsChannel.getChannelInterceptors();
assertNotNull(interceptors);
assertEquals(1, interceptors.size());
assertTrue(interceptors.get(0) instanceof SampleInterceptor);
context.close();
}
use of org.springframework.messaging.support.ChannelInterceptor in project spring-integration by spring-projects.
the class JmsChannelParserTests method queueChannelWithInterceptors.
@Test
@SuppressWarnings("unchecked")
public void queueChannelWithInterceptors() {
assertEquals(SubscribableJmsChannel.class, queueChannelWithInterceptors.getClass());
SubscribableJmsChannel channel = (SubscribableJmsChannel) queueChannelWithInterceptors;
DirectFieldAccessor accessor = new DirectFieldAccessor(channel);
List<ChannelInterceptor> interceptors = (List<ChannelInterceptor>) new DirectFieldAccessor(accessor.getPropertyValue("interceptors")).getPropertyValue("interceptors");
assertEquals(1, interceptors.size());
assertEquals(TestInterceptor.class, interceptors.get(0).getClass());
}
Aggregations