List of usage examples for org.springframework.integration.handler ServiceActivatingHandler setRequiresReply
public void setRequiresReply(boolean requiresReply)
From source file:org.grails.plugin.platform.events.registry.SpringIntegrationEventsRegistry.java
private void initServiceActivatingHandler(ServiceActivatingHandler serviceActivatingHandler, ListenerId listener, String topic) { if (topic == null || topic.isEmpty()) { throw new RuntimeException("topic name must not be null or empty"); }//from www .j a va 2 s . c om String callBackId = listener.toString(); serviceActivatingHandler.setBeanName(callBackId); serviceActivatingHandler.setChannelResolver(resolver); serviceActivatingHandler.setRequiresReply(true); serviceActivatingHandler.setOutputChannel(outputChannel); String beanIdBase = listener.getClassName(); int counter = 0; String beanId; do { counter++; beanId = beanIdBase + BeanDefinitionReaderUtils.GENERATED_BEAN_NAME_SEPARATOR + counter; } while (beanFactory.containsBean(beanId)); beanFactory.registerSingleton(beanId, serviceActivatingHandler); serviceActivatingHandler.afterPropertiesSet(); SubscribableChannel bridgeChannel = null; SubscribableChannel channel = null; String channelName = listener.getTopic(); try { bridgeChannel = ctx.getBean(channelName, SubscribableChannel.class); } catch (BeansException be) { log.debug("no overriding/existing channel found " + be.getMessage()); } if (bridgeChannel == null || !bridgeChannel.getClass().isAssignableFrom(GrailsPublishSubscribeChannel.class)) { if (bridgeChannel != null) { channelName += "-plugin"; } channel = createChannel(channelName); } else { channel = bridgeChannel; } channel.subscribe(serviceActivatingHandler); if (bridgeChannel != null && !bridgeChannel.getClass().isAssignableFrom(GrailsPublishSubscribeChannel.class)) { BridgeHandler bridgeHandler = new BridgeHandler(); bridgeHandler.setOutputChannel(channel); bridgeChannel.subscribe(bridgeHandler); } }