Commit 11fb58bf authored by devteria's avatar devteria

update

parent c92a7378
package com.devteria.identityservice.controller;
import com.devteria.identityservice.dto.request.ApiResponse;
import com.devteria.identityservice.dto.request.UserCreationRequest;
import com.devteria.identityservice.dto.request.UserUpdateRequest;
import com.devteria.identityservice.entity.User;
......@@ -17,8 +18,12 @@ public class UserController {
private UserService userService;
@PostMapping
User createUser(@RequestBody @Valid UserCreationRequest request){
return userService.createUser(request);
ApiResponse<User> createUser(@RequestBody @Valid UserCreationRequest request){
ApiResponse<User> apiResponse = new ApiResponse<>();
apiResponse.setResult(userService.createUser(request));
return apiResponse;
}
@GetMapping
......
package com.devteria.identityservice.dto.request;
import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ApiResponse <T> {
private int code = 1000;
private String message;
private T result;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getResult() {
return result;
}
public void setResult(T result) {
this.result = result;
}
}
......@@ -5,10 +5,10 @@ import jakarta.validation.constraints.Size;
import java.time.LocalDate;
public class UserCreationRequest {
@Size(min = 3,message = "Username must be at least 3 characters")
@Size(min = 3,message = "USERNAME_INVALID")
private String username;
@Size(min = 8, message = "Password must be at least 8 characters")
@Size(min = 8, message = "INVALID_PASSWORD")
private String password;
private String firstName;
private String lastName;
......
package com.devteria.identityservice.exception;
public class AppException extends RuntimeException{
public AppException(ErrorCode errorCode) {
super(errorCode.getMessage());
this.errorCode = errorCode;
}
private ErrorCode errorCode;
public ErrorCode getErrorCode() {
return errorCode;
}
public void setErrorCode(ErrorCode errorCode) {
this.errorCode = errorCode;
}
}
package com.devteria.identityservice.exception;
public enum ErrorCode {
UNCATEGORIZED_EXCEPTION(9999, "Uncategorized error"),
INVALID_KEY(1001, "Uncategorized error"),
USER_EXISTED(1002, "User existed"),
USERNAME_INVALID(1003, "Username must be at least 3 characters"),
INVALID_PASSWORD(1004, "Password must be at least 8 characters")
;
ErrorCode(int code, String message) {
this.code = code;
this.message = message;
}
private int code;
private String message;
public int getCode() {
return code;
}
public String getMessage() {
return message;
}
}
package com.devteria.identityservice.exception;
import com.devteria.identityservice.dto.request.ApiResponse;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
......@@ -8,13 +9,44 @@ import org.springframework.web.bind.annotation.ExceptionHandler;
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = RuntimeException.class)
ResponseEntity<String> handlingRuntimeException(RuntimeException exception){
return ResponseEntity.badRequest().body(exception.getMessage());
@ExceptionHandler(value = Exception.class)
ResponseEntity<ApiResponse> handlingRuntimeException(RuntimeException exception){
ApiResponse apiResponse = new ApiResponse();
apiResponse.setCode(ErrorCode.UNCATEGORIZED_EXCEPTION.getCode());
apiResponse.setMessage(ErrorCode.UNCATEGORIZED_EXCEPTION.getMessage());
return ResponseEntity.badRequest().body(apiResponse);
}
@ExceptionHandler(value = AppException.class)
ResponseEntity<ApiResponse> handlingAppException(AppException exception){
ErrorCode errorCode = exception.getErrorCode();
ApiResponse apiResponse = new ApiResponse();
apiResponse.setCode(errorCode.getCode());
apiResponse.setMessage(errorCode.getMessage());
return ResponseEntity.badRequest().body(apiResponse);
}
@ExceptionHandler(value = MethodArgumentNotValidException.class)
ResponseEntity<String> handlingValidation(MethodArgumentNotValidException exception){
return ResponseEntity.badRequest().body(exception.getFieldError().getDefaultMessage());
ResponseEntity<ApiResponse> handlingValidation(MethodArgumentNotValidException exception){
String enumKey = exception.getFieldError().getDefaultMessage();
ErrorCode errorCode = ErrorCode.INVALID_KEY;
try {
errorCode = ErrorCode.valueOf(enumKey);
} catch (IllegalArgumentException e){
}
ApiResponse apiResponse = new ApiResponse();
apiResponse.setCode(errorCode.getCode());
apiResponse.setMessage(errorCode.getMessage());
return ResponseEntity.badRequest().body(apiResponse);
}
}
......@@ -3,6 +3,8 @@ package com.devteria.identityservice.service;
import com.devteria.identityservice.dto.request.UserCreationRequest;
import com.devteria.identityservice.dto.request.UserUpdateRequest;
import com.devteria.identityservice.entity.User;
import com.devteria.identityservice.exception.AppException;
import com.devteria.identityservice.exception.ErrorCode;
import com.devteria.identityservice.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -18,7 +20,7 @@ public class UserService {
User user = new User();
if (userRepository.existsByUsername(request.getUsername()))
throw new RuntimeException("User existed.");
throw new AppException(ErrorCode.USER_EXISTED);
user.setUsername(request.getUsername());
user.setPassword(request.getPassword());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment