1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.lifecycle.internal.stub;
20
21 import java.util.ArrayList;
22 import java.util.Collections;
23 import java.util.List;
24 import java.util.concurrent.Callable;
25 import java.util.concurrent.CompletionService;
26 import java.util.concurrent.Future;
27 import java.util.concurrent.FutureTask;
28 import java.util.concurrent.TimeUnit;
29
30 import org.apache.maven.lifecycle.internal.ProjectSegment;
31
32
33
34
35 public class CompletionServiceStub implements CompletionService<ProjectSegment> {
36 List<FutureTask<ProjectSegment>> projectBuildFutureTasks =
37 Collections.synchronizedList(new ArrayList<FutureTask<ProjectSegment>>());
38
39 final boolean finishImmediately;
40
41 public int size() {
42 return projectBuildFutureTasks.size();
43 }
44
45 public CompletionServiceStub(boolean finishImmediately) {
46 this.finishImmediately = finishImmediately;
47 }
48
49 public Future<ProjectSegment> submit(Callable<ProjectSegment> task) {
50 FutureTask<ProjectSegment> projectBuildFutureTask = new FutureTask<>(task);
51 projectBuildFutureTasks.add(projectBuildFutureTask);
52 if (finishImmediately) {
53 projectBuildFutureTask.run();
54 }
55 return projectBuildFutureTask;
56 }
57
58 public Future<ProjectSegment> submit(Runnable task, ProjectSegment result) {
59 FutureTask<ProjectSegment> projectBuildFutureTask = new FutureTask<>(task, result);
60 projectBuildFutureTasks.add(projectBuildFutureTask);
61 if (finishImmediately) {
62 projectBuildFutureTask.run();
63 }
64 return projectBuildFutureTask;
65 }
66
67 public Future<ProjectSegment> take() throws InterruptedException {
68 return null;
69 }
70
71 public Future<ProjectSegment> poll() {
72 return null;
73 }
74
75 public Future<ProjectSegment> poll(long timeout, TimeUnit unit) throws InterruptedException {
76 return null;
77 }
78 }