From 09848158ced693617a0966c16b3eaf3299dc2ec7 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Wed, 25 Jan 2017 14:44:50 +0100 Subject: [PATCH] error handling added --- .../java/lcsb/mapviewer/api/BaseController.java | 2 +- .../lcsb/mapviewer/api/overlay/OverlayRestImpl.java | 13 +++++++++++-- .../lcsb/mapviewer/services/impl/LayoutService.java | 3 +++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/BaseController.java b/rest-api/src/main/java/lcsb/mapviewer/api/BaseController.java index 2e4fb4f7f5..5b22b3c2ed 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/BaseController.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/BaseController.java @@ -17,7 +17,7 @@ public abstract class BaseController { return new ResponseEntity<Object>("{\"error\" : \"Access denied.\",\"reason\":\"" + e.getMessage() + "\"}", new HttpHeaders(), HttpStatus.FORBIDDEN); } else if (e instanceof QueryException) { return new ResponseEntity<Object>( - "{\"error\" : \"Query server error.\",\"reason\":\"" + e.getMessage() + "\"}", new HttpHeaders(), HttpStatus.INTERNAL_SERVER_ERROR); + "{\"error\" : \"Query server error.\",\"reason\":\"" + e.getMessage() + "\"}", new HttpHeaders(), HttpStatus.BAD_REQUEST); } else { return new ResponseEntity<Object>( "{\"error\" : \"Internal server error.\",\"reason\":\"" + e.getMessage() + "\"}", new HttpHeaders(), HttpStatus.INTERNAL_SERVER_ERROR); diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/overlay/OverlayRestImpl.java b/rest-api/src/main/java/lcsb/mapviewer/api/overlay/OverlayRestImpl.java index 1851bc9eeb..d13401b4b9 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/overlay/OverlayRestImpl.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/overlay/OverlayRestImpl.java @@ -9,8 +9,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import lcsb.mapviewer.api.QueryException; -import lcsb.mapviewer.model.Project; import lcsb.mapviewer.model.cache.FileEntry; +import lcsb.mapviewer.model.map.layout.Layout; import lcsb.mapviewer.model.map.model.Model; import lcsb.mapviewer.services.SecurityException; import lcsb.mapviewer.services.interfaces.ILayoutService; @@ -135,7 +135,16 @@ public class OverlayRestImpl { if (model == null) { throw new QueryException("Project with given id doesn't exist"); } - return layoutService.getLayoutDataById(Integer.valueOf(overlayId), authenticationToken).getInputData(); + try { + Integer id = Integer.valueOf(overlayId); + Layout layout = layoutService.getLayoutDataById(id, authenticationToken); + if (layout == null) { + throw new QueryException("Invalid overlay id"); + } + return layout.getInputData(); + } catch (NumberFormatException e) { + throw new QueryException("Invalid overlay id"); + } } } diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java b/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java index d5637d2e94..6de79f3787 100644 --- a/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java +++ b/service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java @@ -917,6 +917,9 @@ public class LayoutService implements ILayoutService { private Layout getLayoutById(int layoutId, AuthenticationToken token) throws SecurityException { Layout layout = layoutDao.getById(layoutId); + if (layout == null) { + return null; + } User user = userService.getUserByToken(token); if (!userCanViewOverlay(layout, user)) { throw new SecurityException("User doesn't have access to overlay"); -- GitLab