Skip to content

Commit

Permalink
feat: update global exception handler
Browse files Browse the repository at this point in the history
  • Loading branch information
UmaxCode committed Jan 17, 2025
1 parent 1ffd303 commit f87291b
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/main/java/org/umaxcode/exception/ErrorMessage.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@
public class ErrorMessage {

private String path;
private String message;
private Object message;
private String timestamp;
}
44 changes: 44 additions & 0 deletions src/main/java/org/umaxcode/exception/GlobalExceptionHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,17 @@

import jakarta.servlet.http.HttpServletRequest;
import org.springframework.http.HttpStatus;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.core.AuthenticationException;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;

@RestControllerAdvice
public class GlobalExceptionHandler {
Expand All @@ -22,6 +28,44 @@ public ErrorMessage taskManagementExceptionHandler(TaskManagementException ex, H
.build();
}

@ExceptionHandler(AuthenticationException.class)
@ResponseStatus(HttpStatus.UNAUTHORIZED)
public ErrorMessage authenticationExceptionHandler(AuthenticationException ex, HttpServletRequest request) {

return ErrorMessage.builder()
.path(request.getRequestURI())
.message(ex.getMessage())
.timestamp(LocalDateTime.now().toString())
.build();
}

@ExceptionHandler(AccessDeniedException.class)
@ResponseStatus(HttpStatus.FORBIDDEN)
public ErrorMessage accessDeniedHandler(AccessDeniedException ex, HttpServletRequest request) {

return ErrorMessage.builder()
.path(request.getRequestURI())
.message("You do not have permission to access this resource.")
.timestamp(LocalDateTime.now().toString())
.build();
}

@ExceptionHandler(MethodArgumentNotValidException.class)
public ErrorMessage handleArgumentNotValidException(MethodArgumentNotValidException ex, HttpServletRequest request) {

Map<String, String> errors = new HashMap<>();

for (FieldError error : ex.getBindingResult().getFieldErrors()) {
errors.put(error.getField(), error.getDefaultMessage());
}

return ErrorMessage.builder()
.path(request.getRequestURI())
.message(errors)
.timestamp(LocalDateTime.now().toString())
.build();
}

@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public ErrorMessage exceptionHandler(Exception ex, HttpServletRequest request) {
Expand Down

0 comments on commit f87291b

Please sign in to comment.