Skip to content

Commit e40017c

Browse files
feat: add custom exceptions
these new exceptions are meant to replace the RuntimeException used so often in the service layer
1 parent 0b2623a commit e40017c

7 files changed

Lines changed: 91 additions & 0 deletions

File tree

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.vianavitor.simplelibrarygame.controller;
2+
3+
import com.vianavitor.simplelibrarygame.dto.ApiResponse;
4+
import com.vianavitor.simplelibrarygame.exception.*;
5+
import jakarta.servlet.http.HttpServletRequest;
6+
import org.springframework.http.HttpStatus;
7+
import org.springframework.http.ResponseEntity;
8+
import org.springframework.web.bind.annotation.ExceptionHandler;
9+
import org.springframework.web.bind.annotation.RestControllerAdvice;
10+
11+
@RestControllerAdvice
12+
public class GlobalExceptionHandler {
13+
14+
@ExceptionHandler(ResourceNotFoundException.class)
15+
public ResponseEntity<ApiResponse<Void>> handleNotFound(ResourceNotFoundException ex, HttpServletRequest request) {
16+
ApiResponse<Void> response = ApiResponse.error(ex.getMessage(), request.getRequestURI());
17+
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(response);
18+
}
19+
20+
@ExceptionHandler(DuplicateResourceException.class)
21+
public ResponseEntity<ApiResponse<Void>> handleDuplicate(DuplicateResourceException ex, HttpServletRequest request) {
22+
ApiResponse<Void> response = ApiResponse.error(ex.getMessage(), request.getRequestURI());
23+
return ResponseEntity.status(HttpStatus.CONFLICT).body(response);
24+
}
25+
26+
@ExceptionHandler(InvalidOperationException.class)
27+
public ResponseEntity<ApiResponse<Void>> handleInvalidOperation(InvalidOperationException ex, HttpServletRequest request) {
28+
ApiResponse<Void> response = ApiResponse.error(ex.getMessage(), request.getRequestURI());
29+
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(response);
30+
}
31+
32+
@ExceptionHandler(UserDeactivatedException.class)
33+
public ResponseEntity<ApiResponse<Void>> handleUserDeactivated(UserDeactivatedException ex, HttpServletRequest request) {
34+
ApiResponse<Void> response = ApiResponse.error(ex.getMessage(), request.getRequestURI());
35+
return ResponseEntity.status(HttpStatus.FORBIDDEN).body(response);
36+
}
37+
38+
@ExceptionHandler(UnsupportedFileTypeException.class)
39+
public ResponseEntity<ApiResponse<Void>> handleUnsupportedFile(UnsupportedFileTypeException ex, HttpServletRequest request) {
40+
ApiResponse<Void> response = ApiResponse.error(ex.getMessage(), request.getRequestURI());
41+
return ResponseEntity.status(HttpStatus.UNSUPPORTED_MEDIA_TYPE).body(response);
42+
}
43+
44+
@ExceptionHandler(RuntimeException.class)
45+
public ResponseEntity<ApiResponse<Void>> handleGenericRuntime(RuntimeException ex, HttpServletRequest request) {
46+
ApiResponse<Void> response = ApiResponse.error(ex.getMessage(), request.getRequestURI());
47+
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(response);
48+
}
49+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.vianavitor.simplelibrarygame.exception;
2+
3+
public class DuplicateResourceException extends RuntimeException {
4+
public DuplicateResourceException(String message) {
5+
super(message);
6+
}
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.vianavitor.simplelibrarygame.exception;
2+
3+
public class InvalidOperationException extends RuntimeException {
4+
public InvalidOperationException(String message) {
5+
super(message);
6+
}
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.vianavitor.simplelibrarygame.exception;
2+
3+
public class ResourceNotFoundException extends RuntimeException {
4+
public ResourceNotFoundException(String message) {
5+
super(message);
6+
}
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.vianavitor.simplelibrarygame.exception;
2+
3+
public class UnconfirmedOperationException extends RuntimeException {
4+
public UnconfirmedOperationException(String message) {
5+
super(message);
6+
}
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.vianavitor.simplelibrarygame.exception;
2+
3+
public class UnsupportedFileTypeException extends RuntimeException {
4+
public UnsupportedFileTypeException(String message) {
5+
super(message);
6+
}
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.vianavitor.simplelibrarygame.exception;
2+
3+
public class UserDeactivatedException extends RuntimeException {
4+
public UserDeactivatedException(String message) {
5+
super(message);
6+
}
7+
}

0 commit comments

Comments
 (0)