1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.buildcache;
20
21 import java.util.concurrent.CopyOnWriteArrayList;
22
23 import org.apache.maven.execution.AbstractExecutionListener;
24 import org.apache.maven.execution.ExecutionEvent;
25 import org.apache.maven.execution.ExecutionListener;
26
27 class ChainedListener extends AbstractExecutionListener {
28
29 private final ExecutionListener delegate;
30
31 private final CopyOnWriteArrayList<ExecutionListener> chainedListeners = new CopyOnWriteArrayList<>();
32
33 ChainedListener(ExecutionListener delegate) {
34 this.delegate = delegate;
35 }
36
37 public boolean chainListener(ExecutionListener listener) {
38 return chainedListeners.addIfAbsent(listener);
39 }
40
41 @Override
42 public void projectDiscoveryStarted(ExecutionEvent event) {
43 delegate.projectDiscoveryStarted(event);
44 chainedListeners.forEach(listener -> listener.projectDiscoveryStarted(event));
45 }
46
47 @Override
48 public void sessionStarted(ExecutionEvent event) {
49 delegate.sessionStarted(event);
50 chainedListeners.forEach(listener -> listener.sessionStarted(event));
51 }
52
53 @Override
54 public void sessionEnded(ExecutionEvent event) {
55 delegate.sessionEnded(event);
56 chainedListeners.forEach(listener -> listener.sessionEnded(event));
57 }
58
59 @Override
60 public void projectSkipped(ExecutionEvent event) {
61 delegate.projectSkipped(event);
62 chainedListeners.forEach(listener -> listener.projectSkipped(event));
63 }
64
65 @Override
66 public void projectStarted(ExecutionEvent event) {
67 delegate.projectStarted(event);
68 chainedListeners.forEach(listener -> listener.projectStarted(event));
69 }
70
71 @Override
72 public void projectSucceeded(ExecutionEvent event) {
73 delegate.projectSucceeded(event);
74 chainedListeners.forEach(listener -> listener.projectSucceeded(event));
75 }
76
77 @Override
78 public void projectFailed(ExecutionEvent event) {
79 delegate.projectFailed(event);
80 chainedListeners.forEach(listener -> listener.projectFailed(event));
81 }
82
83 @Override
84 public void forkStarted(ExecutionEvent event) {
85 delegate.forkStarted(event);
86 chainedListeners.forEach(listener -> listener.forkStarted(event));
87 }
88
89 @Override
90 public void forkSucceeded(ExecutionEvent event) {
91 delegate.forkSucceeded(event);
92 chainedListeners.forEach(listener -> listener.forkSucceeded(event));
93 }
94
95 @Override
96 public void forkFailed(ExecutionEvent event) {
97 delegate.forkFailed(event);
98 chainedListeners.forEach(listener -> listener.forkFailed(event));
99 }
100
101 @Override
102 public void mojoSkipped(ExecutionEvent event) {
103 delegate.mojoSkipped(event);
104 chainedListeners.forEach(listener -> listener.mojoSkipped(event));
105 }
106
107 @Override
108 public void mojoStarted(ExecutionEvent event) {
109 delegate.mojoStarted(event);
110 chainedListeners.forEach(listener -> listener.mojoStarted(event));
111 }
112
113 @Override
114 public void mojoSucceeded(ExecutionEvent event) {
115 delegate.mojoSucceeded(event);
116 chainedListeners.forEach(listener -> listener.mojoSucceeded(event));
117 }
118
119 @Override
120 public void mojoFailed(ExecutionEvent event) {
121 delegate.mojoFailed(event);
122 chainedListeners.forEach(listener -> listener.mojoFailed(event));
123 }
124
125 @Override
126 public void forkedProjectStarted(ExecutionEvent event) {
127 delegate.forkedProjectStarted(event);
128 chainedListeners.forEach(listener -> listener.forkedProjectStarted(event));
129 }
130
131 @Override
132 public void forkedProjectSucceeded(ExecutionEvent event) {
133 delegate.forkedProjectSucceeded(event);
134 chainedListeners.forEach(listener -> listener.forkedProjectSucceeded(event));
135 }
136
137 @Override
138 public void forkedProjectFailed(ExecutionEvent event) {
139 delegate.forkedProjectFailed(event);
140 chainedListeners.forEach(listener -> listener.forkedProjectFailed(event));
141 }
142 }