package dk.thoerup.circuitbreaker; import java.util.Iterator; import java.util.Map; 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 (Iterator it = breakers.keySet().iterator(); it.hasNext(); ) { String key = it.next(); breakers.get(key).shutdown(); it.remove(); } } }