From 1f4256124f76a0da74a5a796569d0de7787e8077 Mon Sep 17 00:00:00 2001
From: Phan Huy Tran
Date: Thu, 24 Apr 2025 14:33:38 +0200
Subject: [PATCH] refactor: throw and handle user not found exceptions
---
.../casino/blackjack/BlackJackGameController.java | 13 +++++++------
.../exceptionHandling/GlobalExceptionHandler.java | 14 +++-----------
.../ResourceNotFoundException.java | 11 -----------
.../exceptions/UserNotFoundException.java | 11 +++++++++++
.../szut/casino/lootboxes/LootBoxController.java | 3 ++-
.../java/de/szut/casino/slots/SlotController.java | 3 ++-
.../java/de/szut/casino/user/UserController.java | 3 ++-
7 files changed, 27 insertions(+), 31 deletions(-)
delete mode 100644 backend/src/main/java/de/szut/casino/exceptionHandling/ResourceNotFoundException.java
create mode 100644 backend/src/main/java/de/szut/casino/exceptionHandling/exceptions/UserNotFoundException.java
diff --git a/backend/src/main/java/de/szut/casino/blackjack/BlackJackGameController.java b/backend/src/main/java/de/szut/casino/blackjack/BlackJackGameController.java
index c9d5c26..0144a36 100644
--- a/backend/src/main/java/de/szut/casino/blackjack/BlackJackGameController.java
+++ b/backend/src/main/java/de/szut/casino/blackjack/BlackJackGameController.java
@@ -1,5 +1,6 @@
package de.szut.casino.blackjack;
+import de.szut.casino.exceptionHandling.exceptions.UserNotFoundException;
import de.szut.casino.shared.dto.BetDto;
import de.szut.casino.shared.service.BalanceService;
import de.szut.casino.user.UserEntity;
@@ -31,7 +32,7 @@ public class BlackJackGameController {
Optional optionalUser = userService.getCurrentUser(token);
if (optionalUser.isEmpty()) {
- return ResponseEntity.notFound().build();
+ throw new UserNotFoundException();
}
UserEntity user = optionalUser.get();
@@ -48,7 +49,7 @@ public class BlackJackGameController {
Optional optionalUser = userService.getCurrentUser(token);
if (optionalUser.isEmpty()) {
- return ResponseEntity.notFound().build();
+ throw new UserNotFoundException();
}
UserEntity user = optionalUser.get();
@@ -65,7 +66,7 @@ public class BlackJackGameController {
Optional optionalUser = userService.getCurrentUser(token);
if (optionalUser.isEmpty()) {
- return ResponseEntity.notFound().build();
+ throw new UserNotFoundException();
}
UserEntity user = optionalUser.get();
@@ -82,7 +83,7 @@ public class BlackJackGameController {
Optional optionalUser = userService.getCurrentUser(token);
if (optionalUser.isEmpty()) {
- return ResponseEntity.notFound().build();
+ throw new UserNotFoundException();
}
UserEntity user = optionalUser.get();
@@ -99,7 +100,7 @@ public class BlackJackGameController {
Optional optionalUser = userService.getCurrentUser(token);
if (optionalUser.isEmpty()) {
- return ResponseEntity.notFound().build();
+ throw new UserNotFoundException();
}
UserEntity user = optionalUser.get();
@@ -116,7 +117,7 @@ public class BlackJackGameController {
Optional optionalUser = userService.getCurrentUser(token);
if (optionalUser.isEmpty()) {
- return ResponseEntity.notFound().build();
+ throw new UserNotFoundException();
}
UserEntity user = optionalUser.get();
diff --git a/backend/src/main/java/de/szut/casino/exceptionHandling/GlobalExceptionHandler.java b/backend/src/main/java/de/szut/casino/exceptionHandling/GlobalExceptionHandler.java
index b307601..fde23e6 100644
--- a/backend/src/main/java/de/szut/casino/exceptionHandling/GlobalExceptionHandler.java
+++ b/backend/src/main/java/de/szut/casino/exceptionHandling/GlobalExceptionHandler.java
@@ -1,8 +1,6 @@
package de.szut.casino.exceptionHandling;
-import io.swagger.v3.oas.annotations.media.Content;
-import io.swagger.v3.oas.annotations.responses.ApiResponse;
-import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import de.szut.casino.exceptionHandling.exceptions.UserNotFoundException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
@@ -12,17 +10,11 @@ import org.springframework.web.context.request.WebRequest;
import java.util.Date;
@ControllerAdvice
-@ApiResponses(value = {
- @ApiResponse(responseCode = "500", description = "invalid JSON posted",
- content = @Content)
-})
public class GlobalExceptionHandler {
- @ExceptionHandler(ResourceNotFoundException.class)
- public ResponseEntity> handleHelloEntityNotFoundException(ResourceNotFoundException ex, WebRequest request) {
+ @ExceptionHandler(UserNotFoundException.class)
+ public ResponseEntity> handleUserNotFoundException(UserNotFoundException ex, WebRequest request) {
ErrorDetails errorDetails = new ErrorDetails(new Date(), ex.getMessage(), request.getDescription(false));
return new ResponseEntity<>(errorDetails, HttpStatus.NOT_FOUND);
}
-
-
}
diff --git a/backend/src/main/java/de/szut/casino/exceptionHandling/ResourceNotFoundException.java b/backend/src/main/java/de/szut/casino/exceptionHandling/ResourceNotFoundException.java
deleted file mode 100644
index 2217a39..0000000
--- a/backend/src/main/java/de/szut/casino/exceptionHandling/ResourceNotFoundException.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package de.szut.casino.exceptionHandling;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(value = HttpStatus.NOT_FOUND)
-public class ResourceNotFoundException extends RuntimeException {
- public ResourceNotFoundException(String message) {
- super(message);
- }
-}
diff --git a/backend/src/main/java/de/szut/casino/exceptionHandling/exceptions/UserNotFoundException.java b/backend/src/main/java/de/szut/casino/exceptionHandling/exceptions/UserNotFoundException.java
new file mode 100644
index 0000000..6916a66
--- /dev/null
+++ b/backend/src/main/java/de/szut/casino/exceptionHandling/exceptions/UserNotFoundException.java
@@ -0,0 +1,11 @@
+package de.szut.casino.exceptionHandling.exceptions;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(value = HttpStatus.NOT_FOUND)
+public class UserNotFoundException extends RuntimeException {
+ public UserNotFoundException() {
+ super("user not found");
+ }
+}
diff --git a/backend/src/main/java/de/szut/casino/lootboxes/LootBoxController.java b/backend/src/main/java/de/szut/casino/lootboxes/LootBoxController.java
index 2d4309d..1070e6c 100644
--- a/backend/src/main/java/de/szut/casino/lootboxes/LootBoxController.java
+++ b/backend/src/main/java/de/szut/casino/lootboxes/LootBoxController.java
@@ -1,5 +1,6 @@
package de.szut.casino.lootboxes;
+import de.szut.casino.exceptionHandling.exceptions.UserNotFoundException;
import de.szut.casino.user.UserEntity;
import de.szut.casino.user.UserRepository;
import de.szut.casino.user.UserService;
@@ -37,7 +38,7 @@ public class LootBoxController {
Optional optionalUser = userService.getCurrentUser(token);
if (optionalUser.isEmpty()) {
- return ResponseEntity.notFound().build();
+ throw new UserNotFoundException();
}
UserEntity user = optionalUser.get();
diff --git a/backend/src/main/java/de/szut/casino/slots/SlotController.java b/backend/src/main/java/de/szut/casino/slots/SlotController.java
index 8f98b1d..bb96715 100644
--- a/backend/src/main/java/de/szut/casino/slots/SlotController.java
+++ b/backend/src/main/java/de/szut/casino/slots/SlotController.java
@@ -1,5 +1,6 @@
package de.szut.casino.slots;
+import de.szut.casino.exceptionHandling.exceptions.UserNotFoundException;
import de.szut.casino.shared.dto.BetDto;
import de.szut.casino.shared.service.BalanceService;
import de.szut.casino.user.UserEntity;
@@ -31,7 +32,7 @@ public class SlotController {
Optional optionalUser = userService.getCurrentUser(token);
if (optionalUser.isEmpty()) {
- return ResponseEntity.notFound().build();
+ throw new UserNotFoundException();
}
UserEntity user = optionalUser.get();
diff --git a/backend/src/main/java/de/szut/casino/user/UserController.java b/backend/src/main/java/de/szut/casino/user/UserController.java
index c2ad0d0..a5cae8c 100644
--- a/backend/src/main/java/de/szut/casino/user/UserController.java
+++ b/backend/src/main/java/de/szut/casino/user/UserController.java
@@ -1,5 +1,6 @@
package de.szut.casino.user;
+import de.szut.casino.exceptionHandling.exceptions.UserNotFoundException;
import de.szut.casino.user.dto.CreateUserDto;
import de.szut.casino.user.dto.GetUserDto;
import jakarta.validation.Valid;
@@ -34,7 +35,7 @@ public class UserController {
GetUserDto userData = userService.getCurrentUserAsDto(token);
if (userData == null) {
- return ResponseEntity.notFound().build();
+ throw new UserNotFoundException();
}
return ResponseEntity.ok(userData);