You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2023/12/07 23:43:13 UTC
(causeway) 01/01: CAUSEWAY-3579: adds a guard in MessageBroker to (try to) prevent calls
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-3579
in repository https://gitbox.apache.org/repos/asf/causeway.git
commit de97e953b14aca096dc19788069e9a1c13beceb8
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Dec 7 23:42:52 2023 +0000
CAUSEWAY-3579: adds a guard in MessageBroker to (try to) prevent calls
to the session-scoped MessageBroker if there is no session. As an approximation of this, we listen
to whether the Metamodel is built yet.
---
.../runtimeservices/message/MessageServiceDefault.java | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/message/MessageServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/message/MessageServiceDefault.java
index 8a04b9fab3..3cffc7a1ea 100644
--- a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/message/MessageServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/message/MessageServiceDefault.java
@@ -25,6 +25,8 @@ import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Provider;
+import org.apache.causeway.applib.events.metamodel.MetamodelListener;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
@@ -42,13 +44,20 @@ import org.apache.causeway.core.runtimeservices.CausewayModuleCoreRuntimeService
@Named(CausewayModuleCoreRuntimeServices.NAMESPACE + ".MessageServiceDefault")
@Priority(PriorityPrecedence.MIDPOINT)
@Qualifier("Default")
-public class MessageServiceDefault implements MessageService {
+public class MessageServiceDefault implements MessageService, MetamodelListener {
@Inject private TranslationService translationService;
@Autowired(required = false)
private Provider<MessageBroker> sessionScopedMessageBroker;
+ private boolean metaModelLoaded = false;
+
+ @Override
+ public void onMetamodelLoaded() {
+ metaModelLoaded = true;
+ }
+
@Override
public void informUser(final String message) {
currentMessageBroker()
@@ -130,6 +139,9 @@ public class MessageServiceDefault implements MessageService {
}
private Optional<MessageBroker> currentMessageBroker() {
+ if (!metaModelLoaded) {
+ return Optional.empty();
+ }
return Optional.ofNullable(sessionScopedMessageBroker) // only available with web contexts (Spring)
.map(Provider::get);
}