|
26 | 26 |
|
27 | 27 | public class TestUtils |
28 | 28 | { |
29 | | - private static Random random; |
30 | | - private static Function2<Class, String, File> getSourceDirectory = ClassUtils::getSourceDirectory; |
| 29 | + private static Random random; |
| 30 | + private static final ThreadLocal<Function2<Class, String, File>> getSourceDirectory = ThreadLocal |
| 31 | + .withInitial(() -> ClassUtils::getSourceDirectory); |
31 | 32 | public static SourceDirectoryRestorer registerSourceDirectoryFinder( |
32 | 33 | Function2<Class, String, File> sourceDirectoryFinder) |
33 | 34 | { |
34 | 35 | SourceDirectoryRestorer c = new SourceDirectoryRestorer(); |
35 | | - TestUtils.getSourceDirectory = sourceDirectoryFinder; |
| 36 | + TestUtils.getSourceDirectory.set(sourceDirectoryFinder); |
36 | 37 | return c; |
37 | 38 | } |
38 | 39 | public static class SourceDirectoryRestorer implements AutoCloseable |
39 | 40 | { |
40 | 41 | private final Function2<Class, String, File> original; |
41 | 42 | public SourceDirectoryRestorer() |
42 | 43 | { |
43 | | - this.original = TestUtils.getSourceDirectory; |
| 44 | + this.original = TestUtils.getSourceDirectory.get(); |
44 | 45 | } |
45 | 46 | @Override |
46 | 47 | public void close() |
47 | 48 | { |
48 | | - TestUtils.getSourceDirectory = original; |
| 49 | + TestUtils.getSourceDirectory.set(original); |
49 | 50 | } |
50 | 51 | } |
51 | 52 | public static File getFile(String startingDir) |
@@ -210,7 +211,7 @@ private static StackTraceReflectionResult getInfo(StackTraceElement element) thr |
210 | 211 | String className = fullClassName.substring(fullClassName.lastIndexOf(".") + 1); |
211 | 212 | className = handleInnerClasses(className); |
212 | 213 | String fileName = element.getFileName(); |
213 | | - File dir = getSourceDirectory.call(ObjectUtils.loadClass(fullClassName), fileName); |
| 214 | + File dir = getSourceDirectory.get().call(ObjectUtils.loadClass(fullClassName), fileName); |
214 | 215 | String methodName = unrollLambda(element.getMethodName()); |
215 | 216 | return new StackTraceReflectionResult(dir, className, fullClassName, methodName); |
216 | 217 | } |
|
0 commit comments