From 19f21fdd5c019cd2ea2bd29913e00ed9f82a07a4 Mon Sep 17 00:00:00 2001 From: "Brian M. Long" Date: Tue, 31 Aug 2021 19:54:39 -0400 Subject: [PATCH] fixed group multi-match snafu on startup --- .../ActivitiAppAdminMembersFixer.java | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/inteligr8/activiti/ActivitiAppAdminMembersFixer.java b/src/main/java/com/inteligr8/activiti/ActivitiAppAdminMembersFixer.java index 068a7cc..588e619 100644 --- a/src/main/java/com/inteligr8/activiti/ActivitiAppAdminMembersFixer.java +++ b/src/main/java/com/inteligr8/activiti/ActivitiAppAdminMembersFixer.java @@ -3,6 +3,8 @@ package com.inteligr8.activiti; import java.util.Arrays; import java.util.List; +import javax.persistence.NonUniqueResultException; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -65,21 +67,28 @@ public class ActivitiAppAdminMembersFixer implements DataFixer { return; Long tenantId = this.tenantFinderService.findTenantId(); - List groups; - Group group1 = this.groupService.getGroupByExternalIdAndTenantId(this.adminGroupExternalId, tenantId); - if (group1 != null) { - groups = Arrays.asList(group1); - } else { + List groups = null; + try { + Group group1 = this.groupService.getGroupByExternalIdAndTenantId(this.adminGroupExternalId, tenantId); + if (group1 != null) + groups = Arrays.asList(group1); + } catch (NonUniqueResultException nure) { + // suppress + } + if (groups == null) groups = this.groupService.getGroupByNameAndTenantId(this.adminGroupName, tenantId); - } + this.logger.debug("Found {} admin group(s)", groups.size()); for (String email : adminUsers) { - User user = this.userService.findUserByEmail(email); - - this.logger.debug("Adding {} to admin group(s)", user.getEmail()); - for (Group group : groups) - this.groupService.addUserToGroup(group, user); + User user = this.userService.findUserByEmailAndTenantId(email, tenantId); + if (user == null) { + this.logger.info("The user with email '{}' does not exist, so they cannot be added as an administrator", email); + } else { + this.logger.debug("Adding {} to admin group(s)", user.getEmail()); + for (Group group : groups) + this.groupService.addUserToGroup(group, user); + } } }