UserManagementServiceImpl.java

package net.andresbustamante.yafoot.users.services.impl;

import net.andresbustamante.yafoot.commons.exceptions.DirectoryException;
import net.andresbustamante.yafoot.commons.model.UserContext;
import net.andresbustamante.yafoot.users.model.User;
import net.andresbustamante.yafoot.users.repository.UserRepository;
import net.andresbustamante.yafoot.users.services.UserManagementService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserManagementServiceImpl implements UserManagementService {

    private final Logger log = LoggerFactory.getLogger(UserManagementServiceImpl.class);

    private final UserRepository userRepository;

    public UserManagementServiceImpl(final UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    @Transactional(propagation = Propagation.REQUIRES_NEW)
    @Override
    public void updateUser(final User user, final UserContext ctx) throws DirectoryException {
        userRepository.updateUser(user);
        log.info("Details successfully updated for user {}", user);
    }

    @Transactional(propagation = Propagation.REQUIRES_NEW)
    @Override
    public void deleteUser(final User user, final UserContext ctx) throws DirectoryException {
        userRepository.deleteUser(user);
        log.info("User {} successfully deleted", user.getEmail());
    }
}