1 package org.junit.internal.requests;
2
3 import org.junit.internal.builders.AllDefaultPossibilitiesBuilder;
4 import org.junit.runner.Request;
5 import org.junit.runner.Runner;
6
7 public class ClassRequest extends Request {
8 private final Object runnerLock = new Object();
9
10
11
12
13
14
15 private final Class<?> fTestClass;
16 private final boolean canUseSuiteMethod;
17 private volatile Runner runner;
18
19 public ClassRequest(Class<?> testClass, boolean canUseSuiteMethod) {
20 this.fTestClass = testClass;
21 this.canUseSuiteMethod = canUseSuiteMethod;
22 }
23
24 public ClassRequest(Class<?> testClass) {
25 this(testClass, true);
26 }
27
28 @Override
29 public Runner getRunner() {
30 if (runner == null) {
31 synchronized (runnerLock) {
32 if (runner == null) {
33 runner = new AllDefaultPossibilitiesBuilder(canUseSuiteMethod).safeRunnerForClass(fTestClass);
34 }
35 }
36 }
37 return runner;
38 }
39 }