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