This is an automated email from the ASF dual-hosted git repository. rmannibucau pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/openwebbeans.git
The following commit(s) were added to refs/heads/master by this push: new de7070b OWB-1321 ensure we inject all test instances and not only the current one de7070b is described below commit de7070be470327dfb27541639d48bad275a0c369 Author: Romain Manni-Bucau <rmannibu...@gmail.com> AuthorDate: Wed Mar 25 09:18:08 2020 +0100 OWB-1321 ensure we inject all test instances and not only the current one --- .../openwebbeans/junit5/internal/CdiExtension.java | 26 +++++++++++++--------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/webbeans-junit5/src/main/java/org/apache/openwebbeans/junit5/internal/CdiExtension.java b/webbeans-junit5/src/main/java/org/apache/openwebbeans/junit5/internal/CdiExtension.java index 1c97389..382b90c 100644 --- a/webbeans-junit5/src/main/java/org/apache/openwebbeans/junit5/internal/CdiExtension.java +++ b/webbeans-junit5/src/main/java/org/apache/openwebbeans/junit5/internal/CdiExtension.java @@ -35,6 +35,8 @@ import javax.enterprise.inject.spi.InjectionTarget; import java.io.Closeable; import java.io.IOException; import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Collection; import java.util.Objects; import java.util.function.Supplier; import java.util.stream.Stream; @@ -45,7 +47,7 @@ public class CdiExtension implements BeforeAllCallback, AfterAllCallback, Before private static SeContainer reusableContainer; private SeContainer container; - private CreationalContext<Object> creationalContext; + private Collection<CreationalContext<Object>> creationalContexts = new ArrayList<>(); private Closeable[] onStop; @Override @@ -131,23 +133,27 @@ public class CdiExtension implements BeforeAllCallback, AfterAllCallback, Before { return; } - extensionContext.getTestInstance().ifPresent(instance -> + extensionContext.getTestInstances().ifPresent(testInstances -> { - final BeanManager manager = (container == null ? reusableContainer : container).getBeanManager(); - final AnnotatedType<?> annotatedType = manager.createAnnotatedType(instance.getClass()); - final InjectionTarget injectionTarget = manager.createInjectionTarget(annotatedType); - creationalContext = manager.createCreationalContext(null); - injectionTarget.inject(instance, creationalContext); + testInstances.getAllInstances().stream().distinct().forEach(instance -> + { + final BeanManager manager = (container == null ? reusableContainer : container).getBeanManager(); + final AnnotatedType<?> annotatedType = manager.createAnnotatedType(instance.getClass()); + final InjectionTarget injectionTarget = manager.createInjectionTarget(annotatedType); + final CreationalContext<Object> creationalContext = manager.createCreationalContext(null); + creationalContexts.add(creationalContext); + injectionTarget.inject(instance, creationalContext); + }); }); } @Override public void afterEach(final ExtensionContext extensionContext) { - if (creationalContext != null) + if (!creationalContexts.isEmpty()) { - creationalContext.release(); - creationalContext = null; + creationalContexts.forEach(CreationalContext::release); + creationalContexts.clear(); } }