1 package com.atlassian.pageobjects.elements.util;
2
3 import java.util.concurrent.TimeUnit;
4
5
6
7
8
9 public final class Timeout
10 {
11 private Timeout()
12 {
13 throw new AssertionError("Don't hack with me");
14 }
15
16 public static TimeoutBuilder of(long count)
17 {
18 return new TimeoutBuilder(count);
19 }
20
21 public static WaitTimeBuilder waitFor(long count)
22 {
23 return new WaitTimeBuilder(count);
24 }
25
26 public static final class TimeoutBuilder
27 {
28 private final long count;
29
30
31 TimeoutBuilder(final long count)
32 {
33 assert count >= 0;
34 this.count = count;
35 }
36
37 public long milliseconds()
38 {
39 return count;
40 }
41
42 public long seconds()
43 {
44 return TimeUnit.SECONDS.toMillis(count);
45 }
46 }
47
48 public static final class WaitTimeBuilder
49 {
50 private final TimeoutBuilder builder;
51
52
53 WaitTimeBuilder(long waitTime)
54 {
55 this.builder = new TimeoutBuilder(waitTime);
56 }
57
58 public void milliseconds()
59 {
60 waitFor(builder.milliseconds());
61 }
62
63 public void seconds()
64 {
65 waitFor(builder.seconds());
66 }
67
68 private void waitFor(long millis)
69 {
70 try
71 {
72 TimeUnit.MILLISECONDS.sleep(millis);
73 }
74 catch (InterruptedException e)
75 {
76 throw new RuntimeException(e);
77 }
78 }
79 }
80 }