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 <[email protected]>
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();
}
}