Skip to content

Commit 74b914f

Browse files
committed
Introduce MemoizingRequest
1 parent 550654a commit 74b914f

File tree

1 file changed

+3
-20
lines changed

1 file changed

+3
-20
lines changed

src/main/java/org/junit/internal/requests/ClassRequest.java

+3-20
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,18 @@
11
package org.junit.internal.requests;
22

3-
import java.util.concurrent.locks.Lock;
4-
import java.util.concurrent.locks.ReentrantLock;
5-
63
import org.junit.internal.builders.AllDefaultPossibilitiesBuilder;
74
import org.junit.internal.builders.SuiteMethodBuilder;
8-
import org.junit.runner.Request;
95
import org.junit.runner.Runner;
106
import org.junit.runners.model.RunnerBuilder;
117

12-
public class ClassRequest extends Request {
13-
private final Lock runnerLock = new ReentrantLock();
14-
8+
public class ClassRequest extends MemoizingRequest {
159
/*
1610
* We have to use the f prefix, because IntelliJ's JUnit4IdeaTestRunner uses
1711
* reflection to access this field. See
1812
* https://github.com/junit-team/junit4/issues/960
1913
*/
2014
private final Class<?> fTestClass;
2115
private final boolean canUseSuiteMethod;
22-
private volatile Runner runner;
2316

2417
public ClassRequest(Class<?> testClass, boolean canUseSuiteMethod) {
2518
this.fTestClass = testClass;
@@ -31,18 +24,8 @@ public ClassRequest(Class<?> testClass) {
3124
}
3225

3326
@Override
34-
public Runner getRunner() {
35-
if (runner == null) {
36-
runnerLock.lock();
37-
try {
38-
if (runner == null) {
39-
runner = new CustomAllDefaultPossibilitiesBuilder().safeRunnerForClass(fTestClass);
40-
}
41-
} finally {
42-
runnerLock.unlock();
43-
}
44-
}
45-
return runner;
27+
protected Runner createRunner() {
28+
return new CustomAllDefaultPossibilitiesBuilder().safeRunnerForClass(fTestClass);
4629
}
4730

4831
private class CustomAllDefaultPossibilitiesBuilder extends AllDefaultPossibilitiesBuilder {

0 commit comments

Comments
 (0)