public UserEntity resolveUser()

in data-catalog-api/server/custos-sharing/src/main/java/org/apache/airavata/datacatalog/api/sharing/SharingManagerImpl.java [131:160]


    public UserEntity resolveUser(UserInfo userInfo) throws SharingException {

        Optional<UserEntity> maybeUserEntity = userRepository.findByExternalIdAndTenant_ExternalId(userInfo.getUserId(),
                userInfo.getTenantId());
        if (maybeUserEntity.isPresent()) {
            return maybeUserEntity.get();
        } else {
            try (UserManagementClient userManagementClient = custosClientProvider.getUserManagementClient()) {
                FindUsersResponse findUsersResponse = userManagementClient.findUsers(userInfo.getTenantId(),
                        null, userInfo.getUserId(), null, null, null, 0, 1);
                if (!findUsersResponse.getUsersList().isEmpty()) {
                    UserRepresentation userProfile = findUsersResponse.getUsersList().get(0);
                    TenantEntity tenantEntity = resolveTenant(userInfo);

                    UserEntity userEntity = new UserEntity();
                    userEntity.setExternalId(userProfile.getUsername());
                    userEntity.setName(userProfile.getUsername());
                    userEntity.setTenant(tenantEntity);
                    return userRepository.save(userEntity);
                } else {
                    throw new SharingException("User " + userInfo.getUserId() + " in tenant "
                            + userInfo.getTenantId() + " not found in Identity Sever ");
                }
            } catch (IOException e) {
                throw new SharingException("Error occurred while resolving user " + userInfo.getUserId()
                        + " tenant " + userInfo.getTenantId(), e);
            }
        }

    }