diff --git a/api/src/main/java/de/fitko/fitconnect/api/config/ApplicationConfig.java b/api/src/main/java/de/fitko/fitconnect/api/config/ApplicationConfig.java index b3b152fb917e255a1b581b75910e50578f109f84..7ab2bad8248662e09f37f1a63fb7c84f7b80ea0f 100644 --- a/api/src/main/java/de/fitko/fitconnect/api/config/ApplicationConfig.java +++ b/api/src/main/java/de/fitko/fitconnect/api/config/ApplicationConfig.java @@ -18,6 +18,7 @@ public class ApplicationConfig { @Builder.Default private Integer httpProxyPort = 0; @Builder.Default + private Integer requestTimeoutInSeconds = 30; private String metadataSchemaPath; private String privateSigningKeyPath; diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/model/destination/StatusEnum.java b/api/src/main/java/de/fitko/fitconnect/api/domain/model/destination/StatusEnum.java index b42836cb6674e9170918462e282094fffe31979e..5f5638798f584d21bdfa405fe0980ec69f8d9a13 100644 --- a/api/src/main/java/de/fitko/fitconnect/api/domain/model/destination/StatusEnum.java +++ b/api/src/main/java/de/fitko/fitconnect/api/domain/model/destination/StatusEnum.java @@ -3,6 +3,9 @@ package de.fitko.fitconnect.api.domain.model.destination; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; +import java.util.HashMap; +import java.util.Map; + public enum StatusEnum { CREATED("created"), @@ -13,6 +16,14 @@ public enum StatusEnum { DECOMMISSIONED("decommissioned"); + private static final Map<String, StatusEnum> CONSTANTS = new HashMap<>(); + + static { + for (final StatusEnum c : values()) { + CONSTANTS.put(c.value, c); + } + } + private final String value; StatusEnum(final String value) { @@ -31,11 +42,10 @@ public enum StatusEnum { @JsonCreator public static StatusEnum fromValue(final String value) { - for (final StatusEnum statusEnum : StatusEnum.values()) { - if (statusEnum.value.equals(value)) { - return statusEnum; - } + final StatusEnum constant = CONSTANTS.get(value); + if (constant == null) { + throw new IllegalArgumentException("Unexpected value '" + value + "'"); } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); + return constant; } } 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 efa8b31810cabba94c43ecadfd10815b5b3ab215..630b85ec781fa3e4ed396a1673ebfa1bb4885bd4 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,7 +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; +import java.util.HashMap; +import java.util.Map; public enum AlgEnum { @@ -11,6 +12,14 @@ public enum AlgEnum { RSA_OAEP_256("RSA-OAEP-256"); + private static final Map<String, AlgEnum> CONSTANTS = new HashMap<>(); + + static { + for (final AlgEnum c : values()) { + CONSTANTS.put(c.value, c); + } + } + private final String value; AlgEnum(final String value) { @@ -29,9 +38,10 @@ public enum AlgEnum { @JsonCreator public static AlgEnum fromValue(final String value) { - return Arrays.stream(AlgEnum.values()) - .filter(enumValue -> enumValue.value.equals(value)) - .findFirst() - .orElseThrow(() -> new IllegalArgumentException("Unexpected value '" + value + "'")); + final AlgEnum constant = CONSTANTS.get(value); + if (constant == null) { + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + return constant; } } 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 dc447ae3f0a55fdd6b8e60cf0413902be491825d..4d6273e4bc94b8c37a0637823e5b586579ae2a0d 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,12 +3,21 @@ package de.fitko.fitconnect.api.domain.model.jwk; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; public enum EEnum { AQAB("AQAB"); + private static final Map<String, EEnum> CONSTANTS = new HashMap<>(); + + static { + for (final EEnum c : values()) { + CONSTANTS.put(c.value, c); + } + } + private final String value; EEnum(final String value) { @@ -27,9 +36,10 @@ public enum EEnum { @JsonCreator public static EEnum fromValue(final String value) { - return Arrays.stream(EEnum.values()) - .filter(enumValue -> enumValue.value.equals(value)) - .findFirst() - .orElseThrow(() -> new IllegalArgumentException("Unexpected value '" + value + "'")); + final EEnum constant = CONSTANTS.get(value); + if (constant == null) { + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + return constant; } } 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 455ff64f203030ffe7c3a04b6878d72030805b26..e8e18709d3c1a9461ed25fd6e5d3185325367dc7 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,7 +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; +import java.util.HashMap; +import java.util.Map; public enum KeyOpsEnum { @@ -11,6 +12,14 @@ public enum KeyOpsEnum { WRAPKEY("wrapKey"); + private static final Map<String, KeyOpsEnum> CONSTANTS = new HashMap<>(); + + static { + for (final KeyOpsEnum c : values()) { + CONSTANTS.put(c.value, c); + } + } + private final String value; KeyOpsEnum(final String value) { @@ -29,9 +38,10 @@ public enum KeyOpsEnum { @JsonCreator public static KeyOpsEnum fromValue(final String value) { - return Arrays.stream(KeyOpsEnum.values()) - .filter(enumValue -> enumValue.value.equals(value)) - .findFirst() - .orElseThrow(() -> new IllegalArgumentException("Unexpected value '" + value + "'")); + final KeyOpsEnum constant = CONSTANTS.get(value); + if (constant == null) { + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + return constant; } } 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 b422d165aa8141aac80aadc279640f24add77e61..10c7b24c19a03c3438a6ea4fb143363c62e067d0 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,12 +3,21 @@ package de.fitko.fitconnect.api.domain.model.jwk; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; public enum KtyEnum { RSA("RSA"); + private static final Map<String, KtyEnum> CONSTANTS = new HashMap<>(); + + static { + for (final KtyEnum c : values()) { + CONSTANTS.put(c.value, c); + } + } + private final String value; KtyEnum(final String value) { @@ -27,9 +36,10 @@ public enum KtyEnum { @JsonCreator public static KtyEnum fromValue(final String value) { - return Arrays.stream(KtyEnum.values()) - .filter(enumValue -> enumValue.value.equals(value)) - .findFirst() - .orElseThrow(() -> new IllegalArgumentException("Unexpected value '" + value + "'")); + final KtyEnum constant = CONSTANTS.get(value); + if (constant == null) { + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + return constant; } } 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 ae1e93c20c5c436982f9fccaf520d8635834d544..c8e87c22c5bd5c6c9497c0e24dc5ed1abd8dfc0d 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,14 @@ package de.fitko.fitconnect.api.domain.model.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -import java.util.Arrays; - +import java.util.HashMap; +import java.util.Map; + +/** + * Referenziert ein eindeutiges Profil einer AdES (advanced electronic signature/seal) gemäß eIDAS-Verordnung über eine URI gemäß [ETSI TS 119 192](https://www.etsi.org/deliver/etsi_ts/119100_119199/119192/01.01.01_60/ts_119192v010101p.pdf). + * <p> + * Für die Details zur Verwendung und Validierung von Profilen siehe auch https://ec.europa.eu/cefdigital/DSS/webapp-demo/doc/dss-documentation.html#_signatures_profile_simplification + */ public enum EidasAdesProfile { HTTP_URI_ETSI_ORG_ADES_191_X_2_LEVEL_BASELINE_B_B("http://uri.etsi.org/ades/191x2/level/baseline/B-B#"), @@ -12,6 +18,14 @@ public enum EidasAdesProfile { HTTP_URI_ETSI_ORG_ADES_191_X_2_LEVEL_BASELINE_B_LT("http://uri.etsi.org/ades/191x2/level/baseline/B-LT#"), HTTP_URI_ETSI_ORG_ADES_191_X_2_LEVEL_BASELINE_B_LTA("http://uri.etsi.org/ades/191x2/level/baseline/B-LTA#"); + private static final Map<String, EidasAdesProfile> CONSTANTS = new HashMap<>(); + + static { + for (final EidasAdesProfile c : values()) { + CONSTANTS.put(c.value, c); + } + } + private final String value; EidasAdesProfile(final String value) { @@ -30,10 +44,11 @@ public enum EidasAdesProfile { @JsonCreator public static EidasAdesProfile fromValue(final String value) { - return Arrays.stream(EidasAdesProfile.values()) - .filter(enumValue -> enumValue.value.equals(value)) - .findFirst() - .orElseThrow(() -> new IllegalArgumentException("Unexpected value '" + value + "'")); + final EidasAdesProfile constant = CONSTANTS.get(value); + if (constant == null) { + throw new IllegalArgumentException(value); + } + return constant; } } 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 a36975e97a42241fe0e8d60b806d1036404f97e4..11e2efdc859235c86d4d0aebd6e843cab9137e1a 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,7 +3,8 @@ package de.fitko.fitconnect.api.domain.model.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; public enum SignatureFormat { @@ -13,6 +14,14 @@ public enum SignatureFormat { ASIC("asic"), JSON("json"); + private static final 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) { @@ -31,9 +40,10 @@ public enum SignatureFormat { @JsonCreator public static SignatureFormat fromValue(final String value) { - return Arrays.stream(SignatureFormat.values()) - .filter(enumValue -> enumValue.value.equals(value)) - .findFirst() - .orElseThrow(() -> new IllegalArgumentException("Unexpected value '" + value + "'")); + final SignatureFormat constant = CONSTANTS.get(value); + if (constant == null) { + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + return constant; } } 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 06b7ffe8414f61f76536f43a8078b73b8ceb9c07..56a5a9b32ba9405ef58eb26384d95c15cea40982 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 @@ -4,10 +4,21 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; public enum DataSignatureType { SHA_512("sha512"); + + private static final Map<String, DataSignatureType> CONSTANTS = new HashMap<>(); + + static { + for (final DataSignatureType c : values()) { + CONSTANTS.put(c.value, c); + } + } + private final String value; DataSignatureType(final String value) { @@ -26,10 +37,11 @@ public enum DataSignatureType { @JsonCreator public static DataSignatureType fromValue(final String value) { - return Arrays.stream(DataSignatureType.values()) - .filter(enumValue -> enumValue.value.equals(value)) - .findFirst() - .orElseThrow(() -> new IllegalArgumentException("Unexpected value '" + value + "'")); + final DataSignatureType constant = CONSTANTS.get(value); + if (constant == null) { + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + return constant; } } 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 88c3fe319830c64f09462368ed7e1abf95a6bdb8..2011bc56e3c365372fca365fe878f4ef79ac1ade 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,13 +3,22 @@ package de.fitko.fitconnect.api.domain.model.metadata.data; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; public enum MimeType { APPLICATION_JSON("application/json"), APPLICATION_XML("application/xml"); + private static final 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) { @@ -28,9 +37,10 @@ public enum MimeType { @JsonCreator public static MimeType fromValue(final String value) { - return Arrays.stream(MimeType.values()) - .filter(enumValue -> enumValue.value.equals(value)) - .findFirst() - .orElseThrow(() -> new IllegalArgumentException("Unexpected value '" + value + "'")); + final MimeType constant = CONSTANTS.get(value); + if (constant == null) { + throw new IllegalArgumentException("Unexpected value '" + value + "'"); + } + return constant; } }