Skip to content

Commit 76f97e9

Browse files
committed
Remove no longer needed use of reflection to create ForkJoinPool
1 parent 1772e3e commit 76f97e9

File tree

1 file changed

+8
-35
lines changed

1 file changed

+8
-35
lines changed

junit-platform-engine/src/main/java/org/junit/platform/engine/support/hierarchical/ForkJoinPoolHierarchicalTestExecutorService.java

Lines changed: 8 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -17,27 +17,19 @@
1717
import static org.junit.platform.engine.support.hierarchical.Node.ExecutionMode.SAME_THREAD;
1818

1919
import java.io.Serial;
20-
import java.lang.Thread.UncaughtExceptionHandler;
21-
import java.lang.reflect.Constructor;
2220
import java.util.ArrayDeque;
2321
import java.util.ArrayList;
2422
import java.util.Deque;
2523
import java.util.List;
26-
import java.util.Optional;
27-
import java.util.concurrent.Callable;
2824
import java.util.concurrent.ForkJoinPool;
29-
import java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory;
3025
import java.util.concurrent.ForkJoinTask;
3126
import java.util.concurrent.ForkJoinWorkerThread;
3227
import java.util.concurrent.Future;
3328
import java.util.concurrent.TimeUnit;
34-
import java.util.function.Function;
35-
import java.util.function.Predicate;
3629

3730
import org.apiguardian.api.API;
3831
import org.jspecify.annotations.Nullable;
3932
import org.junit.platform.commons.JUnitException;
40-
import org.junit.platform.commons.function.Try;
4133
import org.junit.platform.commons.logging.LoggerFactory;
4234
import org.junit.platform.commons.util.ExceptionUtils;
4335
import org.junit.platform.engine.ConfigurationParameters;
@@ -97,33 +89,14 @@ private static ParallelExecutionConfiguration createConfiguration(ConfigurationP
9789
}
9890

9991
private ForkJoinPool createForkJoinPool(ParallelExecutionConfiguration configuration) {
100-
ForkJoinWorkerThreadFactory threadFactory = new WorkerThreadFactory();
101-
// Try to use constructor available in Java >= 9
102-
Callable<ForkJoinPool> constructorInvocation = sinceJava9Constructor() //
103-
.map(sinceJava9ConstructorInvocation(configuration, threadFactory))
104-
// Fallback for Java 8
105-
.orElse(sinceJava7ConstructorInvocation(configuration, threadFactory));
106-
return Try.call(constructorInvocation) //
107-
.getOrThrow(cause -> new JUnitException("Failed to create ForkJoinPool", cause));
108-
}
109-
110-
private static Optional<Constructor<ForkJoinPool>> sinceJava9Constructor() {
111-
return Try.call(() -> ForkJoinPool.class.getDeclaredConstructor(int.class, ForkJoinWorkerThreadFactory.class,
112-
UncaughtExceptionHandler.class, boolean.class, int.class, int.class, int.class, Predicate.class, long.class,
113-
TimeUnit.class)) //
114-
.toOptional();
115-
}
116-
117-
private static Function<Constructor<ForkJoinPool>, Callable<ForkJoinPool>> sinceJava9ConstructorInvocation(
118-
ParallelExecutionConfiguration configuration, ForkJoinWorkerThreadFactory threadFactory) {
119-
return constructor -> () -> constructor.newInstance(configuration.getParallelism(), threadFactory, null, false,
120-
configuration.getCorePoolSize(), configuration.getMaxPoolSize(), configuration.getMinimumRunnable(),
121-
configuration.getSaturatePredicate(), configuration.getKeepAliveSeconds(), TimeUnit.SECONDS);
122-
}
123-
124-
private static Callable<ForkJoinPool> sinceJava7ConstructorInvocation(ParallelExecutionConfiguration configuration,
125-
ForkJoinWorkerThreadFactory threadFactory) {
126-
return () -> new ForkJoinPool(configuration.getParallelism(), threadFactory, null, false);
92+
try {
93+
return new ForkJoinPool(configuration.getParallelism(), new WorkerThreadFactory(), null, false,
94+
configuration.getCorePoolSize(), configuration.getMaxPoolSize(), configuration.getMinimumRunnable(),
95+
configuration.getSaturatePredicate(), configuration.getKeepAliveSeconds(), TimeUnit.SECONDS);
96+
}
97+
catch (Exception cause) {
98+
throw new JUnitException("Failed to create ForkJoinPool", cause);
99+
}
127100
}
128101

129102
@Override

0 commit comments

Comments
 (0)