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()
*