package org.zalando.actuate.autoconfigure.failsafe;

import net.jodah.failsafe.CircuitBreaker;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.zalando.actuate.failsafe.CircuitBreakersEndpoint;

import javax.annotation.Nullable;
import java.util.Collections;
import java.util.Map;

@Configuration
public class CircuitBreakersEndpointAutoConfiguration {

    @Bean
    @ConditionalOnMissingBean
    @ConditionalOnEnabledEndpoint
    public CircuitBreakersEndpoint circuitBreakersEndpoint(
            @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
            @Autowired(required = false) @Nullable final Map<String, CircuitBreaker> breakers) {
        return new CircuitBreakersEndpoint(breakers == null ? Collections.emptyMap() : breakers);
    }

}