From 6a54d9fa1e1dadf60fe6c538d3ef92485a4316d3 Mon Sep 17 00:00:00 2001
From: Martin Vogel <martin.vogel@sinc.de>
Date: Mon, 12 Jun 2023 20:04:29 +0200
Subject: [PATCH] refactor(#1073): improve error messages, show problem detail

---
 .../client/subscriber/SubmissionReceiver.java          | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/client/src/main/java/dev/fitko/fitconnect/client/subscriber/SubmissionReceiver.java b/client/src/main/java/dev/fitko/fitconnect/client/subscriber/SubmissionReceiver.java
index e7703c961..29cf52d81 100644
--- a/client/src/main/java/dev/fitko/fitconnect/client/subscriber/SubmissionReceiver.java
+++ b/client/src/main/java/dev/fitko/fitconnect/client/subscriber/SubmissionReceiver.java
@@ -120,23 +120,23 @@ public class SubmissionReceiver {
 
     private void validateMetadata(final Metadata metadata, final Submission submission, final AuthenticationTags authenticationTags) {
         final ValidationResult validationResult = subscriber.validateMetadata(metadata, submission, authenticationTags);
-        evaluateValidationResult(submission, validationResult, "Metadata is invalid");
+        evaluateValidationResult(submission, validationResult);
     }
 
     private void validateAttachments(final List<AttachmentForValidation> attachmentForValidation, final Submission submission, final AuthenticationTags authenticationTags) {
         final ValidationResult validationResult = subscriber.validateAttachments(attachmentForValidation, authenticationTags);
-        evaluateValidationResult(submission, validationResult, "Attachment validation failed");
+        evaluateValidationResult(submission, validationResult);
     }
 
     private void validateData(final Submission submission, final Metadata metadata, final byte[] decryptedData, final AuthenticationTags authenticationTags) {
         final ValidationResult validationResult = subscriber.validateData(decryptedData, submission, metadata, authenticationTags);
-        evaluateValidationResult(submission, validationResult, "Data is invalid");
+        evaluateValidationResult(submission, validationResult);
     }
 
-    private void evaluateValidationResult(final Submission submission, final ValidationResult validationResult, final String errorMessage) throws SubmissionRequestException {
+    private void evaluateValidationResult(final Submission submission, final ValidationResult validationResult) throws SubmissionRequestException {
         if (validationResult.hasProblems()) {
             rejectSubmissionWithProblem(submission, validationResult.getProblems().toArray(new Problem[0]));
-            throw new SubmissionRequestException(validationResult.hasError() ? validationResult.getError().getMessage() : errorMessage);
+            throw new SubmissionRequestException(validationResult.getProblems().stream().map(Problem::getDetail).collect(Collectors.joining()));
         } else if (validationResult.hasError()) {
             LOGGER.error(validationResult.getError().getMessage(), validationResult.getError());
             throw new SubmissionRequestException(validationResult.getError().getMessage(), validationResult.getError());
-- 
GitLab