From 1e96417a3f4bd5ac807ea8f00bfee99e864e504a Mon Sep 17 00:00:00 2001 From: Tobias Eidelpes Date: Thu, 29 Apr 2021 12:03:16 +0200 Subject: [PATCH] Implement ExceptionMapper (2.1.3.1) --- .../api/trip/rest/ITripServiceResource.java | 4 +-- .../trip/impl/TripServiceResource.java | 4 +-- .../TripServiceResourceExceptionMapper.java | 30 +++++++++++++++++++ 3 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 ass2-service/trip/src/main/java/dst/ass2/service/trip/impl/TripServiceResourceExceptionMapper.java diff --git a/ass2-service/api/src/main/java/dst/ass2/service/api/trip/rest/ITripServiceResource.java b/ass2-service/api/src/main/java/dst/ass2/service/api/trip/rest/ITripServiceResource.java index 77e5292..9a537e3 100644 --- a/ass2-service/api/src/main/java/dst/ass2/service/api/trip/rest/ITripServiceResource.java +++ b/ass2-service/api/src/main/java/dst/ass2/service/api/trip/rest/ITripServiceResource.java @@ -32,8 +32,8 @@ public interface ITripServiceResource { Response addStop(@PathParam("id") Long tripId, @FormParam("locationId") Long locationId) throws InvalidTripException, EntityNotFoundException; @DELETE - @Path("{id}/stops") - Response removeStop(@PathParam("id") Long tripId, @FormParam("locationId") Long locationId) throws InvalidTripException, EntityNotFoundException; + @Path("{id}/stops/{locationId}") + Response removeStop(@PathParam("id") Long tripId, @PathParam("locationId") Long locationId) throws InvalidTripException, EntityNotFoundException; @POST @Path("{id}/match") diff --git a/ass2-service/trip/src/main/java/dst/ass2/service/trip/impl/TripServiceResource.java b/ass2-service/trip/src/main/java/dst/ass2/service/trip/impl/TripServiceResource.java index 5cdcccc..516a859 100644 --- a/ass2-service/trip/src/main/java/dst/ass2/service/trip/impl/TripServiceResource.java +++ b/ass2-service/trip/src/main/java/dst/ass2/service/trip/impl/TripServiceResource.java @@ -3,13 +3,13 @@ package dst.ass2.service.trip.impl; import dst.ass2.service.api.trip.*; import dst.ass2.service.api.trip.rest.ITripServiceResource; -import javax.annotation.Resource; +import javax.inject.Inject; import javax.ws.rs.core.Response; import javax.ws.rs.ext.Provider; @Provider public class TripServiceResource implements ITripServiceResource { - @Resource + @Inject private ITripService tripService; @Override diff --git a/ass2-service/trip/src/main/java/dst/ass2/service/trip/impl/TripServiceResourceExceptionMapper.java b/ass2-service/trip/src/main/java/dst/ass2/service/trip/impl/TripServiceResourceExceptionMapper.java new file mode 100644 index 0000000..e6413d8 --- /dev/null +++ b/ass2-service/trip/src/main/java/dst/ass2/service/trip/impl/TripServiceResourceExceptionMapper.java @@ -0,0 +1,30 @@ +package dst.ass2.service.trip.impl; + +import dst.ass2.service.api.trip.DriverNotAvailableException; +import dst.ass2.service.api.trip.EntityNotFoundException; +import dst.ass2.service.api.trip.InvalidTripException; + +import javax.ws.rs.NotAllowedException; +import javax.ws.rs.core.Response; +import javax.ws.rs.ext.ExceptionMapper; +import javax.ws.rs.ext.Provider; + +@Provider +public class TripServiceResourceExceptionMapper implements ExceptionMapper { + @Override + public Response toResponse(Throwable exception) { + if (exception instanceof EntityNotFoundException) { + return Response.status(Response.Status.NOT_FOUND).entity(exception.getMessage()).build(); + } else if (exception instanceof IllegalStateException) { + return Response.status(Response.Status.CONFLICT).entity(exception.getMessage()).build(); + } else if (exception instanceof InvalidTripException) { + return Response.status(Response.Status.CONFLICT).entity(exception.getMessage()).build(); + } else if (exception instanceof DriverNotAvailableException) { + return Response.status(Response.Status.CONFLICT).entity(exception.getMessage()).build(); + } else if (exception instanceof NotAllowedException) { + return Response.status(Response.Status.METHOD_NOT_ALLOWED).entity(exception.getMessage()).build(); + } + + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(exception.getMessage()).build(); + } +}