10
10
11
11
package org .junit .platform .launcher .core ;
12
12
13
+ import java .util .List ;
14
+
13
15
import org .junit .platform .commons .PreconditionViolationException ;
14
16
import org .junit .platform .launcher .Launcher ;
15
17
import org .junit .platform .launcher .LauncherDiscoveryListener ;
16
18
import org .junit .platform .launcher .LauncherDiscoveryRequest ;
19
+ import org .junit .platform .launcher .LauncherInterceptor ;
17
20
import org .junit .platform .launcher .LauncherSession ;
18
21
import org .junit .platform .launcher .LauncherSessionListener ;
19
22
import org .junit .platform .launcher .TestExecutionListener ;
@@ -27,8 +30,9 @@ class DefaultLauncherSession implements LauncherSession {
27
30
private final DelegatingLauncher launcher ;
28
31
private final LauncherSessionListener listener ;
29
32
30
- DefaultLauncherSession (Launcher launcher , LauncherSessionListener listener ) {
31
- this .launcher = new DelegatingLauncher (launcher );
33
+ DefaultLauncherSession (InternalLauncher launcher , LauncherSessionListener listener ,
34
+ List <LauncherInterceptor > interceptors ) {
35
+ this .launcher = new DelegatingLauncher (InterceptingInternalLauncher .decorate (launcher , interceptors ));
32
36
this .listener = listener ;
33
37
listener .launcherSessionOpened (this );
34
38
}
@@ -44,55 +48,31 @@ LauncherSessionListener getListener() {
44
48
45
49
@ Override
46
50
public void close () {
47
- if (launcher .getDelegate () != ClosedLauncher . INSTANCE ) {
48
- launcher .setDelegate ( ClosedLauncher . INSTANCE );
51
+ if (launcher .isClosed () ) {
52
+ launcher .close ( );
49
53
listener .launcherSessionClosed (this );
50
54
}
51
55
}
52
56
53
- private static class DelegatingLauncher implements Launcher {
54
-
55
- private Launcher delegate ;
56
-
57
- DelegatingLauncher (Launcher delegate ) {
58
- this .delegate = delegate ;
59
- }
60
-
61
- public Launcher getDelegate () {
62
- return delegate ;
63
- }
64
-
65
- public void setDelegate (Launcher delegate ) {
66
- this .delegate = delegate ;
67
- }
68
-
69
- @ Override
70
- public void registerLauncherDiscoveryListeners (LauncherDiscoveryListener ... listeners ) {
71
- delegate .registerLauncherDiscoveryListeners (listeners );
72
- }
73
-
74
- @ Override
75
- public void registerTestExecutionListeners (TestExecutionListener ... listeners ) {
76
- delegate .registerTestExecutionListeners (listeners );
77
- }
57
+ private static class DelegatingLauncher extends DelegatingInternalLauncher <CloseableInternalLauncher >
58
+ implements CloseableInternalLauncher {
78
59
79
- @ Override
80
- public TestPlan discover (LauncherDiscoveryRequest launcherDiscoveryRequest ) {
81
- return delegate .discover (launcherDiscoveryRequest );
60
+ DelegatingLauncher (CloseableInternalLauncher delegate ) {
61
+ super (delegate );
82
62
}
83
63
84
- @ Override
85
- public void execute (LauncherDiscoveryRequest launcherDiscoveryRequest , TestExecutionListener ... listeners ) {
86
- delegate .execute (launcherDiscoveryRequest , listeners );
64
+ boolean isClosed () {
65
+ return delegate != ClosedLauncher .INSTANCE ;
87
66
}
88
67
89
68
@ Override
90
- public void execute (TestPlan testPlan , TestExecutionListener ... listeners ) {
91
- delegate .execute (testPlan , listeners );
69
+ public void close () {
70
+ delegate .close ();
71
+ delegate = ClosedLauncher .INSTANCE ;
92
72
}
93
73
}
94
74
95
- private static class ClosedLauncher implements Launcher {
75
+ private static class ClosedLauncher implements CloseableInternalLauncher {
96
76
97
77
static final ClosedLauncher INSTANCE = new ClosedLauncher ();
98
78
@@ -123,5 +103,20 @@ public void execute(LauncherDiscoveryRequest launcherDiscoveryRequest, TestExecu
123
103
public void execute (TestPlan testPlan , TestExecutionListener ... listeners ) {
124
104
throw new PreconditionViolationException ("Launcher session has already been closed" );
125
105
}
106
+
107
+ @ Override
108
+ public ListenerRegistry <TestExecutionListener > getTestExecutionListenerRegistry () {
109
+ throw new PreconditionViolationException ("Launcher session has already been closed" );
110
+ }
111
+
112
+ @ Override
113
+ public ListenerRegistry <LauncherDiscoveryListener > getLauncherDiscoveryListenerRegistry () {
114
+ throw new PreconditionViolationException ("Launcher session has already been closed" );
115
+ }
116
+
117
+ @ Override
118
+ public void close () {
119
+ // do nothing
120
+ }
126
121
}
127
122
}
0 commit comments