Skip to content

Commit 85e79f8

Browse files
committed
Reuse CollectionUtils.forEachInReverseOrder
1 parent b91532a commit 85e79f8

File tree

6 files changed

+19
-31
lines changed

6 files changed

+19
-31
lines changed

junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassBasedTestDescriptor.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import static org.junit.jupiter.engine.descriptor.LifecycleMethodUtils.findBeforeEachMethods;
2323
import static org.junit.jupiter.engine.descriptor.TestInstanceLifecycleUtils.getTestInstanceLifecycle;
2424
import static org.junit.jupiter.engine.support.JupiterThrowableCollectorFactory.createThrowableCollector;
25+
import static org.junit.platform.commons.util.CollectionUtils.forEachInReverseOrder;
2526

2627
import java.lang.reflect.Constructor;
2728
import java.lang.reflect.Method;
@@ -457,15 +458,15 @@ private void invokeAfterAllCallbacks(JupiterEngineExecutionContext context) {
457458
ExtensionContext extensionContext = context.getExtensionContext();
458459
ThrowableCollector throwableCollector = context.getThrowableCollector();
459460

460-
registry.getReversedExtensions(AfterAllCallback.class)//
461-
.forEach(extension -> throwableCollector.execute(() -> extension.afterAll(extensionContext)));
461+
forEachInReverseOrder(registry.getExtensions(AfterAllCallback.class), //
462+
extension -> throwableCollector.execute(() -> extension.afterAll(extensionContext)));
462463
}
463464

464465
private void invokeTestInstancePreDestroyCallbacks(JupiterEngineExecutionContext context) {
465466
ExtensionContext extensionContext = context.getExtensionContext();
466467
ThrowableCollector throwableCollector = context.getThrowableCollector();
467468

468-
context.getExtensionRegistry().getReversedExtensions(TestInstancePreDestroyCallback.class).forEach(
469+
forEachInReverseOrder(context.getExtensionRegistry().getExtensions(TestInstancePreDestroyCallback.class), //
469470
extension -> throwableCollector.execute(() -> extension.preDestroyTestInstance(extensionContext)));
470471
}
471472

junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/JupiterTestDescriptor.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,9 @@ static Set<TestTag> getTags(AnnotatedElement element) {
107107
<E extends Extension> void invokeExecutionExceptionHandlers(Class<E> handlerType, ExtensionRegistry registry,
108108
Throwable throwable, ExceptionHandlerInvoker<E> handlerInvoker) {
109109

110-
invokeExecutionExceptionHandlers(registry.getReversedExtensions(handlerType), throwable, handlerInvoker);
110+
List<E> extensions = registry.getExtensions(handlerType);
111+
Collections.reverse(extensions);
112+
invokeExecutionExceptionHandlers(extensions, throwable, handlerInvoker);
111113
}
112114

113115
private <E extends Extension> void invokeExecutionExceptionHandlers(List<E> exceptionHandlers, Throwable throwable,

junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/MethodBasedTestDescriptor.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import static org.apiguardian.api.API.Status.INTERNAL;
1414
import static org.junit.jupiter.engine.descriptor.DisplayNameUtils.determineDisplayNameForMethod;
15+
import static org.junit.platform.commons.util.CollectionUtils.forEachInReverseOrder;
1516

1617
import java.lang.reflect.Method;
1718
import java.util.LinkedHashSet;
@@ -25,7 +26,6 @@
2526
import org.junit.jupiter.api.extension.TestWatcher;
2627
import org.junit.jupiter.engine.config.JupiterConfiguration;
2728
import org.junit.jupiter.engine.execution.JupiterEngineExecutionContext;
28-
import org.junit.jupiter.engine.extension.ExtensionRegistry;
2929
import org.junit.platform.commons.logging.Logger;
3030
import org.junit.platform.commons.logging.LoggerFactory;
3131
import org.junit.platform.commons.util.ClassUtils;
@@ -123,13 +123,9 @@ public void nodeSkipped(JupiterEngineExecutionContext context, TestDescriptor de
123123
protected void invokeTestWatchers(JupiterEngineExecutionContext context, boolean reverseOrder,
124124
Consumer<TestWatcher> callback) {
125125

126-
ExtensionRegistry registry = context.getExtensionRegistry();
126+
List<TestWatcher> watchers = context.getExtensionRegistry().getExtensions(TestWatcher.class);
127127

128-
List<TestWatcher> watchers = reverseOrder //
129-
? registry.getReversedExtensions(TestWatcher.class)
130-
: registry.getExtensions(TestWatcher.class);
131-
132-
watchers.forEach(watcher -> {
128+
Consumer<TestWatcher> action = watcher -> {
133129
try {
134130
callback.accept(watcher);
135131
}
@@ -143,7 +139,13 @@ protected void invokeTestWatchers(JupiterEngineExecutionContext context, boolean
143139
extensionContext.getRequiredTestMethod()),
144140
getDisplayName()));
145141
}
146-
});
142+
};
143+
if (reverseOrder) {
144+
forEachInReverseOrder(watchers, action);
145+
}
146+
else {
147+
watchers.forEach(action);
148+
}
147149
}
148150

149151
}

junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/TestMethodTestDescriptor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import static org.junit.jupiter.engine.descriptor.ExtensionUtils.populateNewExtensionRegistryFromExtendWithAnnotation;
1515
import static org.junit.jupiter.engine.descriptor.ExtensionUtils.registerExtensionsFromExecutableParameters;
1616
import static org.junit.jupiter.engine.support.JupiterThrowableCollectorFactory.createThrowableCollector;
17+
import static org.junit.platform.commons.util.CollectionUtils.forEachInReverseOrder;
1718

1819
import java.lang.reflect.Method;
1920

@@ -272,7 +273,7 @@ private <T extends Extension> void invokeAllAfterMethodsOrCallbacks(Class<T> typ
272273
ExtensionContext extensionContext = context.getExtensionContext();
273274
ThrowableCollector throwableCollector = context.getThrowableCollector();
274275

275-
registry.getReversedExtensions(type).forEach(callback -> {
276+
forEachInReverseOrder(registry.getExtensions(type), callback -> {
276277
throwableCollector.execute(() -> callbackInvoker.invoke(callback, extensionContext));
277278
});
278279
}

junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/extension/ExtensionRegistry.java

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import static org.apiguardian.api.API.Status.INTERNAL;
1515

1616
import java.util.ArrayList;
17-
import java.util.Collections;
1817
import java.util.List;
1918
import java.util.stream.Stream;
2019

@@ -36,7 +35,6 @@ public interface ExtensionRegistry {
3635
* in this registry or one of its ancestors.
3736
*
3837
* @param extensionType the type of {@link Extension} to stream
39-
* @see #getReversedExtensions(Class)
4038
* @see #getExtensions(Class)
4139
*/
4240
<E extends Extension> Stream<E> stream(Class<E> extensionType);
@@ -46,25 +44,10 @@ public interface ExtensionRegistry {
4644
* in this registry or one of its ancestors.
4745
*
4846
* @param extensionType the type of {@link Extension} to get
49-
* @see #getReversedExtensions(Class)
5047
* @see #stream(Class)
5148
*/
5249
default <E extends Extension> List<E> getExtensions(Class<E> extensionType) {
5350
return stream(extensionType).collect(toCollection(ArrayList::new));
5451
}
5552

56-
/**
57-
* Get all {@code Extensions} of the specified type that are present
58-
* in this registry or one of its ancestors, in reverse order.
59-
*
60-
* @param extensionType the type of {@link Extension} to get
61-
* @see #getExtensions(Class)
62-
* @see #stream(Class)
63-
*/
64-
default <E extends Extension> List<E> getReversedExtensions(Class<E> extensionType) {
65-
List<E> extensions = getExtensions(extensionType);
66-
Collections.reverse(extensions);
67-
return extensions;
68-
}
69-
7053
}

junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/extension/MutableExtensionRegistry.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,6 @@ public <E extends Extension> Stream<E> stream(Class<E> extensionType) {
130130
* <p>Extensions in ancestors are ignored.
131131
*
132132
* @param extensionType the type of {@link Extension} to stream
133-
* @see #getReversedExtensions(Class)
134133
*/
135134
private <E extends Extension> Stream<E> streamLocal(Class<E> extensionType) {
136135
// @formatter:off

0 commit comments

Comments
 (0)