From c319840827c37fc4cd73bfa7f63379f0ffd5c164 Mon Sep 17 00:00:00 2001 From: sherzinger <sascha.herzinger@uni.lu> Date: Thu, 24 Jan 2019 11:13:25 +0100 Subject: [PATCH] Fix for F5 --- .../api/minervanet/MinervaNetController.java | 18 +++++++++++++-- .../minervanet/ReportSubmissionException.java | 23 +++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 rest-api/src/main/java/lcsb/mapviewer/api/minervanet/ReportSubmissionException.java diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/minervanet/MinervaNetController.java b/rest-api/src/main/java/lcsb/mapviewer/api/minervanet/MinervaNetController.java index 345b90e7a9..ed0b054a9d 100644 --- a/rest-api/src/main/java/lcsb/mapviewer/api/minervanet/MinervaNetController.java +++ b/rest-api/src/main/java/lcsb/mapviewer/api/minervanet/MinervaNetController.java @@ -1,5 +1,6 @@ package lcsb.mapviewer.api.minervanet; +import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import lcsb.mapviewer.model.user.ConfigurationElementType; import lcsb.mapviewer.services.interfaces.IConfigurationService; @@ -50,11 +51,24 @@ public class MinervaNetController { try (CloseableHttpResponse response = client.execute(post)) { HttpEntity responseEntity = response.getEntity(); String responseBody = EntityUtils.toString(responseEntity, "UTF-8"); - if (response.getStatusLine().getStatusCode() != 200) { - logger.error("Could not submit report to MinervaNet. Reason: " + responseBody); + if (response.getStatusLine().getStatusCode() != 200 || !responseBodyValid(responseBody)) { + String error = "Could not submit report to MinervaNet. Reason: " + responseBody; + logger.error(error); + throw new ReportSubmissionException(error); } } } } + private boolean responseBodyValid(String body) { + ObjectMapper mapper = new ObjectMapper(); + mapper.enable(DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY); + try { + mapper.readTree(body); + } catch (IOException e) { + return false; + } + return true; + } + } diff --git a/rest-api/src/main/java/lcsb/mapviewer/api/minervanet/ReportSubmissionException.java b/rest-api/src/main/java/lcsb/mapviewer/api/minervanet/ReportSubmissionException.java new file mode 100644 index 0000000000..38f567524a --- /dev/null +++ b/rest-api/src/main/java/lcsb/mapviewer/api/minervanet/ReportSubmissionException.java @@ -0,0 +1,23 @@ +package lcsb.mapviewer.api.minervanet; + +public class ReportSubmissionException extends RuntimeException { + public ReportSubmissionException() { + super(); + } + + public ReportSubmissionException(String message) { + super(message); + } + + public ReportSubmissionException(String message, Throwable cause) { + super(message, cause); + } + + public ReportSubmissionException(Throwable cause) { + super(cause); + } + + protected ReportSubmissionException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} -- GitLab