1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.config;
18
19 import java.util.concurrent.Delayed;
20 import java.util.concurrent.ExecutionException;
21 import java.util.concurrent.ScheduledFuture;
22 import java.util.concurrent.TimeUnit;
23 import java.util.concurrent.TimeoutException;
24
25
26
27
28 public class CronScheduledFuture<V> implements ScheduledFuture<V> {
29
30 private volatile ScheduledFuture<?> scheduledFuture;
31
32 public CronScheduledFuture(final ScheduledFuture<V> future) {
33 this.scheduledFuture = future;
34 }
35
36 void setScheduledFuture(final ScheduledFuture<?> future) {
37 this.scheduledFuture = future;
38 }
39
40 @Override
41 public long getDelay(final TimeUnit unit) {
42 return scheduledFuture.getDelay(unit);
43 }
44
45 @Override
46 public int compareTo(final Delayed delayed) {
47 return scheduledFuture.compareTo(delayed);
48 }
49
50 @Override
51 public boolean cancel(final boolean mayInterruptIfRunning) {
52 return scheduledFuture.cancel(mayInterruptIfRunning);
53 }
54
55 @Override
56 public boolean isCancelled() {
57 return scheduledFuture.isCancelled();
58 }
59
60 @Override
61 public boolean isDone() {
62 return scheduledFuture.isDone();
63 }
64
65 @Override
66 @SuppressWarnings("unchecked")
67 public V get() throws InterruptedException, ExecutionException {
68 return (V) scheduledFuture.get();
69 }
70
71 @Override
72 @SuppressWarnings("unchecked")
73 public V get(final long timeout, final TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
74 return (V) scheduledFuture.get(timeout, unit);
75 }
76 }