Sobes.tech
Junior — Senior

Asynchronous user data modification

livecode

Task condition

Conduct a review of the UserServiceImpl class, identifying potential issues in the implementation of asynchronous updates and subsequent user data saving.

@Service
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {

    private final UserRepository userRepository;
    private final NotificationService notificationService;

    @Override
    @Transactional
    public void updateUser(UUID id) {
        User user = userRepository.findById(id);
        user.setName(RandomStringUtils.random(6));
        userRepository.save(user);
        notifyAboutUpdatedUser(id);
    }

    @Override
    @Async
    public void notifyAboutUpdatedUser(UUID id) {
        User user = userRepository.findById(id);
        NotificationInfo notificationInfo = notificationService.notify(user);
        user.setNotifyInfoMessage(notificationInfo.getMessage());
        userRepository.save(user);
    }
}