1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.common.util.wait;
17
18 import static org.kuali.common.util.base.Precondition.checkMin;
19
20 import org.kuali.common.util.FormatUtils;
21
22 public final class WaitContext {
23
24 private final long timeoutMillis;
25 private final long sleepMillis;
26 private final long initialPauseMillis;
27
28 public static WaitContext create(long timeoutMillis) {
29 return builder(timeoutMillis).build();
30 }
31
32 public static Builder builder(long timeoutMillis) {
33 return new Builder(timeoutMillis);
34 }
35
36 public static class Builder implements org.apache.commons.lang3.builder.Builder<WaitContext> {
37
38
39 private final long timeoutMillis;
40
41
42 private long sleepMillis = FormatUtils.getMillis("1s");
43 private long initialPauseMillis = 0;
44
45 public Builder(long timeoutMillis) {
46 this.timeoutMillis = timeoutMillis;
47 }
48
49 public Builder initialPauseMillis(long initialPauseMillis) {
50 this.initialPauseMillis = initialPauseMillis;
51 return this;
52 }
53
54 public Builder sleepMillis(long sleepMillis) {
55 this.sleepMillis = sleepMillis;
56 return this;
57 }
58
59 @Override
60 public WaitContext build() {
61 WaitContext instance = new WaitContext(this);
62 validate(instance);
63 return instance;
64 }
65
66 private static void validate(WaitContext instance) {
67 checkMin(instance.timeoutMillis, 0, "timeoutMillis");
68 checkMin(instance.sleepMillis, 0, "sleepMillis");
69 checkMin(instance.initialPauseMillis, 0, "initialPauseMillis");
70 }
71
72 }
73
74 private WaitContext(Builder builder) {
75 this.timeoutMillis = builder.timeoutMillis;
76 this.sleepMillis = builder.sleepMillis;
77 this.initialPauseMillis = builder.initialPauseMillis;
78 }
79
80 public long getTimeoutMillis() {
81 return timeoutMillis;
82 }
83
84 public long getSleepMillis() {
85 return sleepMillis;
86 }
87
88 public long getInitialPauseMillis() {
89 return initialPauseMillis;
90 }
91
92 }