1 package net.secodo.jcircuitbreaker.breaker.builder.impl;
2
3 import net.secodo.jcircuitbreaker.breaker.builder.BuilderValidationException;
4 import net.secodo.jcircuitbreaker.breaker.impl.ReusableCircuitBreaker;
5 import net.secodo.jcircuitbreaker.breakhandler.BreakHandler;
6 import net.secodo.jcircuitbreaker.breakstrategy.BreakStrategy;
7
8
9
10
11
12
13
14
15 public class ReusableCircuitBreakerBuilder<R> {
16 private BreakStrategy<R> breakStrategy;
17 private BreakHandler<R> breakHandler;
18
19 public ReusableCircuitBreakerBuilder() {
20 }
21
22 public ReusableCircuitBreakerBuilder<R> withBreakStrategy(BreakStrategy<R> breakStrategy) {
23 this.breakStrategy = breakStrategy;
24 return this;
25 }
26
27 public ReusableCircuitBreakerBuilder<R> withBreakHandler(BreakHandler<R> breakHandler) {
28 this.breakHandler = breakHandler;
29 return this;
30 }
31
32
33
34
35
36
37
38
39 public ReusableCircuitBreaker<R> build() throws BuilderValidationException {
40 validate();
41
42 return new ReusableCircuitBreaker<R>(breakStrategy, breakHandler);
43 }
44
45 private void validate() throws BuilderValidationException {
46 if (breakStrategy == null) {
47 throw new BuilderValidationException("Break strategy must be set but was null");
48 }
49
50 if (breakHandler == null) {
51 throw new BuilderValidationException("Break handler must be set but was null");
52 }
53
54 }
55
56 }