package com.sequenceiq.cloudbreak.core.flow2.config; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; import javax.annotation.PostConstruct; import javax.annotation.Resource; import javax.inject.Inject; import org.springframework.stereotype.Component; import com.sequenceiq.cloudbreak.core.flow2.Flow2Handler; import com.sequenceiq.cloudbreak.core.flow2.FlowEvent; import reactor.bus.EventBus; import reactor.bus.selector.Selectors; @Component public class Flow2Initializer { @Inject private EventBus reactor; @Inject private Flow2Handler flow2Handler; @Resource private List<FlowConfiguration<?>> flowConfigs; @PostConstruct public void init() { String eventSelector = Stream.concat(Stream.of(Flow2Handler.FLOW_FINAL, Flow2Handler.FLOW_CANCEL), flowConfigs.stream().flatMap(c -> Arrays.stream(c.getEvents())).map(FlowEvent::event) ).distinct().collect(Collectors.joining("|")); reactor.on(Selectors.regex(eventSelector), flow2Handler); } }