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();
         }
     }
 

Reply via email to