From 7c2c93e9c85122a22ea62e5c373c8607e41fee5b Mon Sep 17 00:00:00 2001 From: Martin Vogel <martin.vogel@sinc.de> Date: Mon, 13 Jun 2022 12:57:52 +0200 Subject: [PATCH] #414 Use lombock annotations to enable value convenient classes --- .../metadata/AdditionalReferenceInfo.java | 20 +++--- .../metadata/AuthenticationInformation.java | 7 +- .../api/domain/metadata/ContentStructure.java | 20 +++--- .../api/domain/metadata/Metadata.java | 36 +++++----- .../domain/metadata/PaymentInformation.java | 7 +- .../domain/metadata/PublicServiceType.java | 24 ++++--- .../api/domain/metadata/ReplyChannel.java | 7 +- .../metadata/attachment/Attachment.java | 40 ++++++----- .../signature/EidasAdesProfile.java | 5 +- .../attachment/signature/Hash__1.java | 21 +++--- .../attachment/signature/SignatureFormat.java | 3 +- .../attachment/signature/Signature__1.java | 29 ++++---- .../metadata/attachment/signature/Type.java | 3 +- .../api/domain/metadata/data/Data.java | 25 +++---- .../metadata/data/EidasAdesProfile.java | 5 +- .../api/domain/metadata/data/Hash.java | 21 +++--- .../api/domain/metadata/data/MimeType.java | 3 +- .../api/domain/metadata/data/Signature.java | 28 ++++---- .../domain/metadata/data/SignatureFormat.java | 3 +- .../metadata/data/SubmissionSchema.java | 21 +++--- .../api/domain/metadata/data/Type.java | 3 +- .../api/domain/submission/Submission.java | 9 +++ .../fitconnect/client/FitConnectClient.java | 66 +++++++++++++++++++ .../client/FitConnectSenderClient.java | 51 -------------- .../java/de/fitconnect/client/TestRunner.java | 14 ++-- .../impl/crypto/JWECryptoServiceTest.java | 1 - 26 files changed, 274 insertions(+), 198 deletions(-) create mode 100644 api/src/main/java/fitconnect/api/domain/submission/Submission.java create mode 100644 client/src/main/java/de/fitconnect/client/FitConnectClient.java delete mode 100644 client/src/main/java/de/fitconnect/client/FitConnectSenderClient.java diff --git a/api/src/main/java/fitconnect/api/domain/metadata/AdditionalReferenceInfo.java b/api/src/main/java/fitconnect/api/domain/metadata/AdditionalReferenceInfo.java index b55e7df9e..c694fefd3 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/AdditionalReferenceInfo.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/AdditionalReferenceInfo.java @@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Getter; +import lombok.Setter; import java.util.Map; @@ -16,15 +18,17 @@ import java.util.Map; "senderReference", "applicationDate" }) -public record AdditionalReferenceInfo( +@Getter +@Setter +public class AdditionalReferenceInfo { - @JsonProperty("senderReference") - String senderReference, + @JsonProperty("senderReference") + String senderReference; - @JsonProperty("applicationDate") - String applicationDate, + @JsonProperty("applicationDate") + String applicationDate; - @JsonIgnore - Map<String, Object> additionalProperties -) { } + @JsonIgnore + Map<String, Object> additionalProperties; +} diff --git a/api/src/main/java/fitconnect/api/domain/metadata/AuthenticationInformation.java b/api/src/main/java/fitconnect/api/domain/metadata/AuthenticationInformation.java index e20ceb3e3..6dc93fd9b 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/AuthenticationInformation.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/AuthenticationInformation.java @@ -1,4 +1,9 @@ package fitconnect.api.domain.metadata; -public record AuthenticationInformation() { +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class AuthenticationInformation { } diff --git a/api/src/main/java/fitconnect/api/domain/metadata/ContentStructure.java b/api/src/main/java/fitconnect/api/domain/metadata/ContentStructure.java index a25a9f89e..093f78e4d 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/ContentStructure.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/ContentStructure.java @@ -6,6 +6,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import fitconnect.api.domain.metadata.attachment.Attachment; import fitconnect.api.domain.metadata.data.Data; +import lombok.Getter; +import lombok.Setter; import java.util.List; import java.util.Map; @@ -18,14 +20,16 @@ import java.util.Map; "data", "attachments" }) -public record ContentStructure( +@Getter +@Setter +public class ContentStructure { - @JsonProperty("data") - Data data, + @JsonProperty("data") + Data data; - @JsonProperty("attachments") - List<Attachment> attachments, + @JsonProperty("attachments") + List<Attachment> attachments; - @JsonIgnore - Map<String, Object> additionalProperties -) { } + @JsonIgnore + Map<String, Object> additionalProperties; +} diff --git a/api/src/main/java/fitconnect/api/domain/metadata/Metadata.java b/api/src/main/java/fitconnect/api/domain/metadata/Metadata.java index 889f0c465..4af121a2c 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/Metadata.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/Metadata.java @@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Getter; +import lombok.Setter; import java.util.List; import java.util.Map; @@ -17,26 +19,28 @@ import java.util.Map; "replyChannel", "additionalReferenceInfo" }) -public record Metadata( - @JsonProperty("contentStructure") - ContentStructure contentStructure, +@Getter +@Setter +public class Metadata { + @JsonProperty("contentStructure") + ContentStructure contentStructure; - @JsonProperty("publicServiceType") - PublicServiceType publicServiceType, + @JsonProperty("publicServiceType") + PublicServiceType publicServiceType; - @JsonProperty("authenticationInformation") - List<AuthenticationInformation> authenticationInformation, + @JsonProperty("authenticationInformation") + List<AuthenticationInformation> authenticationInformation; - @JsonProperty("paymentInformation") - PaymentInformation paymentInformation, + @JsonProperty("paymentInformation") + PaymentInformation paymentInformation; - @JsonProperty("replyChannel") - ReplyChannel replyChannel, + @JsonProperty("replyChannel") + ReplyChannel replyChannel; - @JsonProperty("additionalReferenceInfo") - AdditionalReferenceInfo additionalReferenceInfo, + @JsonProperty("additionalReferenceInfo") + AdditionalReferenceInfo additionalReferenceInfo; - @JsonIgnore - Map<String, Object> additionalProperties -) { } + @JsonIgnore + Map<String, Object> additionalProperties; +} diff --git a/api/src/main/java/fitconnect/api/domain/metadata/PaymentInformation.java b/api/src/main/java/fitconnect/api/domain/metadata/PaymentInformation.java index 3e78e452a..3c911876d 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/PaymentInformation.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/PaymentInformation.java @@ -1,4 +1,9 @@ package fitconnect.api.domain.metadata; -public record PaymentInformation() { +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PaymentInformation { } diff --git a/api/src/main/java/fitconnect/api/domain/metadata/PublicServiceType.java b/api/src/main/java/fitconnect/api/domain/metadata/PublicServiceType.java index d91252768..e3a915022 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/PublicServiceType.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/PublicServiceType.java @@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Getter; +import lombok.Setter; import java.util.Map; @@ -20,18 +22,20 @@ import java.util.Map; "description", "identifier" }) -public record PublicServiceType( +@Getter +@Setter +public class PublicServiceType { - @JsonProperty("name") - String name, + @JsonProperty("name") + String name; - @JsonProperty("description") - String description, + @JsonProperty("description") + String description; - @JsonProperty("identifier") - String identifier, + @JsonProperty("identifier") + String identifier; - @JsonIgnore - Map<String, Object> additionalProperties -) { } + @JsonIgnore + Map<String, Object> additionalProperties; +} diff --git a/api/src/main/java/fitconnect/api/domain/metadata/ReplyChannel.java b/api/src/main/java/fitconnect/api/domain/metadata/ReplyChannel.java index 9384433d0..49802151d 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/ReplyChannel.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/ReplyChannel.java @@ -1,4 +1,9 @@ package fitconnect.api.domain.metadata; -public record ReplyChannel() { +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class ReplyChannel { } diff --git a/api/src/main/java/fitconnect/api/domain/metadata/attachment/Attachment.java b/api/src/main/java/fitconnect/api/domain/metadata/attachment/Attachment.java index a83ab7b98..dc2ffca95 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/attachment/Attachment.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/attachment/Attachment.java @@ -6,6 +6,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import fitconnect.api.domain.metadata.attachment.signature.Hash__1; import fitconnect.api.domain.metadata.attachment.signature.Signature__1; +import lombok.Getter; +import lombok.Setter; import java.util.Map; import java.util.UUID; @@ -24,31 +26,33 @@ import java.util.UUID; "mimeType", "attachmentId" }) -public record Attachment( +@Getter +@Setter +public class Attachment { - @JsonProperty("hash") - Hash__1 hash, + @JsonProperty("hash") + Hash__1 hash; - @JsonProperty("signature") - Signature__1 signature, + @JsonProperty("signature") + Signature__1 signature; - @JsonProperty("purpose") - Purpose purpose, + @JsonProperty("purpose") + Purpose purpose; - @JsonProperty("filename") - String filename, + @JsonProperty("filename") + String filename; - @JsonProperty("description") - String description, + @JsonProperty("description") + String description; - @JsonProperty("mimeType") - String mimeType, + @JsonProperty("mimeType") + String mimeType; - @JsonProperty("attachmentId") - UUID attachmentId, + @JsonProperty("attachmentId") + UUID attachmentId; - @JsonIgnore - Map<String, Object> additionalProperties -) { } + @JsonIgnore + Map<String, Object> additionalProperties; +} diff --git a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/EidasAdesProfile.java b/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/EidasAdesProfile.java index c601b49bd..a72b5e8f9 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/EidasAdesProfile.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/EidasAdesProfile.java @@ -8,9 +8,8 @@ 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 { @@ -22,7 +21,7 @@ public enum EidasAdesProfile { private final static Map<String, EidasAdesProfile> CONSTANTS = new HashMap<String, EidasAdesProfile>(); static { - for (EidasAdesProfile c: values()) { + for (EidasAdesProfile c : values()) { CONSTANTS.put(c.value, c); } } diff --git a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Hash__1.java b/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Hash__1.java index 879235474..407366428 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Hash__1.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Hash__1.java @@ -4,10 +4,11 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Getter; +import lombok.Setter; import java.util.Map; - /** * Hashwert * <p> @@ -19,15 +20,17 @@ import java.util.Map; "type", "content" }) -public record Hash__1( +@Getter +@Setter +public class Hash__1 { - @JsonProperty("type") - Type type, + @JsonProperty("type") + Type type; - @JsonProperty("content") - String content, + @JsonProperty("content") + String content; - @JsonIgnore - Map<String, Object> additionalProperties -) { } + @JsonIgnore + Map<String, Object> additionalProperties; +} diff --git a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/SignatureFormat.java b/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/SignatureFormat.java index 9df5dd4ee..9bf563df3 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/SignatureFormat.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/SignatureFormat.java @@ -8,7 +8,6 @@ import java.util.Map; /** * Beschreibt, welches Signaturformat die genutzte Signatur / das genutzte Siegel nutzt. Aktuell wird die Hinterlegung folgender Signaturformate unterstützt: CMS = Cryptographic Message Syntax, Asic = Associated Signature Containers, PDF = PDF Signatur, XML = XML-Signature, JSON = JSON Web Signature. - * */ public enum SignatureFormat { @@ -21,7 +20,7 @@ public enum SignatureFormat { private final static Map<String, SignatureFormat> CONSTANTS = new HashMap<>(); static { - for (SignatureFormat c: values()) { + for (SignatureFormat c : values()) { CONSTANTS.put(c.value, c); } } diff --git a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Signature__1.java b/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Signature__1.java index e35b63a10..2708095c7 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Signature__1.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Signature__1.java @@ -4,13 +4,14 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Getter; +import lombok.Setter; import java.util.Map; /** * Beschreibt das Signaturformt und Profile - * */ @JsonInclude(JsonInclude.Include.NON_NULL) @JsonPropertyOrder({ @@ -19,21 +20,23 @@ import java.util.Map; "detachedSignature", "content" }) -public record Signature__1( +@Getter +@Setter +public class Signature__1 { - @JsonProperty("signatureFormat") - SignatureFormat signatureFormat, + @JsonProperty("signatureFormat") + SignatureFormat signatureFormat; - @JsonProperty("eidasAdesProfile") - EidasAdesProfile eidasAdesProfile, + @JsonProperty("eidasAdesProfile") + EidasAdesProfile eidasAdesProfile; - @JsonProperty("detachedSignature") - Boolean detachedSignature, + @JsonProperty("detachedSignature") + Boolean detachedSignature; - @JsonProperty("content") - String content, + @JsonProperty("content") + String content; - @JsonIgnore - Map<String, Object> additionalProperties -) { } + @JsonIgnore + Map<String, Object> additionalProperties; +} diff --git a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Type.java b/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Type.java index e14d3aa86..a9fc941bc 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Type.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/attachment/signature/Type.java @@ -8,7 +8,6 @@ import java.util.Map; /** * Der verwendete Hash-Algorithmus. Derzeit ist nur `sha512` erlaubt. - * */ public enum Type { @@ -17,7 +16,7 @@ public enum Type { private final static Map<String, Type> CONSTANTS = new HashMap<>(); static { - for (Type c: values()) { + for (Type c : values()) { CONSTANTS.put(c.value, c); } } diff --git a/api/src/main/java/fitconnect/api/domain/metadata/data/Data.java b/api/src/main/java/fitconnect/api/domain/metadata/data/Data.java index d43ef300c..7e830f2d1 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/data/Data.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/data/Data.java @@ -4,12 +4,13 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Getter; +import lombok.Setter; import java.util.Map; /** * Definiert das Schema und die Signatur(-art), die für die Fachdaten verwendet werden. - * */ @JsonInclude(JsonInclude.Include.NON_NULL) @JsonPropertyOrder({ @@ -17,18 +18,20 @@ import java.util.Map; "hash", "submissionSchema" }) -public record Data( +@Getter +@Setter +public class Data { - @JsonProperty("signature") - Signature signature, + @JsonProperty("signature") + Signature signature; - @JsonProperty("hash") - Hash hash, + @JsonProperty("hash") + Hash hash; - @JsonProperty("submissionSchema") - SubmissionSchema submissionSchema, + @JsonProperty("submissionSchema") + SubmissionSchema submissionSchema; - @JsonIgnore - Map<String, Object> additionalProperties -) { } + @JsonIgnore + Map<String, Object> additionalProperties; +} diff --git a/api/src/main/java/fitconnect/api/domain/metadata/data/EidasAdesProfile.java b/api/src/main/java/fitconnect/api/domain/metadata/data/EidasAdesProfile.java index 3e19a0aa2..51723dd5d 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/data/EidasAdesProfile.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/data/EidasAdesProfile.java @@ -8,9 +8,8 @@ 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 { @@ -23,7 +22,7 @@ public enum EidasAdesProfile { private final static Map<String, EidasAdesProfile> CONSTANTS = new HashMap<>(); static { - for (EidasAdesProfile c: values()) { + for (EidasAdesProfile c : values()) { CONSTANTS.put(c.value, c); } } diff --git a/api/src/main/java/fitconnect/api/domain/metadata/data/Hash.java b/api/src/main/java/fitconnect/api/domain/metadata/data/Hash.java index 700055224..815f1a489 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/data/Hash.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/data/Hash.java @@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Getter; +import lombok.Setter; import java.util.Map; @@ -12,21 +14,22 @@ import java.util.Map; * Hashwert * <p> * Der Hashwert der unverschlüsselten Fachdaten. Die Angabe des Hashwertes dient der Integritätssicherung des Gesamtantrags und schützt vor einem Austausch der Fachdaten durch Systeme zwischen Sender und Subscriber (z.B. dem Zustelldienst). - * */ @JsonInclude(JsonInclude.Include.NON_NULL) @JsonPropertyOrder({ "type", "content" }) -public record Hash( +@Getter +@Setter +public class Hash { - @JsonProperty("type") - Type type, + @JsonProperty("type") + Type type; - @JsonProperty("content") - String content, + @JsonProperty("content") + String content; - @JsonIgnore - Map<String, Object> additionalProperties -){ } + @JsonIgnore + Map<String, Object> additionalProperties; +} diff --git a/api/src/main/java/fitconnect/api/domain/metadata/data/MimeType.java b/api/src/main/java/fitconnect/api/domain/metadata/data/MimeType.java index 6c3aa7376..026beced7 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/data/MimeType.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/data/MimeType.java @@ -8,7 +8,6 @@ import java.util.Map; /** * Mimetype (z.B. application/json oder application/xml) des referenzierten Schemas (z.B. XSD- oder JSON-Schema). - * */ public enum MimeType { @@ -18,7 +17,7 @@ public enum MimeType { private final static Map<String, MimeType> CONSTANTS = new HashMap<>(); static { - for (MimeType c: values()) { + for (MimeType c : values()) { CONSTANTS.put(c.value, c); } } diff --git a/api/src/main/java/fitconnect/api/domain/metadata/data/Signature.java b/api/src/main/java/fitconnect/api/domain/metadata/data/Signature.java index 8a7fe7278..72f1ad881 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/data/Signature.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/data/Signature.java @@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Getter; +import lombok.Setter; import java.util.Map; @@ -17,21 +19,23 @@ import java.util.Map; "detachedSignature", "content" }) -public record Signature( +@Getter +@Setter +public class Signature { - @JsonProperty("signatureFormat") - SignatureFormat signatureFormat, + @JsonProperty("signatureFormat") + SignatureFormat signatureFormat; - @JsonProperty("eidasAdesProfile") - EidasAdesProfile eidasAdesProfile, + @JsonProperty("eidasAdesProfile") + EidasAdesProfile eidasAdesProfile; - @JsonProperty("detachedSignature") - Boolean detachedSignature, + @JsonProperty("detachedSignature") + Boolean detachedSignature; - @JsonProperty("content") - String content, - @JsonIgnore - Map<String, Object> additionalProperties + @JsonProperty("content") + String content; -) { } + @JsonIgnore + Map<String, Object> additionalProperties; +} diff --git a/api/src/main/java/fitconnect/api/domain/metadata/data/SignatureFormat.java b/api/src/main/java/fitconnect/api/domain/metadata/data/SignatureFormat.java index 87053dd92..de5b96c06 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/data/SignatureFormat.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/data/SignatureFormat.java @@ -8,7 +8,6 @@ import java.util.Map; /** * Beschreibt, welches Signaturformat die genutzte Signatur / das genutzte Siegel nutzt. Aktuell wird die Hinterlegung folgender Signaturformate unterstützt: CMS = Cryptographic Message Syntax, Asic = Associated Signature Containers, PDF = PDF Signatur, XML = XML-Signature, JSON = JSON Web Signature. - * */ public enum SignatureFormat { @@ -21,7 +20,7 @@ public enum SignatureFormat { private final static Map<String, SignatureFormat> CONSTANTS = new HashMap<>(); static { - for (SignatureFormat c: values()) { + for (SignatureFormat c : values()) { CONSTANTS.put(c.value, c); } } diff --git a/api/src/main/java/fitconnect/api/domain/metadata/data/SubmissionSchema.java b/api/src/main/java/fitconnect/api/domain/metadata/data/SubmissionSchema.java index b62f222e0..c2f76da4f 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/data/SubmissionSchema.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/data/SubmissionSchema.java @@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import lombok.Getter; +import lombok.Setter; import java.net.URI; import java.util.Map; @@ -13,21 +15,22 @@ import java.util.Map; * Fachdatenschema * <p> * Referenz auf ein Schema, das die Struktur der Fachdaten einer Einreichung beschreibt. - * */ @JsonInclude(JsonInclude.Include.NON_NULL) @JsonPropertyOrder({ "schemaUri", "mimeType" }) -public record SubmissionSchema( +@Getter +@Setter +public class SubmissionSchema { - @JsonProperty("schemaUri") - URI schemaUri, + @JsonProperty("schemaUri") + URI schemaUri; - @JsonProperty("mimeType") - MimeType mimeType, + @JsonProperty("mimeType") + MimeType mimeType; - @JsonIgnore - Map<String, Object> additionalProperties -) { } + @JsonIgnore + Map<String, Object> additionalProperties; +} diff --git a/api/src/main/java/fitconnect/api/domain/metadata/data/Type.java b/api/src/main/java/fitconnect/api/domain/metadata/data/Type.java index b6f5c1b68..4f91c120e 100644 --- a/api/src/main/java/fitconnect/api/domain/metadata/data/Type.java +++ b/api/src/main/java/fitconnect/api/domain/metadata/data/Type.java @@ -8,7 +8,6 @@ import java.util.Map; /** * Der verwendete Hash-Algorithmus. Derzeit ist nur `sha512` erlaubt. - * */ public enum Type { @@ -17,7 +16,7 @@ public enum Type { private final static Map<String, Type> CONSTANTS = new HashMap<>(); static { - for (Type c: values()) { + for (Type c : values()) { CONSTANTS.put(c.value, c); } } diff --git a/api/src/main/java/fitconnect/api/domain/submission/Submission.java b/api/src/main/java/fitconnect/api/domain/submission/Submission.java new file mode 100644 index 000000000..174438594 --- /dev/null +++ b/api/src/main/java/fitconnect/api/domain/submission/Submission.java @@ -0,0 +1,9 @@ +package fitconnect.api.domain.submission; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Submission { +} diff --git a/client/src/main/java/de/fitconnect/client/FitConnectClient.java b/client/src/main/java/de/fitconnect/client/FitConnectClient.java new file mode 100644 index 000000000..c89bb525e --- /dev/null +++ b/client/src/main/java/de/fitconnect/client/FitConnectClient.java @@ -0,0 +1,66 @@ +package de.fitconnect.client; + +import fitconnect.api.Sender; +import fitconnect.api.auth.OAuthToken; +import fitconnect.api.domain.metadata.Metadata; +import fitconnect.api.domain.metadata.attachment.Attachment; +import fitconnect.api.domain.metadata.data.Data; +import fitconnect.api.domain.submission.Submission; +import fitconnect.api.logger.SdkLogger; + +import java.util.List; +import java.util.Optional; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class FitConnectClient { + + private static final Logger logger = SdkLogger.defaultLogger(FitConnectClient.class); + + private final Sender sender; + private Optional<OAuthToken> token = Optional.empty(); + + public FitConnectClient(){ + this.sender = ClientFactory.submissionSender(); + } + + public FitConnectClient authenticate(String clientId, String secret, String...scope){ + this.token = sender.retrieveOAuthToken(clientId,secret,scope); + return this; + } + + public FitConnectClient createSubmission(final Submission submission){ + checkIfAuthenticated(); + // TODO implement sendSubmission + logger.log(Level.INFO, "created new submission"); + return this; + } + + public FitConnectClient sendSubmission(final Metadata metadata, final Data data){ + checkIfAuthenticated(); + // TODO implement + logger.log(Level.INFO, "successfully sent submission"); + + return this; + } + + public FitConnectClient uploadAttachments(final List<Attachment> attachments){ + checkIfAuthenticated(); + // TODO implement + logger.log(Level.INFO, "uploaded " + attachments.size() + " attachments"); + return this; + } + + public FitConnectClient printToken(){ + checkIfAuthenticated(); + logger.log(Level.INFO, "retrieved access token: " + this.token.get().access_token()); + return this; + } + + private void checkIfAuthenticated() { + if(token.isEmpty()){ + throw new IllegalStateException("not authenticated, please authenticate first with authenticate(client, secret)"); + } + } + +} diff --git a/client/src/main/java/de/fitconnect/client/FitConnectSenderClient.java b/client/src/main/java/de/fitconnect/client/FitConnectSenderClient.java deleted file mode 100644 index a1643802a..000000000 --- a/client/src/main/java/de/fitconnect/client/FitConnectSenderClient.java +++ /dev/null @@ -1,51 +0,0 @@ -package de.fitconnect.client; - -import fitconnect.api.Sender; -import fitconnect.api.auth.OAuthToken; -import fitconnect.api.logger.SdkLogger; - -import java.util.Optional; -import java.util.logging.Level; -import java.util.logging.Logger; - -public class FitConnectSenderClient { - - private static final Logger logger = SdkLogger.defaultLogger(FitConnectSenderClient.class); - - private final Sender sender; - private Optional<OAuthToken> token = Optional.empty(); - - public FitConnectSenderClient(){ - this.sender = ClientFactory.submissionSender(); - } - - public FitConnectSenderClient authenticate(String clientId, String secret, String...scope){ - this.token = sender.retrieveOAuthToken(clientId,secret,scope); - return this; - } - - public FitConnectSenderClient createSubmission(){ - checkIfAuthenticated(); - // TODO implement - return this; - } - - public FitConnectSenderClient sendSubmission(){ - checkIfAuthenticated(); - // TODO implement - return this; - } - - public FitConnectSenderClient printToken(){ - checkIfAuthenticated(); - logger.log(Level.INFO, "retrieved access token: " + this.token.get().access_token()); - return this; - } - - private void checkIfAuthenticated() { - if(token.isEmpty()){ - throw new IllegalStateException("authenticate first"); - } - } - -} diff --git a/client/src/main/java/de/fitconnect/client/TestRunner.java b/client/src/main/java/de/fitconnect/client/TestRunner.java index 98c943680..7a82becde 100644 --- a/client/src/main/java/de/fitconnect/client/TestRunner.java +++ b/client/src/main/java/de/fitconnect/client/TestRunner.java @@ -1,5 +1,9 @@ package de.fitconnect.client; +import fitconnect.api.domain.submission.Submission; + +import java.util.Collections; + public class TestRunner { public static void main(String[] args) { @@ -7,12 +11,14 @@ public class TestRunner { var clientId = "781f6213-0f0f-4a79-9372-e7187ffda98b"; var secret = "PnzR8Vbmhpv_VwTkT34wponqXWK8WBm-LADlryYdV4o"; - FitConnectSenderClient senderClient = new FitConnectSenderClient(); + FitConnectClient client = new FitConnectClient(); // sample high -level- api calls to send a submission - senderClient.authenticate(clientId,secret) + client .printToken() - .createSubmission() - .sendSubmission(); + .authenticate(clientId,secret) + .createSubmission(new Submission()) + .uploadAttachments(Collections.emptyList()) + .sendSubmission(null, null); } } diff --git a/impl/src/test/java/fitconnect/impl/crypto/JWECryptoServiceTest.java b/impl/src/test/java/fitconnect/impl/crypto/JWECryptoServiceTest.java index c0f1d6f11..c4b382f80 100644 --- a/impl/src/test/java/fitconnect/impl/crypto/JWECryptoServiceTest.java +++ b/impl/src/test/java/fitconnect/impl/crypto/JWECryptoServiceTest.java @@ -5,7 +5,6 @@ import com.nimbusds.jose.jwk.KeyUse; import com.nimbusds.jose.jwk.RSAKey; import com.nimbusds.jose.jwk.gen.RSAKeyGenerator; import fitconnect.api.crypto.CryptoService; -import fitconnect.api.exceptions.EncryptionException; import org.junit.jupiter.api.Test; import java.util.UUID; -- GitLab