package com.sequenceiq.cloudbreak.core.flow2.config; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.google.common.collect.ImmutableMap; import com.sequenceiq.cloudbreak.core.flow2.FlowEvent; @Configuration public class Flow2Config { @Resource private List<FlowConfiguration<?>> flowConfigs; @Bean public Map<String, FlowConfiguration<?>> flowConfigurationMap() { Map<String, FlowConfiguration<?>> flowConfigMap = new HashMap<>(); for (FlowConfiguration<?> flowConfig : flowConfigs) { for (FlowEvent event : flowConfig.getInitEvents()) { final String key = event.event(); if (flowConfigMap.get(key) != null) { throw new UnsupportedOperationException("Event already registered: " + key); } flowConfigMap.put(key, flowConfig); } } return ImmutableMap.copyOf(flowConfigMap); } }