From 7139f1b098507815bb4600bbc8d95aafba2f56c8 Mon Sep 17 00:00:00 2001 From: liquidjoo Date: Tue, 9 Jul 2019 13:56:38 +0900 Subject: [PATCH] User event handler to OAuth user --- .../service/user/UserEventListener.java | 17 ++++++++ .../testservice/service/user/UserService.java | 4 ++ .../service/user/UserServiceImpl.java | 42 ++++++++++++++++++- 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/test-service/src/main/java/io/bluemoon/testservice/service/user/UserEventListener.java b/test-service/src/main/java/io/bluemoon/testservice/service/user/UserEventListener.java index 2a1651a..70567fd 100644 --- a/test-service/src/main/java/io/bluemoon/testservice/service/user/UserEventListener.java +++ b/test-service/src/main/java/io/bluemoon/testservice/service/user/UserEventListener.java @@ -1,4 +1,21 @@ package io.bluemoon.testservice.service.user; +import io.bluemoon.testservice.domain.user.User; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; +import org.springframework.transaction.event.TransactionPhase; +import org.springframework.transaction.event.TransactionalEventListener; + +import java.io.IOException; + +@Component public class UserEventListener { + + @Async + @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT, classes = UserServiceImpl.UserCreateEvent.class) + public void handle(UserServiceImpl.UserCreateEvent event) throws IOException { + User user = event.getUser(); + + // oauth + } } diff --git a/test-service/src/main/java/io/bluemoon/testservice/service/user/UserService.java b/test-service/src/main/java/io/bluemoon/testservice/service/user/UserService.java index 0cb9a7b..96a9ad9 100644 --- a/test-service/src/main/java/io/bluemoon/testservice/service/user/UserService.java +++ b/test-service/src/main/java/io/bluemoon/testservice/service/user/UserService.java @@ -1,4 +1,8 @@ package io.bluemoon.testservice.service.user; +import io.bluemoon.testservice.domain.user.User; + public interface UserService { + + User createUser(User user); } diff --git a/test-service/src/main/java/io/bluemoon/testservice/service/user/UserServiceImpl.java b/test-service/src/main/java/io/bluemoon/testservice/service/user/UserServiceImpl.java index 59ce7a8..ca64e90 100644 --- a/test-service/src/main/java/io/bluemoon/testservice/service/user/UserServiceImpl.java +++ b/test-service/src/main/java/io/bluemoon/testservice/service/user/UserServiceImpl.java @@ -1,4 +1,44 @@ package io.bluemoon.testservice.service.user; -public class UserServiceImpl { +import io.bluemoon.testservice.domain.user.User; +import io.bluemoon.testservice.domain.user.UserRepository; +import lombok.Getter; +import lombok.NonNull; +import org.springframework.context.ApplicationEventPublisher; +import org.springframework.context.ApplicationEventPublisherAware; +import org.springframework.stereotype.Service; + +@Service +public class UserServiceImpl implements UserService, ApplicationEventPublisherAware { + + private UserRepository userRepository; + private ApplicationEventPublisher eventPublisher; + + public UserServiceImpl( + UserRepository userRepository + ) { + this.userRepository = userRepository; + } + + + @Override + public User createUser(User user) { + + userRepository.save(user); + return null; + } + + @Override + public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) { + this.eventPublisher = applicationEventPublisher; + } + + public static class UserCreateEvent { + @Getter + private User user; + + private UserCreateEvent(@NonNull User user) { + this.user = user; + } + } }