From 57878187663562e7b96bbc20fc02b28ef955fb9e Mon Sep 17 00:00:00 2001
From: Henry Borasch <Henry.Borasch@sinc.de>
Date: Tue, 7 Mar 2023 09:51:52 +0100
Subject: [PATCH] added more specific exceptions

---
 .../fitconnect/api/exceptions/FileHandlingException.java | 8 ++++++++
 .../api/exceptions/RootCertificateException.java         | 8 ++++++++
 .../java/dev/fitko/fitconnect/core/util/FileUtil.java    | 9 ++++++---
 .../core/validation/DefaultValidationService.java        | 3 ++-
 4 files changed, 24 insertions(+), 4 deletions(-)
 create mode 100644 api/src/main/java/dev/fitko/fitconnect/api/exceptions/FileHandlingException.java
 create mode 100644 api/src/main/java/dev/fitko/fitconnect/api/exceptions/RootCertificateException.java

diff --git a/api/src/main/java/dev/fitko/fitconnect/api/exceptions/FileHandlingException.java b/api/src/main/java/dev/fitko/fitconnect/api/exceptions/FileHandlingException.java
new file mode 100644
index 000000000..dfe704d8d
--- /dev/null
+++ b/api/src/main/java/dev/fitko/fitconnect/api/exceptions/FileHandlingException.java
@@ -0,0 +1,8 @@
+package dev.fitko.fitconnect.api.exceptions;
+
+public class FileHandlingException extends RuntimeException {
+
+    public FileHandlingException(Exception exception) {
+        super(exception);
+    }
+}
diff --git a/api/src/main/java/dev/fitko/fitconnect/api/exceptions/RootCertificateException.java b/api/src/main/java/dev/fitko/fitconnect/api/exceptions/RootCertificateException.java
new file mode 100644
index 000000000..e7a577d2b
--- /dev/null
+++ b/api/src/main/java/dev/fitko/fitconnect/api/exceptions/RootCertificateException.java
@@ -0,0 +1,8 @@
+package dev.fitko.fitconnect.api.exceptions;
+
+public class RootCertificateException extends RuntimeException {
+
+    public RootCertificateException(Exception exception) {
+        super(exception);
+    }
+}
diff --git a/core/src/main/java/dev/fitko/fitconnect/core/util/FileUtil.java b/core/src/main/java/dev/fitko/fitconnect/core/util/FileUtil.java
index bea28d98f..a3ee31e0c 100644
--- a/core/src/main/java/dev/fitko/fitconnect/core/util/FileUtil.java
+++ b/core/src/main/java/dev/fitko/fitconnect/core/util/FileUtil.java
@@ -1,5 +1,8 @@
 package dev.fitko.fitconnect.core.util;
 
+import dev.fitko.fitconnect.api.exceptions.FileHandlingException;
+import dev.fitko.fitconnect.api.exceptions.RootCertificateException;
+
 import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.IOException;
@@ -23,7 +26,7 @@ public class FileUtil {
             try {
                 return Files.readString(file.toPath());
             } catch (IOException e) {
-                throw new RuntimeException(e);
+                throw new FileHandlingException(e);
             }
         }).collect(Collectors.toList());
     }
@@ -33,7 +36,7 @@ public class FileUtil {
         try {
             return Files.readString(new File(Objects.requireNonNull(FileUtil.class.getClassLoader().getResource(filePath)).getFile()).toPath());
         } catch (IOException e) {
-            throw new RuntimeException(e);
+            throw new FileHandlingException(e);
         }
     }
 
@@ -43,7 +46,7 @@ public class FileUtil {
         try {
             return (X509Certificate) CertificateFactory.getInstance("X.509").generateCertificate(certificateInputStream);
         } catch (CertificateException e) {
-            throw new RuntimeException(e);
+            throw new RootCertificateException(e);
         }
     }
 }
diff --git a/core/src/main/java/dev/fitko/fitconnect/core/validation/DefaultValidationService.java b/core/src/main/java/dev/fitko/fitconnect/core/validation/DefaultValidationService.java
index 96cb250e0..da9268e4e 100644
--- a/core/src/main/java/dev/fitko/fitconnect/core/validation/DefaultValidationService.java
+++ b/core/src/main/java/dev/fitko/fitconnect/core/validation/DefaultValidationService.java
@@ -15,6 +15,7 @@ import dev.fitko.fitconnect.api.domain.model.event.EventClaimFields;
 import dev.fitko.fitconnect.api.domain.model.metadata.Metadata;
 import dev.fitko.fitconnect.api.domain.validation.ValidationResult;
 import dev.fitko.fitconnect.api.exceptions.DataIntegrityException;
+import dev.fitko.fitconnect.api.exceptions.RootCertificateException;
 import dev.fitko.fitconnect.api.exceptions.SchemaNotFoundException;
 import dev.fitko.fitconnect.api.exceptions.ValidationException;
 import dev.fitko.fitconnect.api.services.crypto.MessageDigestService;
@@ -244,7 +245,7 @@ public class DefaultValidationService implements ValidationService {
             try {
                 return Base64.encode(cert.getEncoded()).toString();
             } catch (CertificateEncodingException e) {
-                throw new RuntimeException(e);
+                throw new RootCertificateException(e);
             }
         }).collect(Collectors.toList());
 
-- 
GitLab