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 2021/07/22 13:27:16 UTC

[isis] 01/01: ISIS-2816: ImpersonatedUserHolderForWicket: guards against RequestCycle not available

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

commit a2c3cac965641e6ee74421cb1a2a84fef0bd34f3
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jul 22 15:26:57 2021 +0200

    ISIS-2816: ImpersonatedUserHolderForWicket: guards against RequestCycle
    not available
---
 .../viewer/services/ImpersonatedUserHolderForWicket.java       | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/ImpersonatedUserHolderForWicket.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/ImpersonatedUserHolderForWicket.java
index 660758e..0a03dbd 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/ImpersonatedUserHolderForWicket.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/ImpersonatedUserHolderForWicket.java
@@ -23,12 +23,15 @@ import java.util.Optional;
 import javax.inject.Named;
 
 import org.apache.wicket.Session;
+import org.apache.wicket.request.cycle.RequestCycle;
 import org.springframework.stereotype.Component;
 
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.services.user.ImpersonatedUserHolder;
 import org.apache.isis.applib.services.user.UserMemento;
 
+import lombok.val;
+
 /**
  * Implementation that supports impersonation, using the Wicket {@link Session}
  * to store the value.
@@ -71,7 +74,12 @@ public class ImpersonatedUserHolderForWicket implements ImpersonatedUserHolder {
     }
 
     private static Optional<Session> session() {
-        return Optional.ofNullable(Session.get());
+        //XXX[ISIS-2816] guards against RequestCycle not available,
+        // when in the process of expiring the Session
+        val requestCycle = RequestCycle.get();
+        return requestCycle != null
+                ? Optional.of(Session.get())
+                : Optional.empty();
     }
 
 }