View Javadoc
1   package net.secodo.jcircuitbreaker.breakhandler.impl;
2   
3   import java.util.concurrent.Callable;
4   
5   import net.secodo.jcircuitbreaker.breaker.ContextAwareCircuitBreaker;
6   import net.secodo.jcircuitbreaker.breaker.execution.ExecutionContext;
7   import net.secodo.jcircuitbreaker.breakhandler.BreakHandler;
8   import net.secodo.jcircuitbreaker.breakhandler.BreakHandlerFactory;
9   import net.secodo.jcircuitbreaker.breakstrategy.BreakStrategy;
10  import net.secodo.jcircuitbreaker.task.Task;
11  
12  
13  /**
14   * An implementation of {@link BreakHandler} that always returns the value given as a parameter.
15   *
16   * <p>This implementation can be shared between different executions of circuit breaker and therefore does not require
17   * factory method implementing {@link BreakHandlerFactory} to be reusable.
18   *
19   * @param <R> the return type of actual method
20   */
21  public class ReturnStaticValueHandler<R> implements BreakHandler<R> {
22    private final R returnValue;
23  
24    public ReturnStaticValueHandler(R returnValue) {
25      this.returnValue = returnValue;
26    }
27  
28    @Override
29    public R onBreak(ContextAwareCircuitBreaker<R> circuitBreaker, Task<R> task, BreakStrategy<R> breakStrategy,
30                     ExecutionContext<R> executionContext) {
31      return returnValue;
32    }
33  }