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

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

Introduction

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

Prototype

@Override
    public final void afterPropertiesSet() 

Source Link

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");
    }//ww w  .j  ava  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);
    }

}