beanFactory.registerBeanDefinition(beanId, beanDefinition);
ServiceActivatingHandler _serviceActivatingHandler = ctx.getBean(beanId, ServiceActivatingHandler.class);
MessageChannel bridgeChannel = null;
SubscribableChannel channel = null;
String channelName =
(
listener.getNamespace() != null &&
!listener.getNamespace().equalsIgnoreCase(APP_NAMESPACE) ? listener.getNamespace() + "://" : ""
)
+ listener.getTopic();
try {
bridgeChannel = ctx.getBean(channelName, MessageChannel.class);
if (!GrailsPublishSubscribeChannel.class.isAssignableFrom(bridgeChannel.getClass())) {
channel = findOrCreateChannel(channelName + "-local", listener);
if (autoBridge && bridgeChannel.getClass().isAssignableFrom(SubscribableChannel.class)) {
BridgeHandler bridgeHandler = new BridgeHandler(channelName);
bridgeHandler.setOutputChannel(channel);
((SubscribableChannel) bridgeChannel).subscribe(bridgeHandler);
}
} else {
channel = (GrailsPublishSubscribeChannel) bridgeChannel;
}
} catch (BeansException be) {
log.debug("no overriding/existing channel found " + be.getMessage());
channel = findOrCreateChannel(channelName, listener);
}
channel.subscribe(_serviceActivatingHandler);
if (bridgeChannel != channel) {
synchronized (grailsListenerChannels) {
grailsListenerChannels.put(listener, bridgeChannel == null ? channel : bridgeChannel);
}