diff --git a/src/main/java/org/hydev/clock_api/controller/RegistryExceptionHandler.java b/src/main/java/org/hydev/clock_api/controller/CommonExceptionHandler.java similarity index 96% rename from src/main/java/org/hydev/clock_api/controller/RegistryExceptionHandler.java rename to src/main/java/org/hydev/clock_api/controller/CommonExceptionHandler.java index 6a02879..b120d13 100644 --- a/src/main/java/org/hydev/clock_api/controller/RegistryExceptionHandler.java +++ b/src/main/java/org/hydev/clock_api/controller/CommonExceptionHandler.java @@ -11,7 +11,7 @@ import java.util.List; import java.util.stream.Collectors; @RestControllerAdvice -public class RegistryExceptionHandler { +public class CommonExceptionHandler { @ExceptionHandler(ConstraintViolationException.class) // ConstraintViolationException will be wrapped to TransactionSystemException! // https://stackoverflow.com/questions/45070642/springboot-doesnt-handle-org-hibernate-exception-constraintviolationexception diff --git a/src/main/java/org/hydev/clock_api/controller/RegistryControllerAspect.java b/src/main/java/org/hydev/clock_api/controller/RegistryControllerAspect.java deleted file mode 100644 index 8037804..0000000 --- a/src/main/java/org/hydev/clock_api/controller/RegistryControllerAspect.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.hydev.clock_api.controller; - -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.Aspect; -import org.hydev.clock_api.error.ErrorCode; -import org.hydev.clock_api.repository.UserRepository; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Component; - -import java.util.List; - -@Aspect -@Component -public class RegistryControllerAspect { - private final UserRepository userRepository; - - public RegistryControllerAspect(UserRepository userRepository) { - this.userRepository = userRepository; - } - - @Around(value = "execution(* RegistryController.register(String, String)) " + - "&& args(username, password)", argNames = "pjp, username, password") - // Even if I'm not use the password argument, I still should write it out! - private Object checkUsernameExists(ProceedingJoinPoint pjp, String username, String password) throws Throwable { - if (userRepository.existsByUsername(username)) - return ResponseEntity.status(HttpStatus.NOT_ACCEPTABLE) - .body(List.of(ErrorCode.USER_NAME_ALREADY_EXISTS)); - return pjp.proceed(); - } -} diff --git a/src/main/java/org/hydev/clock_api/controller/RegistryController.java b/src/main/java/org/hydev/clock_api/controller/UserController.java similarity index 90% rename from src/main/java/org/hydev/clock_api/controller/RegistryController.java rename to src/main/java/org/hydev/clock_api/controller/UserController.java index 9f2f2af..27d9e8c 100644 --- a/src/main/java/org/hydev/clock_api/controller/RegistryController.java +++ b/src/main/java/org/hydev/clock_api/controller/UserController.java @@ -15,15 +15,16 @@ import org.springframework.web.bind.annotation.RestController; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; +import java.util.List; @Validated @RestController @RequestMapping("/user") -public class RegistryController { +public class UserController { private final UserRepository userRepository; @Autowired - public RegistryController(UserRepository userRepository) { + public UserController(UserRepository userRepository) { this.userRepository = userRepository; } @@ -41,7 +42,9 @@ public class RegistryController { @RequestHeader String password ) { // First, spring will check args. If not pass there regex, raise ConstraintViolationException. - // Then, the aspect will check username if already exists. + // Check if username not exists. + if (userRepository.existsByUsername(username)) + return ResponseEntity.status(HttpStatus.NOT_ACCEPTABLE).body(ErrorCode.USER_NAME_ALREADY_EXISTS); User user = new User(); user.setUsername(username);