Cześć,
otóż głowię się jak poprawnie zwrócić exception np. NOT FOUND przy poprawnym zwracaniu ResponseEntity
oto moja metoda z kontrolera:
@GetMapping("/{id}")
public ResponseEntity<CustomerDTO> getCustomer(@PathVariable Long id) {
Optional<CustomerDTO> customer = customerService.findById(id);
return new ResponseEntity<>(customer, HttpStatus.CREATED)
.orElseThrow(() -> new UserNotFoundException(id));
}
No i tutaj łapię, że orElseThrow
nie może zostać wywołany.
Tutaj handler, exception:
@ControllerAdvice
public class RestExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(UserNotFoundException.class)
public ResponseEntity<Object> userNotFound(UserNotFoundException ex) {
UserNotFoundResponse response = new UserNotFoundResponse(
HttpStatus.NOT_FOUND.value(),
ex.getMessage(),
System.currentTimeMillis()
);
return new ResponseEntity<>(response, HttpStatus.NOT_FOUND);
}
}
public class UserNotFoundException extends RuntimeException {
public UserNotFoundException(Long id) {
super("User with id: " + id + " not found.");
}
public UserNotFoundException(String login) {
super("User with login: " + login + " not found.");
}
}
Jak to poprawnie rozwiązać?
Z góry dzięki.