package com.sequenceiq.cloudbreak.core.flow2.chain.config;
import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.inject.Inject;
import org.springframework.stereotype.Component;
import com.sequenceiq.cloudbreak.core.flow2.chain.FlowChainHandler;
import com.sequenceiq.cloudbreak.core.flow2.chain.FlowEventChainFactory;
import reactor.bus.EventBus;
import reactor.bus.selector.Selectors;
@Component
public class FlowChainInitializer {
@Inject
private EventBus reactor;
@Inject
private FlowChainHandler flowChainHandler;
@Resource
private List<FlowEventChainFactory> flowChainFactories;
@PostConstruct
public void init() {
String chainSelectors = flowChainFactories.stream().map(FlowEventChainFactory::initEvent).collect(Collectors.joining("|"));
reactor.on(Selectors.regex(chainSelectors), flowChainHandler);
}
}