You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2021/07/26 09:56:56 UTC

[isis] 02/02: ISIS-2824: makes UserService fault tolerant to implementations ...

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-2824
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 24a8e745325fc6e1cc48b7fd3fbf0290a0d92630
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jul 26 10:56:29 2021 +0100

    ISIS-2824: makes UserService fault tolerant to implementations ...
    
    .. of ImpersonatedUserHolder that throw exceptions
---
 .../isis/applib/services/user/UserService.java      | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/user/UserService.java b/api/applib/src/main/java/org/apache/isis/applib/services/user/UserService.java
index b6e7f94..9e37265 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/user/UserService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/user/UserService.java
@@ -26,14 +26,13 @@ import javax.annotation.Priority;
 import javax.inject.Inject;
 import javax.inject.Named;
 
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.stereotype.Service;
-
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.services.iactnlayer.InteractionContext;
 import org.apache.isis.applib.services.iactnlayer.InteractionLayerTracker;
 import org.apache.isis.applib.services.sudo.SudoService;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Service;
 
 import lombok.RequiredArgsConstructor;
 import lombok.val;
@@ -138,7 +137,6 @@ public class UserService {
      * @see #currentUser()
      * @see #supportsImpersonation()
      * @see #impersonateUser(String, List)
-     * @see #impersonatedUserIfAny()
      * @see #stopImpersonating()
      */
     public boolean isImpersonating() {
@@ -158,7 +156,6 @@ public class UserService {
      * </p>
      *
      * @see #impersonateUser(String, List)
-     * @see #impersonatedUserIfAny()
      * @see #isImpersonating()
      * @see #stopImpersonating()
      *
@@ -170,9 +167,16 @@ public class UserService {
     }
 
     private Optional<ImpersonatedUserHolder> impersonatingHolder() {
-        return impersonatedUserHolders.stream()
-                .filter(ImpersonatedUserHolder::supportsImpersonation)
-                .findFirst();
+        for (ImpersonatedUserHolder impersonatedUserHolder : impersonatedUserHolders) {
+            try {
+                if (impersonatedUserHolder.supportsImpersonation()) {
+                    return Optional.of(impersonatedUserHolder);
+                }
+            } catch (Exception ignore) {
+                // ignore
+            }
+        }
+        return Optional.empty();
     }
 
     /**
@@ -191,7 +195,6 @@ public class UserService {
      * </p>
      *
      * @see #supportsImpersonation()
-     * @see #impersonatedUserIfAny()
      * @see #isImpersonating()
      * @see #stopImpersonating()
      *