package net.greencoding.thysdrus.circuitbreaker.core.model; import java.lang.reflect.Method; import java.util.Arrays; import java.util.List; /** * CircuitBreaker model class * TODO implement a Builder for this class. This class must be immutable. * @author Nabil Ben Said (nabil.ben.said@gmail.com) * */ public class CircuitBreaker { /** * CB key. typically the method signature. If CB is defined in a CB Group then the group name will be used as circuit breaker key. */ private String circuitBreakerKey; private String circuitBreakerGroup; private List<Method> registeredMethods; private int failureThreshold; private long failureThresholdTimeFrameMs; private long retryTimeoutMs; private Class<? extends Throwable> [] failureIndications; public String getCircuitBreakerKey() { return circuitBreakerKey; } public void setCircuitBreakerKey(String circuitBreakerKey) { this.circuitBreakerKey = circuitBreakerKey; } public String getCircuitBreakerGroup() { return circuitBreakerGroup; } public void setCircuitBreakerGroup(String circuitBreakerGroup) { this.circuitBreakerGroup = circuitBreakerGroup; } public List<Method> getRegisteredMethods() { return registeredMethods; } public void setRegisteredMethods(List<Method> registeredMethods) { this.registeredMethods = registeredMethods; } public int getFailureThreshold() { return failureThreshold; } public void setFailureThreshold(int failureThreshold) { this.failureThreshold = failureThreshold; } public long getFailureThresholdTimeFrameMs() { return failureThresholdTimeFrameMs; } public void setFailureThresholdTimeFrameMs(long failureThresholdTimeFrameMs) { this.failureThresholdTimeFrameMs = failureThresholdTimeFrameMs; } public long getRetryTimeoutMs() { return retryTimeoutMs; } public void setRetryTimeoutMs(long retryTimeoutMs) { this.retryTimeoutMs = retryTimeoutMs; } public Class<? extends Throwable>[] getFailureIndications() { return failureIndications; } public void setFailureIndications(Class<? extends Throwable>[] failureIndications) { this.failureIndications = failureIndications; } @Override public String toString() { return "CircuitBreaker [circuitBreakerKey=" + circuitBreakerKey + ", circuitBreakerGroup=" + circuitBreakerGroup + ", registeredMethods=" + registeredMethods + ", failureThreshold=" + failureThreshold + ", failureThresholdTimeFrameMs=" + failureThresholdTimeFrameMs + ", retryTimeoutMs=" + retryTimeoutMs + ", failureIndications=" + Arrays.toString(failureIndications) + "]"; } }