Example usage for org.springframework.integration.handler ServiceActivatingHandler setChannelResolver

List of usage examples for org.springframework.integration.handler ServiceActivatingHandler setChannelResolver

Introduction

In this page you can find the example usage for org.springframework.integration.handler ServiceActivatingHandler setChannelResolver.

Prototype

public void setChannelResolver(DestinationResolver<MessageChannel> channelResolver) 

Source Link

Document

Specify the DestinationResolver strategy to use.

Usage

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 w w w  . ja v  a 2 s  .c o  m

    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);
    }

}