This is an automated email from the ASF dual-hosted git repository.

struberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openwebbeans.git

commit 8bd5fca7ab84afb3ba06a752426aed865d7b8872
Author: Mark Struberg <[email protected]>
AuthorDate: Mon Mar 1 22:15:48 2021 +0100

    OWB-1374 set caches to null not empty
    
    just clearing the caches will behave like there is no observer.
    This breaks events which might also be called during runtime.
---
 .../apache/webbeans/event/NotificationManager.java | 27 +++++++++++-----------
 1 file changed, 14 insertions(+), 13 deletions(-)

diff --git 
a/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
 
b/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
index 04732a9..8c22c64 100644
--- 
a/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
+++ 
b/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
@@ -33,7 +33,6 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CompletionException;
@@ -46,7 +45,6 @@ import java.util.concurrent.ForkJoinPool;
 import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicReference;
-import java.util.stream.Stream;
 
 import javax.enterprise.context.RequestScoped;
 import javax.enterprise.event.NotificationOptions;
@@ -152,15 +150,18 @@ public class NotificationManager
 
     public void afterStart()
     {
-        Stream.of(
-                processAnnotatedTypeObservers, processBeanAttributesObservers,
-                processInjectionTargetObservers, processManagedBeanObservers,
-                processBeanObservers, processInjectionPointObservers,
-                processObserverMethodObservers, processProducerObservers,
-                processProducerFieldObservers, processProducerMethodObservers,
-                processSyntheticBeanObservers, 
processSyntheticObserverMethodObservers)
-                .filter(Objects::nonNull)
-                .forEach(Map::clear);
+        processAnnotatedTypeObservers = null;
+        processBeanAttributesObservers = null;
+        processInjectionTargetObservers = null;
+        processManagedBeanObservers = null;
+        processBeanObservers = null;
+        processInjectionPointObservers = null;
+        processObserverMethodObservers = null;
+        processProducerObservers = null;
+        processProducerFieldObservers = null;
+        processProducerMethodObservers = null;
+        processSyntheticBeanObservers = null;
+        processSyntheticObserverMethodObservers = null;
     }
 
     private Executor getDefaultExecutor()
@@ -241,10 +242,10 @@ public class NotificationManager
     {
         if (isLifecycleEvent) // goal here is to skip any resolution if not 
needed
         {
-            Collection<ObserverMethod<?>> observerMethods = 
cacheIfNeeded(event);
+            Collection observerMethods = cacheIfNeeded(event);
             if (observerMethods != null) // emptyList()
             {
-                return emptyList();
+                return observerMethods;
             }
         }
         Type eventType = metadata.validatedType();

Reply via email to