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