From 2c32c38c19cadeb4ce1c84eb5efea6aa6f1d6982 Mon Sep 17 00:00:00 2001
From: Martin Vogel <martin.vogel@sinc.de>
Date: Tue, 6 Sep 2022 08:22:26 +0000
Subject: [PATCH] chore: remove static field initializers from enums, simplify
 fromValue loop

---
 .../api/domain/model/jwk/AlgEnum.java         | 12 +++++-----
 .../api/domain/model/jwk/EEnum.java           | 12 +++++-----
 .../api/domain/model/jwk/KeyOpsEnum.java      | 12 +++++-----
 .../api/domain/model/jwk/KtyEnum.java         | 12 +++++-----
 .../model/metadata/EidasAdesProfile.java      | 20 ++++------------
 .../model/metadata/SignatureFormat.java       | 21 +++++-----------
 .../model/metadata/attachment/Purpose.java    | 24 ++++++-------------
 .../signature/AttachmentSignatureType.java    | 20 ++++------------
 .../metadata/data/DataSignatureType.java      | 20 ++++------------
 .../domain/model/metadata/data/MimeType.java  | 21 +++++-----------
 10 files changed, 58 insertions(+), 116 deletions(-)

diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/model/jwk/AlgEnum.java b/api/src/main/java/de/fitko/fitconnect/api/domain/model/jwk/AlgEnum.java
index 660d7209f..efa8b3181 100644
--- a/api/src/main/java/de/fitko/fitconnect/api/domain/model/jwk/AlgEnum.java
+++ b/api/src/main/java/de/fitko/fitconnect/api/domain/model/jwk/AlgEnum.java
@@ -3,6 +3,8 @@ package de.fitko.fitconnect.api.domain.model.jwk;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
+import java.util.Arrays;
+
 public enum AlgEnum {
 
     PS512("PS512"),
@@ -27,11 +29,9 @@ public enum AlgEnum {
 
     @JsonCreator
     public static AlgEnum fromValue(final String value) {
-        for (final AlgEnum algEnum : AlgEnum.values()) {
-            if (algEnum.value.equals(value)) {
-                return algEnum;
-            }
-        }
-        throw new IllegalArgumentException("Unexpected value '" + value + "'");
+        return Arrays.stream(AlgEnum.values())
+                .filter(enumValue -> enumValue.value.equals(value))
+                .findFirst()
+                .orElseThrow(() -> new IllegalArgumentException("Unexpected value '" + value + "'"));
     }
 }
diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/model/jwk/EEnum.java b/api/src/main/java/de/fitko/fitconnect/api/domain/model/jwk/EEnum.java
index 4a4d8345a..dc447ae3f 100644
--- a/api/src/main/java/de/fitko/fitconnect/api/domain/model/jwk/EEnum.java
+++ b/api/src/main/java/de/fitko/fitconnect/api/domain/model/jwk/EEnum.java
@@ -3,6 +3,8 @@ package de.fitko.fitconnect.api.domain.model.jwk;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
+import java.util.Arrays;
+
 public enum EEnum {
 
     AQAB("AQAB");
@@ -25,11 +27,9 @@ public enum EEnum {
 
     @JsonCreator
     public static EEnum fromValue(final String value) {
-        for (final EEnum eEnum : EEnum.values()) {
-            if (eEnum.value.equals(value)) {
-                return eEnum;
-            }
-        }
-        throw new IllegalArgumentException("Unexpected value '" + value + "'");
+        return Arrays.stream(EEnum.values())
+                .filter(enumValue -> enumValue.value.equals(value))
+                .findFirst()
+                .orElseThrow(() -> new IllegalArgumentException("Unexpected value '" + value + "'"));
     }
 }
diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/model/jwk/KeyOpsEnum.java b/api/src/main/java/de/fitko/fitconnect/api/domain/model/jwk/KeyOpsEnum.java
index 211734e90..455ff64f2 100644
--- a/api/src/main/java/de/fitko/fitconnect/api/domain/model/jwk/KeyOpsEnum.java
+++ b/api/src/main/java/de/fitko/fitconnect/api/domain/model/jwk/KeyOpsEnum.java
@@ -3,6 +3,8 @@ package de.fitko.fitconnect.api.domain.model.jwk;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
+import java.util.Arrays;
+
 public enum KeyOpsEnum {
 
     VERIFY("verify"),
@@ -27,11 +29,9 @@ public enum KeyOpsEnum {
 
     @JsonCreator
     public static KeyOpsEnum fromValue(final String value) {
-        for (final KeyOpsEnum keyOpsEnum : KeyOpsEnum.values()) {
-            if (keyOpsEnum.value.equals(value)) {
-                return keyOpsEnum;
-            }
-        }
-        throw new IllegalArgumentException("Unexpected value '" + value + "'");
+        return Arrays.stream(KeyOpsEnum.values())
+                .filter(enumValue -> enumValue.value.equals(value))
+                .findFirst()
+                .orElseThrow(() -> new IllegalArgumentException("Unexpected value '" + value + "'"));
     }
 }
diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/model/jwk/KtyEnum.java b/api/src/main/java/de/fitko/fitconnect/api/domain/model/jwk/KtyEnum.java
index a9a65a887..b422d165a 100644
--- a/api/src/main/java/de/fitko/fitconnect/api/domain/model/jwk/KtyEnum.java
+++ b/api/src/main/java/de/fitko/fitconnect/api/domain/model/jwk/KtyEnum.java
@@ -3,6 +3,8 @@ package de.fitko.fitconnect.api.domain.model.jwk;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
+import java.util.Arrays;
+
 public enum KtyEnum {
 
     RSA("RSA");
@@ -25,11 +27,9 @@ public enum KtyEnum {
 
     @JsonCreator
     public static KtyEnum fromValue(final String value) {
-        for (final KtyEnum ktyEnum : KtyEnum.values()) {
-            if (ktyEnum.value.equals(value)) {
-                return ktyEnum;
-            }
-        }
-        throw new IllegalArgumentException("Unexpected value '" + value + "'");
+        return Arrays.stream(KtyEnum.values())
+                .filter(enumValue -> enumValue.value.equals(value))
+                .findFirst()
+                .orElseThrow(() -> new IllegalArgumentException("Unexpected value '" + value + "'"));
     }
 }
diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/EidasAdesProfile.java b/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/EidasAdesProfile.java
index e15e1e7f5..ae1e93c20 100644
--- a/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/EidasAdesProfile.java
+++ b/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/EidasAdesProfile.java
@@ -3,8 +3,7 @@ package de.fitko.fitconnect.api.domain.model.metadata;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
-import java.util.HashMap;
-import java.util.Map;
+import java.util.Arrays;
 
 public enum EidasAdesProfile {
 
@@ -14,13 +13,6 @@ public enum EidasAdesProfile {
     HTTP_URI_ETSI_ORG_ADES_191_X_2_LEVEL_BASELINE_B_LTA("http://uri.etsi.org/ades/191x2/level/baseline/B-LTA#");
 
     private final String value;
-    private final static Map<String, EidasAdesProfile> CONSTANTS = new HashMap<>();
-
-    static {
-        for (final EidasAdesProfile c : values()) {
-            CONSTANTS.put(c.value, c);
-        }
-    }
 
     EidasAdesProfile(final String value) {
         this.value = value;
@@ -38,12 +30,10 @@ public enum EidasAdesProfile {
 
     @JsonCreator
     public static EidasAdesProfile fromValue(final String value) {
-        final EidasAdesProfile constant = CONSTANTS.get(value);
-        if (constant == null) {
-            throw new IllegalArgumentException(value);
-        } else {
-            return constant;
-        }
+        return Arrays.stream(EidasAdesProfile.values())
+                .filter(enumValue -> enumValue.value.equals(value))
+                .findFirst()
+                .orElseThrow(() -> new IllegalArgumentException("Unexpected value '" + value + "'"));
     }
 
 }
diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/SignatureFormat.java b/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/SignatureFormat.java
index e9f017ec2..6d4230e95 100644
--- a/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/SignatureFormat.java
+++ b/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/SignatureFormat.java
@@ -3,8 +3,7 @@ package de.fitko.fitconnect.api.domain.model.metadata;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
-import java.util.HashMap;
-import java.util.Map;
+import java.util.Arrays;
 
 public enum SignatureFormat {
 
@@ -13,14 +12,8 @@ public enum SignatureFormat {
     PDF("pdf"),
     ASIC("asic"),
     JSON("json");
-    private final String value;
-    private final static Map<String, SignatureFormat> CONSTANTS = new HashMap<>();
 
-    static {
-        for (final SignatureFormat c : values()) {
-            CONSTANTS.put(c.value, c);
-        }
-    }
+    private final String value;
 
     SignatureFormat(final String value) {
         this.value = value;
@@ -38,12 +31,10 @@ public enum SignatureFormat {
 
     @JsonCreator
     public static SignatureFormat fromValue(final String value) {
-        final SignatureFormat constant = CONSTANTS.get(value);
-        if (constant == null) {
-            throw new IllegalArgumentException(value);
-        } else {
-            return constant;
-        }
+        return Arrays.stream(SignatureFormat.values())
+                .filter(enumValue -> enumValue.value.equals(value))
+                .findFirst()
+                .orElseThrow(() -> new IllegalArgumentException("Unexpected value '" + value + "'"));
     }
 
 }
\ No newline at end of file
diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/attachment/Purpose.java b/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/attachment/Purpose.java
index a5726ea38..1df21ac81 100644
--- a/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/attachment/Purpose.java
+++ b/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/attachment/Purpose.java
@@ -3,8 +3,7 @@ package de.fitko.fitconnect.api.domain.model.metadata.attachment;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
-import java.util.HashMap;
-import java.util.Map;
+import java.util.Arrays;
 
 public enum Purpose {
 
@@ -12,15 +11,8 @@ public enum Purpose {
     ATTACHMENT("attachment"),
     REPORT("report");
     private final String value;
-    private final static Map<String, Purpose> CONSTANTS = new HashMap<>();
 
-    static {
-        for (Purpose c : values()) {
-            CONSTANTS.put(c.value, c);
-        }
-    }
-
-    Purpose(String value) {
+    Purpose(final String value) {
         this.value = value;
     }
 
@@ -35,12 +27,10 @@ public enum Purpose {
     }
 
     @JsonCreator
-    public static Purpose fromValue(String value) {
-        Purpose constant = CONSTANTS.get(value);
-        if (constant == null) {
-            throw new IllegalArgumentException(value);
-        } else {
-            return constant;
-        }
+    public static Purpose fromValue(final String value) {
+        return Arrays.stream(Purpose.values())
+                .filter(enumValue -> enumValue.value.equals(value))
+                .findFirst()
+                .orElseThrow(() -> new IllegalArgumentException("Unexpected value '" + value + "'"));
     }
 }
diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/attachment/signature/AttachmentSignatureType.java b/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/attachment/signature/AttachmentSignatureType.java
index 250885804..12366b044 100644
--- a/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/attachment/signature/AttachmentSignatureType.java
+++ b/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/attachment/signature/AttachmentSignatureType.java
@@ -3,20 +3,12 @@ package de.fitko.fitconnect.api.domain.model.metadata.attachment.signature;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
-import java.util.HashMap;
-import java.util.Map;
+import java.util.Arrays;
 
 public enum AttachmentSignatureType {
 
     SHA_512("sha512");
     private final String value;
-    private final static Map<String, AttachmentSignatureType> CONSTANTS = new HashMap<>();
-
-    static {
-        for (final AttachmentSignatureType c : values()) {
-            CONSTANTS.put(c.value, c);
-        }
-    }
 
     AttachmentSignatureType(final String value) {
         this.value = value;
@@ -34,12 +26,10 @@ public enum AttachmentSignatureType {
 
     @JsonCreator
     public static AttachmentSignatureType fromValue(final String value) {
-        final AttachmentSignatureType constant = CONSTANTS.get(value);
-        if (constant == null) {
-            throw new IllegalArgumentException(value);
-        } else {
-            return constant;
-        }
+        return Arrays.stream(AttachmentSignatureType.values())
+                .filter(enumValue -> enumValue.value.equals(value))
+                .findFirst()
+                .orElseThrow(() -> new IllegalArgumentException("Unexpected value '" + value + "'"));
     }
 
 }
diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/data/DataSignatureType.java b/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/data/DataSignatureType.java
index 3208cb14f..06b7ffe84 100644
--- a/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/data/DataSignatureType.java
+++ b/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/data/DataSignatureType.java
@@ -3,20 +3,12 @@ package de.fitko.fitconnect.api.domain.model.metadata.data;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
-import java.util.HashMap;
-import java.util.Map;
+import java.util.Arrays;
 
 public enum DataSignatureType {
 
     SHA_512("sha512");
     private final String value;
-    private final static Map<String, DataSignatureType> CONSTANTS = new HashMap<>();
-
-    static {
-        for (final DataSignatureType c : values()) {
-            CONSTANTS.put(c.value, c);
-        }
-    }
 
     DataSignatureType(final String value) {
         this.value = value;
@@ -34,12 +26,10 @@ public enum DataSignatureType {
 
     @JsonCreator
     public static DataSignatureType fromValue(final String value) {
-        final DataSignatureType constant = CONSTANTS.get(value);
-        if (constant == null) {
-            throw new IllegalArgumentException(value);
-        } else {
-            return constant;
-        }
+        return Arrays.stream(DataSignatureType.values())
+                .filter(enumValue -> enumValue.value.equals(value))
+                .findFirst()
+                .orElseThrow(() -> new IllegalArgumentException("Unexpected value '" + value + "'"));
     }
 
 }
diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/data/MimeType.java b/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/data/MimeType.java
index 03bfb1eef..88c3fe319 100644
--- a/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/data/MimeType.java
+++ b/api/src/main/java/de/fitko/fitconnect/api/domain/model/metadata/data/MimeType.java
@@ -3,21 +3,14 @@ package de.fitko.fitconnect.api.domain.model.metadata.data;
 import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonValue;
 
-import java.util.HashMap;
-import java.util.Map;
+import java.util.Arrays;
 
 public enum MimeType {
 
     APPLICATION_JSON("application/json"),
     APPLICATION_XML("application/xml");
-    private final String value;
-    private final static Map<String, MimeType> CONSTANTS = new HashMap<>();
 
-    static {
-        for (final MimeType c : values()) {
-            CONSTANTS.put(c.value, c);
-        }
-    }
+    private final String value;
 
     MimeType(final String value) {
         this.value = value;
@@ -35,11 +28,9 @@ public enum MimeType {
 
     @JsonCreator
     public static MimeType fromValue(final String value) {
-        final MimeType constant = CONSTANTS.get(value);
-        if (constant == null) {
-            throw new IllegalArgumentException(value);
-        } else {
-            return constant;
-        }
+        return Arrays.stream(MimeType.values())
+                .filter(enumValue -> enumValue.value.equals(value))
+                .findFirst()
+                .orElseThrow(() -> new IllegalArgumentException("Unexpected value '" + value + "'"));
     }
 }
-- 
GitLab