package dk.thoerup.circuitbreaker; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; public class CircuitBreakerManager { private static CircuitBreakerManager manager = null; private Map> breakers = new ConcurrentHashMap<>(); private CircuitBreakerManager() { } public static CircuitBreakerManager getManager() { //singleton interface synchronized(CircuitBreakerManager.class) { if (manager == null) { manager = new CircuitBreakerManager(); } } return manager; } public Set getCircuitBreakerNames() { return breakers.keySet(); } public CircuitBreaker getCircuitBreaker(String name) { return breakers.get(name); } public void removeCircuitBreaker(String name) { breakers.remove(name); } public void addCircuitBreaker(CircuitBreaker cb) { breakers.put(cb.getName(), cb); } public void shutdown() { for ( Entry> entry : breakers.entrySet() ) { entry.getValue().shutdown(); } breakers.clear(); } }