From 78dc2a8e2e111396b2aeb804c46f154d2b1271d5 Mon Sep 17 00:00:00 2001 From: kate Date: Thu, 13 Aug 2020 01:41:28 +0200 Subject: [PATCH] MID-6328 fix Logged in Users error --- .../ClusterwideUserSessionManagerImpl.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/ClusterwideUserSessionManagerImpl.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/ClusterwideUserSessionManagerImpl.java index e30b3690eff..1ead6fa80e1 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/ClusterwideUserSessionManagerImpl.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/security/ClusterwideUserSessionManagerImpl.java @@ -8,9 +8,9 @@ package com.evolveum.midpoint.model.impl.security; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; import javax.ws.rs.core.Response; import org.jetbrains.annotations.NotNull; @@ -64,8 +64,17 @@ public List getLoggedInPrincipals(Task task, Operatio List loggedUsers = guiProfiledPrincipalManager.getLocalLoggedInPrincipals(); - Map usersMap = loggedUsers.stream() - .collect(Collectors.toMap(key -> key.getFocus().getOid(), value -> value)); + Map usersMap = new HashMap<>(); + //fix for mid-6328 + loggedUsers.forEach(loggedUser -> { + UserSessionManagementType addedUser = usersMap.get(loggedUser.getFocus().getOid()); + if (addedUser != null) { + addedUser.setActiveSessions(addedUser.getActiveSessions() + loggedUser.getActiveSessions()); + addedUser.getNode().addAll(loggedUser.getNode()); + } else { + usersMap.put(loggedUser.getFocus().getOid(), loggedUser); + } + }); // We try to invoke this call also on nodes that are in transition. We want to get // information as complete as realistically possible.