You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/02/17 05:39:47 UTC
[isis] branch master updated: ISIS-2291: fix possible NPE on
JGrowlBehaviour for good
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 88bf3d7 ISIS-2291: fix possible NPE on JGrowlBehaviour for good
88bf3d7 is described below
commit 88bf3d732aca86a23e68dff892a0c9bba5318a74
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Feb 17 06:39:38 2020 +0100
ISIS-2291: fix possible NPE on JGrowlBehaviour for good
---
.../webapp/context/IsisWebAppCommonContext.java | 14 +++++++++++++
.../viewer/wicket/ui/errors/JGrowlBehaviour.java | 23 ++++++----------------
2 files changed, 20 insertions(+), 17 deletions(-)
diff --git a/core/webapp/src/main/java/org/apache/isis/core/webapp/context/IsisWebAppCommonContext.java b/core/webapp/src/main/java/org/apache/isis/core/webapp/context/IsisWebAppCommonContext.java
index 6b4c2af..d6d5956 100644
--- a/core/webapp/src/main/java/org/apache/isis/core/webapp/context/IsisWebAppCommonContext.java
+++ b/core/webapp/src/main/java/org/apache/isis/core/webapp/context/IsisWebAppCommonContext.java
@@ -18,6 +18,7 @@
*/
package org.apache.isis.core.webapp.context;
+import java.util.Optional;
import java.util.function.Function;
import java.util.function.Supplier;
@@ -33,18 +34,22 @@ import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
import org.apache.isis.core.runtime.session.IsisSession;
+import org.apache.isis.core.security.authentication.AuthenticationSession;
+import org.apache.isis.core.security.authentication.MessageBroker;
import org.apache.isis.core.webapp.context.memento.ObjectMemento;
import org.apache.isis.core.webapp.context.memento.ObjectMementoService;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.val;
+import lombok.extern.log4j.Log4j2;
/**
*
* @since 2.0
*
*/
+@Log4j2
public class IsisWebAppCommonContext implements MetaModelContext.Delegating {
/**
@@ -72,6 +77,15 @@ public class IsisWebAppCommonContext implements MetaModelContext.Delegating {
return IsisSession.currentOrElseNull();
}
+ public Optional<MessageBroker> getMessageBroker() {
+ val messageBroker = Optional.ofNullable(getAuthenticationSession())
+ .map(AuthenticationSession::getMessageBroker);
+ if(!messageBroker.isPresent()) {
+ log.warn("failed to locate a MessageBroker on current AuthenticationSession");
+ }
+ return messageBroker;
+ }
+
// -- SHORTCUTS
public <T> T lookupServiceElseFail(Class<T> serviceClass) {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlBehaviour.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlBehaviour.java
index 6177f4d..93d7def 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlBehaviour.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/errors/JGrowlBehaviour.java
@@ -18,8 +18,6 @@
*/
package org.apache.isis.viewer.wicket.ui.errors;
-import java.util.Optional;
-
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -30,12 +28,9 @@ import org.apache.wicket.request.resource.JavaScriptResourceReference;
import org.apache.isis.applib.RecoverableException;
import org.apache.isis.core.commons.internal.base._Strings;
-import org.apache.isis.core.security.authentication.AuthenticationSession;
import org.apache.isis.core.security.authentication.MessageBroker;
import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
-
-import lombok.val;
-import lombok.extern.log4j.Log4j2;
+import org.apache.isis.viewer.wicket.model.common.CommonContextUtils;
/**
* Attach to any Ajax button that might trigger a notification (ie calls
@@ -49,11 +44,10 @@ import lombok.extern.log4j.Log4j2;
* editButton.add(new JGrowlBehaviour());
* </pre>
*/
-@Log4j2
public class JGrowlBehaviour extends AbstractDefaultAjaxBehavior {
private static final long serialVersionUID = 1L;
- private final transient IsisWebAppCommonContext commonContext;
+ private transient IsisWebAppCommonContext commonContext;
public JGrowlBehaviour(IsisWebAppCommonContext commonContext) {
this.commonContext = commonContext;
@@ -62,7 +56,7 @@ public class JGrowlBehaviour extends AbstractDefaultAjaxBehavior {
@Override
protected void respond(AjaxRequestTarget target) {
- getMessageBroker().ifPresent(messageBroker->{
+ getCommonContext().getMessageBroker().ifPresent(messageBroker->{
String feedbackMsg = JGrowlUtil.asJGrowlCalls(messageBroker);
if(!_Strings.isNullOrEmpty(feedbackMsg)) {
target.appendJavaScript(feedbackMsg);
@@ -82,7 +76,7 @@ public class JGrowlBehaviour extends AbstractDefaultAjaxBehavior {
JavaScriptHeaderItem
.forReference(new JavaScriptResourceReference(JGrowlBehaviour.class, "js/bootstrap-growl.js")));
- getMessageBroker().ifPresent(messageBroker->{
+ getCommonContext().getMessageBroker().ifPresent(messageBroker->{
String feedbackMsg = JGrowlUtil.asJGrowlCalls(messageBroker);
if(_Strings.isNotEmpty(feedbackMsg)) {
@@ -93,13 +87,8 @@ public class JGrowlBehaviour extends AbstractDefaultAjaxBehavior {
}
- protected Optional<MessageBroker> getMessageBroker() {
- val messageBroker = Optional.ofNullable(commonContext.getAuthenticationSession())
- .map(AuthenticationSession::getMessageBroker);
- if(!messageBroker.isPresent()) {
- log.warn("failed to locate a MessageBroker on current AuthenticationSession");
- }
- return messageBroker;
+ protected IsisWebAppCommonContext getCommonContext() {
+ return commonContext = CommonContextUtils.computeIfAbsent(commonContext);
}
}