@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
public RemoteUser createRemoteUser(String userId, String providerId,
String providerUserId, int rank, String displayName,
String profileUrl, String imageUrl, String accessToken,
String secret, String refreshToken, Long expireTime) {
RemoteUser remoteUser = createNewUserConnection(userId, providerId,
providerUserId, rank, displayName, profileUrl, imageUrl,
accessToken, secret, refreshToken, expireTime);
try {
RemoteUser existingConnection = get(userId, providerId,
providerUserId);
if (existingConnection != null)
throw new DuplicateConnectionException(new ConnectionKey(
providerId, providerUserId));
} catch (EmptyResultDataAccessException e) {