improved error handling
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
package bzh.risotto.galactik.api.exceptions;
|
||||
|
||||
public class CorpoNotFoundException extends RuntimeException {
|
||||
public class CorpoNotFoundException extends NotFoundException {
|
||||
|
||||
public CorpoNotFoundException(Long id) {
|
||||
super("Corpo: " + id + " not found");
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package bzh.risotto.galactik.api.exceptions;
|
||||
|
||||
public class FacilityNotFoundException extends RuntimeException {
|
||||
public class FacilityNotFoundException extends NotFoundException {
|
||||
|
||||
public FacilityNotFoundException(Long id) {
|
||||
super("Facilty: " + id + " not found");
|
||||
|
||||
@@ -6,6 +6,10 @@ public class NotEnoughtRessourceException extends RuntimeException {
|
||||
super("corpo: " + corpoId + " has not enough resource of type: " + ressourceId);
|
||||
}
|
||||
|
||||
public NotEnoughtRessourceException(String ressource, String corpo) {
|
||||
super("corpo: " + corpo + " has not enough resource of type: " + ressource);
|
||||
}
|
||||
|
||||
public NotEnoughtRessourceException(String msg) {
|
||||
super(msg);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package bzh.risotto.galactik.api.exceptions;
|
||||
|
||||
public class NotFoundException extends RuntimeException {
|
||||
public NotFoundException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package bzh.risotto.galactik.api.exceptions;
|
||||
|
||||
public class RessourceNotFoundException extends RuntimeException {
|
||||
public class RessourceNotFoundException extends NotFoundException {
|
||||
|
||||
public RessourceNotFoundException(int ressourceId) {
|
||||
super("Ressource: " + ressourceId + " not found");
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package bzh.risotto.galactik.api.exceptions;
|
||||
|
||||
public class ShipNotFoundException extends RuntimeException {
|
||||
public class ShipNotFoundException extends NotFoundException {
|
||||
|
||||
public ShipNotFoundException(long shipId) {
|
||||
super("Ship: " + shipId + " not found");
|
||||
|
||||
@@ -89,7 +89,7 @@ public class CorpoService {
|
||||
}
|
||||
|
||||
if (ressource.getQuantity() <= value) {
|
||||
throw new NotEnoughtRessourceException(ressourceId, corpoId);
|
||||
throw new NotEnoughtRessourceException(ressource.getType().getName(), corpo.getName());
|
||||
}
|
||||
else {
|
||||
res = true;
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package bzh.risotto.galactik.api.utils;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.HttpStatusCode;
|
||||
import org.springframework.http.ProblemDetail;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.web.ErrorResponse;
|
||||
|
||||
public class CustomErrorResponse implements ErrorResponse {
|
||||
|
||||
HttpStatus status;
|
||||
ProblemDetail detail;
|
||||
|
||||
public CustomErrorResponse(HttpStatus status, ProblemDetail detail) {
|
||||
super();
|
||||
|
||||
this.status = status;
|
||||
this.detail = detail;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NonNull
|
||||
public HttpStatusCode getStatusCode() {
|
||||
return this.status;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NonNull
|
||||
public ProblemDetail getBody() {
|
||||
return this.detail;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package bzh.risotto.galactik.api.utils;
|
||||
|
||||
import bzh.risotto.galactik.api.exceptions.*;
|
||||
import org.springframework.beans.factory.parsing.Location;
|
||||
import org.springframework.beans.factory.parsing.Problem;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ProblemDetail;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.ErrorResponse;
|
||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||
import org.springframework.web.context.request.WebRequest;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
|
||||
|
||||
@ControllerAdvice
|
||||
public class CustomExceptionHandler extends ResponseEntityExceptionHandler {
|
||||
|
||||
@ExceptionHandler(NotFoundException.class)
|
||||
public ProblemDetail handleNotFoundException(NotFoundException ex, WebRequest request) {
|
||||
return ProblemDetail.forStatusAndDetail(HttpStatus.NOT_FOUND, ex.getMessage());
|
||||
}
|
||||
|
||||
@ExceptionHandler(NotEnoughtRessourceException.class)
|
||||
public ProblemDetail handleNotEnoughtResourceException(NotEnoughtRessourceException ex, WebRequest request) {
|
||||
return ProblemDetail.forStatusAndDetail(HttpStatus.INTERNAL_SERVER_ERROR, ex.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user