package com.worktajm.repository; import com.worktajm.domain.SocialUserConnection; import org.springframework.social.connect.*; import java.util.List; import java.util.Set; import java.util.stream.Collectors; public class CustomSocialUsersConnectionRepository implements UsersConnectionRepository { private SocialUserConnectionRepository socialUserConnectionRepository; private ConnectionFactoryLocator connectionFactoryLocator; public CustomSocialUsersConnectionRepository(SocialUserConnectionRepository socialUserConnectionRepository, ConnectionFactoryLocator connectionFactoryLocator) { this.socialUserConnectionRepository = socialUserConnectionRepository; this.connectionFactoryLocator = connectionFactoryLocator; } @Override public List<String> findUserIdsWithConnection(Connection<?> connection) { ConnectionKey key = connection.getKey(); List<SocialUserConnection> socialUserConnections = socialUserConnectionRepository.findAllByProviderIdAndProviderUserId(key.getProviderId(), key.getProviderUserId()); return socialUserConnections.stream() .map(SocialUserConnection::getUserId) .collect(Collectors.toList()); }; @Override public Set<String> findUserIdsConnectedTo(String providerId, Set<String> providerUserIds) { List<SocialUserConnection> socialUserConnections = socialUserConnectionRepository.findAllByProviderIdAndProviderUserIdIn(providerId, providerUserIds); return socialUserConnections.stream() .map(SocialUserConnection::getUserId) .collect(Collectors.toSet()); }; @Override public ConnectionRepository createConnectionRepository(String userId) { if (userId == null) { throw new IllegalArgumentException("userId cannot be null"); } return new CustomSocialConnectionRepository(userId, socialUserConnectionRepository, connectionFactoryLocator); }; }