[M] Rename Controller & Excpetion Handler, merge Aspect to class.
This commit is contained in:
+1
-1
@@ -11,7 +11,7 @@ import java.util.List;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@RestControllerAdvice
|
@RestControllerAdvice
|
||||||
public class RegistryExceptionHandler {
|
public class CommonExceptionHandler {
|
||||||
@ExceptionHandler(ConstraintViolationException.class)
|
@ExceptionHandler(ConstraintViolationException.class)
|
||||||
// ConstraintViolationException will be wrapped to TransactionSystemException!
|
// ConstraintViolationException will be wrapped to TransactionSystemException!
|
||||||
// https://stackoverflow.com/questions/45070642/springboot-doesnt-handle-org-hibernate-exception-constraintviolationexception
|
// https://stackoverflow.com/questions/45070642/springboot-doesnt-handle-org-hibernate-exception-constraintviolationexception
|
||||||
@@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+6
-3
@@ -15,15 +15,16 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import javax.validation.constraints.Pattern;
|
import javax.validation.constraints.Pattern;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Validated
|
@Validated
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/user")
|
@RequestMapping("/user")
|
||||||
public class RegistryController {
|
public class UserController {
|
||||||
private final UserRepository userRepository;
|
private final UserRepository userRepository;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public RegistryController(UserRepository userRepository) {
|
public UserController(UserRepository userRepository) {
|
||||||
this.userRepository = userRepository;
|
this.userRepository = userRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,7 +42,9 @@ public class RegistryController {
|
|||||||
@RequestHeader String password
|
@RequestHeader String password
|
||||||
) {
|
) {
|
||||||
// First, spring will check args. If not pass there regex, raise ConstraintViolationException.
|
// 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 user = new User();
|
||||||
user.setUsername(username);
|
user.setUsername(username);
|
||||||
Reference in New Issue
Block a user