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


The following commit(s) were added to refs/heads/master by this push:
     new 76a7477  OWB-1393 clear caches after adding Extensions
76a7477 is described below

commit 76a7477c93b3f9c2549726b942a21f7e2fadee5c
Author: Mark Struberg <[email protected]>
AuthorDate: Sun Dec 12 20:39:49 2021 +0100

    OWB-1393 clear caches after adding Extensions
    
    That way we prevent not picking up new ObserverMethdos from those Service
    in case some other event did fill some Cache in the NotificationManager
---
 .../org/apache/webbeans/config/BeansDeployer.java  |  3 ---
 .../apache/webbeans/event/NotificationManager.java | 29 ++++++++++------------
 .../webbeans/portable/events/ExtensionLoader.java  |  3 +++
 3 files changed, 16 insertions(+), 19 deletions(-)

diff --git 
a/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java 
b/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
index 6d3af2f..2183b47 100644
--- a/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
+++ b/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
@@ -316,9 +316,6 @@ public class BeansDeployer
                 // activate InjectionResolver cache now
                 
webBeansContext.getBeanManagerImpl().getInjectionResolver().setStartup(false);
 
-                // drop no more needed memory data
-                webBeansContext.getNotificationManager().afterStart();
-
                 if (!skipValidations)
                 {
                     validateAlternatives(beanAttributesPerBda);
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 dafa450..5b7b6ef 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
@@ -148,22 +148,6 @@ public class NotificationManager
         this.defaultNotificationOptions = 
NotificationOptions.ofExecutor(getDefaultExecutor());
     }
 
-    public void afterStart()
-    {
-        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()
     {
         // here it would be nice to support to use a produced bean like 
@Named("openwebbeansCdiExecutor")
@@ -183,6 +167,19 @@ public class NotificationManager
     {
         observersByRawType.clear();
         hasContextLifecycleEventObservers.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;
     }
 
     /**
diff --git 
a/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ExtensionLoader.java
 
b/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ExtensionLoader.java
index 83e18d7..4d067c3 100644
--- 
a/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ExtensionLoader.java
+++ 
b/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ExtensionLoader.java
@@ -219,6 +219,9 @@ public class ExtensionLoader
             // and at the same time observe it, we must ensure to build the 
observers only once the bean is available
             new ObserverMethodsBuilder<>(webBeansContext, 
extensionEntry.getValue())
                 .defineObserverMethods(extensionEntry.getKey(), true);
+
+            // avoid not picking up freshly added obsevers.
+            webBeansContext.getNotificationManager().clearCaches();
         }
     }
 

Reply via email to