From faabd343a99b6f3f182dd6cb7ebcc376d3125b1f Mon Sep 17 00:00:00 2001 From: George Kalampokis Date: Tue, 6 Jul 2021 13:33:58 +0300 Subject: [PATCH] Improve error handling (cherry picked from commit d5cd90814a6012cf4335c001851815a4e20e0f3d) --- .../web/src/main/java/eu/eudat/controllers/DMPs.java | 7 +------ .../eudat/logic/managers/DataManagementPlanManager.java | 9 +++++++-- .../java/eu/eudat/models/rda/mapper/DmpRDAMapper.java | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java index a929458e7..b01dc68c9 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java @@ -243,7 +243,6 @@ public class DMPs extends BaseController { return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).payload(cloneId)); } - @Transactional @RequestMapping(method = RequestMethod.DELETE, value = {"{id}"}, consumes = "application/json", produces = "application/json") public @ResponseBody ResponseEntity> delete(@PathVariable UUID id, Principal principal) { @@ -279,7 +278,6 @@ public class DMPs extends BaseController { } } - @Transactional @RequestMapping(method = RequestMethod.POST, value = {"/finalize/{id}"}) public ResponseEntity> makeFinalize(@PathVariable String id, Principal principal, @RequestBody DatasetsToBeFinalized datasetsToBeFinalized) { try { @@ -291,7 +289,6 @@ public class DMPs extends BaseController { } } - @Transactional @RequestMapping(method = RequestMethod.POST, value = {"/unfinalize/{id}"}) public ResponseEntity> undoFinalize(@PathVariable String id, Principal principal) { try { @@ -304,7 +301,6 @@ public class DMPs extends BaseController { } - @Transactional @RequestMapping(method = RequestMethod.POST, value = {"/updateusers/{id}"}) public ResponseEntity> updateUsers(@PathVariable String id, @RequestBody List users, Principal principal) { try { @@ -320,7 +316,6 @@ public class DMPs extends BaseController { * DOI Generation * */ - @Transactional @RequestMapping(method = RequestMethod.POST, value = {"/createZenodoDoi/{id}"}) public ResponseEntity> createZenodoDoi(@PathVariable String id, Principal principal) { try { @@ -328,7 +323,7 @@ public class DMPs extends BaseController { return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message("Successfully created DOI for Data Datamanagement Plan in question.").payload(zenodoDOI)); } catch (Exception e) { logger.error(e.getMessage(), e); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message("Failed to create DOI for the Data Management Plan.")); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message("Failed to create DOI for the Data Management Plan: " + e.getMessage())); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java index 14d618c79..2ab542edd 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java @@ -1407,7 +1407,7 @@ public class DataManagementPlanManager { return fileEnvelope; } - public ResponseEntity getRDAJsonDocument(String id, DatasetManager datasetManager, Principal principal) throws IOException { + public ResponseEntity getRDAJsonDocument(String id, DatasetManager datasetManager, Principal principal) throws Exception { eu.eudat.data.entities.DMP dmp = databaseRepository.getDmpDao().find(UUID.fromString(id)); if (!dmp.isPublic() && dmp.getUsers().stream().noneMatch(userInfo -> userInfo.getUser().getId() == principal.getId())) throw new UnauthorisedException(); @@ -2091,7 +2091,12 @@ public class DataManagementPlanManager { restTemplate.put(addFileUrl, addFileMapRequest); Files.deleteIfExists(file.getFile().toPath()); - ResponseEntity jsonFile = getRDAJsonDocument(id.toString(), datasetManager, principal); + ResponseEntity jsonFile; + try { + jsonFile = getRDAJsonDocument(id.toString(), datasetManager, principal); + } catch (Exception e) { + throw e; + } UUID jsonFileUUID = UUID.randomUUID(); File tempJsonFile = new File(this.environment.getProperty("temp.temp") + jsonFileUUID.toString() + ".json"); try (FileOutputStream jsonFos = new FileOutputStream(tempJsonFile)) { diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/rda/mapper/DmpRDAMapper.java b/dmp-backend/web/src/main/java/eu/eudat/models/rda/mapper/DmpRDAMapper.java index 5bd15e34d..075b3796a 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/rda/mapper/DmpRDAMapper.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/rda/mapper/DmpRDAMapper.java @@ -36,7 +36,7 @@ public class DmpRDAMapper { } Map extraProperties; if (dmp.getExtraProperties() == null) { - throw new IllegalArgumentException("DMP is missing required Data for RDA export"); + throw new IllegalArgumentException("DMP is missing language and contact properties"); } else { extraProperties = new org.json.JSONObject(dmp.getExtraProperties()).toMap(); if (extraProperties.get("language") == null) {