From c998443f1c68fd3c203ba6c9e37726f3d924a3fd Mon Sep 17 00:00:00 2001 From: Martin Vogel <martin.vogel@sinc.de> Date: Thu, 22 Sep 2022 14:27:08 +0200 Subject: [PATCH] refactor(api-model): remove duplicate hash and signature type model classes for dat and attachment --- .../model/metadata/{data => }/Hash.java | 4 +-- .../model/metadata/{data => }/Signature.java | 6 ++-- ...aSignatureType.java => SignatureType.java} | 14 ++++---- .../model/metadata/attachment/Attachment.java | 8 ++--- .../signature/AttachmentSignatureType.java | 35 ------------------- .../attachment/signature/Hash__1.java | 25 ------------- .../attachment/signature/Signature__1.java | 33 ----------------- .../api/domain/model/metadata/data/Data.java | 2 ++ .../fitconnect/client/SubscriberClient.java | 4 +-- .../client/util/SubmissionUtil.java | 14 ++++---- .../client/SubscriberClientTest.java | 9 +++-- .../DefaultValidationServiceTest.java | 8 ++--- 12 files changed, 35 insertions(+), 127 deletions(-) rename api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/{data => }/Hash.java (81%) rename api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/{data => }/Signature.java (76%) rename api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/{data/DataSignatureType.java => SignatureType.java} (61%) delete mode 100644 api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/attachment/signature/AttachmentSignatureType.java delete mode 100644 api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/attachment/signature/Hash__1.java delete mode 100644 api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/attachment/signature/Signature__1.java diff --git a/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/data/Hash.java b/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/Hash.java similarity index 81% rename from api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/data/Hash.java rename to api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/Hash.java index 5c65bf35b..f25bc95c4 100644 --- a/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/data/Hash.java +++ b/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/Hash.java @@ -1,4 +1,4 @@ -package dev.fitko.fitconnect.api.domain.model.metadata.data; +package dev.fitko.fitconnect.api.domain.model.metadata; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; @@ -14,7 +14,7 @@ import java.util.Map; public class Hash { @JsonProperty("type") - private DataSignatureType dataSignatureType; + private SignatureType signatureType; @JsonProperty("content") private String content; diff --git a/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/data/Signature.java b/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/Signature.java similarity index 76% rename from api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/data/Signature.java rename to api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/Signature.java index ed51af150..3acec627e 100644 --- a/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/data/Signature.java +++ b/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/Signature.java @@ -1,15 +1,15 @@ -package dev.fitko.fitconnect.api.domain.model.metadata.data; +package dev.fitko.fitconnect.api.domain.model.metadata; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import dev.fitko.fitconnect.api.domain.model.metadata.EidasAdesProfile; -import dev.fitko.fitconnect.api.domain.model.metadata.SignatureFormat; import lombok.Data; +import lombok.NoArgsConstructor; import java.util.Map; @Data +@NoArgsConstructor @JsonInclude(JsonInclude.Include.NON_NULL) public class Signature { diff --git a/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/data/DataSignatureType.java b/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/SignatureType.java similarity index 61% rename from api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/data/DataSignatureType.java rename to api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/SignatureType.java index a41c74711..63397fa09 100644 --- a/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/data/DataSignatureType.java +++ b/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/SignatureType.java @@ -1,4 +1,4 @@ -package dev.fitko.fitconnect.api.domain.model.metadata.data; +package dev.fitko.fitconnect.api.domain.model.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; @@ -6,21 +6,21 @@ import com.fasterxml.jackson.annotation.JsonValue; import java.util.HashMap; import java.util.Map; -public enum DataSignatureType { +public enum SignatureType { SHA_512("sha512"); - private static final Map<String, DataSignatureType> CONSTANTS = new HashMap<>(); + private static final Map<String, SignatureType> CONSTANTS = new HashMap<>(); static { - for (final DataSignatureType c : values()) { + for (final SignatureType c : values()) { CONSTANTS.put(c.value, c); } } private final String value; - DataSignatureType(final String value) { + SignatureType(final String value) { this.value = value; } @@ -35,8 +35,8 @@ public enum DataSignatureType { } @JsonCreator - public static DataSignatureType fromValue(final String value) { - final DataSignatureType constant = CONSTANTS.get(value); + public static SignatureType fromValue(final String value) { + final SignatureType constant = CONSTANTS.get(value); if (constant == null) { throw new IllegalArgumentException("Unexpected value '" + value + "'"); } diff --git a/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/attachment/Attachment.java b/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/attachment/Attachment.java index a61c03e9f..6cd444285 100644 --- a/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/attachment/Attachment.java +++ b/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/attachment/Attachment.java @@ -3,8 +3,8 @@ package dev.fitko.fitconnect.api.domain.model.metadata.attachment; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import dev.fitko.fitconnect.api.domain.model.metadata.attachment.signature.Hash__1; -import dev.fitko.fitconnect.api.domain.model.metadata.attachment.signature.Signature__1; +import dev.fitko.fitconnect.api.domain.model.metadata.Hash; +import dev.fitko.fitconnect.api.domain.model.metadata.Signature; import lombok.Data; import lombok.NoArgsConstructor; @@ -17,10 +17,10 @@ import java.util.UUID; public class Attachment { @JsonProperty("hash") - private Hash__1 hash; + private Hash hash; @JsonProperty("signature") - private Signature__1 signature; + private Signature signature; @JsonProperty("purpose") private Purpose purpose; diff --git a/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/attachment/signature/AttachmentSignatureType.java b/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/attachment/signature/AttachmentSignatureType.java deleted file mode 100644 index 003d0356d..000000000 --- a/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/attachment/signature/AttachmentSignatureType.java +++ /dev/null @@ -1,35 +0,0 @@ -package dev.fitko.fitconnect.api.domain.model.metadata.attachment.signature; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonValue; - -import java.util.Arrays; - -public enum AttachmentSignatureType { - - SHA_512("sha512"); - private final String value; - - AttachmentSignatureType(final String value) { - this.value = value; - } - - @Override - public String toString() { - return this.value; - } - - @JsonValue - public String value() { - return this.value; - } - - @JsonCreator - public static AttachmentSignatureType fromValue(final String value) { - 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/dev/fitko/fitconnect/api/domain/model/metadata/attachment/signature/Hash__1.java b/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/attachment/signature/Hash__1.java deleted file mode 100644 index c707767c1..000000000 --- a/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/attachment/signature/Hash__1.java +++ /dev/null @@ -1,25 +0,0 @@ -package dev.fitko.fitconnect.api.domain.model.metadata.attachment.signature; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.Map; - -@Data -@NoArgsConstructor -@JsonInclude(JsonInclude.Include.NON_NULL) -public class Hash__1 { - - @JsonProperty("type") - private AttachmentSignatureType attachmentSignatureType; - - @JsonProperty("content") - private String content; - - @JsonIgnore - private Map<String, Object> additionalProperties; -} - diff --git a/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/attachment/signature/Signature__1.java b/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/attachment/signature/Signature__1.java deleted file mode 100644 index 5d7068edb..000000000 --- a/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/attachment/signature/Signature__1.java +++ /dev/null @@ -1,33 +0,0 @@ -package dev.fitko.fitconnect.api.domain.model.metadata.attachment.signature; - -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import dev.fitko.fitconnect.api.domain.model.metadata.EidasAdesProfile; -import dev.fitko.fitconnect.api.domain.model.metadata.SignatureFormat; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.Map; - -@Data -@NoArgsConstructor -@JsonInclude(JsonInclude.Include.NON_NULL) -public class Signature__1 { - - @JsonProperty("signatureFormat") - private SignatureFormat signatureFormat; - - @JsonProperty("eidasAdesProfile") - private EidasAdesProfile eidasAdesProfile; - - @JsonProperty("detachedSignature") - private Boolean detachedSignature; - - @JsonProperty("content") - private String content; - - @JsonIgnore - private Map<String, Object> additionalProperties; -} - diff --git a/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/data/Data.java b/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/data/Data.java index e685033a4..46013d5d2 100644 --- a/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/data/Data.java +++ b/api/src/main/java/dev/fitko/fitconnect/api/domain/model/metadata/data/Data.java @@ -3,6 +3,8 @@ package dev.fitko.fitconnect.api.domain.model.metadata.data; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; +import dev.fitko.fitconnect.api.domain.model.metadata.Hash; +import dev.fitko.fitconnect.api.domain.model.metadata.Signature; import lombok.NoArgsConstructor; import java.util.Map; diff --git a/client/src/main/java/dev/fitko/fitconnect/client/SubscriberClient.java b/client/src/main/java/dev/fitko/fitconnect/client/SubscriberClient.java index 5f24fd917..cda9fe98e 100644 --- a/client/src/main/java/dev/fitko/fitconnect/client/SubscriberClient.java +++ b/client/src/main/java/dev/fitko/fitconnect/client/SubscriberClient.java @@ -2,10 +2,10 @@ package dev.fitko.fitconnect.client; import com.fasterxml.jackson.databind.ObjectMapper; import com.nimbusds.jose.jwk.RSAKey; +import dev.fitko.fitconnect.api.domain.model.metadata.Hash; import dev.fitko.fitconnect.api.domain.model.metadata.Metadata; import dev.fitko.fitconnect.api.domain.model.metadata.attachment.Attachment; import dev.fitko.fitconnect.api.domain.model.metadata.attachment.AttachmentWithData; -import dev.fitko.fitconnect.api.domain.model.metadata.attachment.signature.Hash__1; import dev.fitko.fitconnect.api.domain.model.metadata.data.Data; import dev.fitko.fitconnect.api.domain.model.submission.Submission; import dev.fitko.fitconnect.api.domain.model.submission.SubmissionForPickup; @@ -225,7 +225,7 @@ public final class SubscriberClient { private ValidationResult validateAttachments(final List<AttachmentWithData> unencryptedAttachments) { for (final AttachmentWithData attachmentData : unencryptedAttachments) { final Attachment attachmentMetadata = attachmentData.getAttachmentMetadata(); - final Hash__1 hash = attachmentMetadata.getHash(); + final Hash hash = attachmentMetadata.getHash(); final ValidationResult result = subscriber.validateHashIntegrity(hash.getContent(), attachmentData.getDecryptedData()); if (result.hasError()) { LOGGER.error("Attachment data for id {} is corrupted", attachmentMetadata.getAttachmentId(), result.getError()); diff --git a/client/src/main/java/dev/fitko/fitconnect/client/util/SubmissionUtil.java b/client/src/main/java/dev/fitko/fitconnect/client/util/SubmissionUtil.java index 3a74a8a71..5121b57e6 100644 --- a/client/src/main/java/dev/fitko/fitconnect/client/util/SubmissionUtil.java +++ b/client/src/main/java/dev/fitko/fitconnect/client/util/SubmissionUtil.java @@ -1,15 +1,13 @@ package dev.fitko.fitconnect.client.util; import dev.fitko.fitconnect.api.domain.model.metadata.ContentStructure; +import dev.fitko.fitconnect.api.domain.model.metadata.Hash; import dev.fitko.fitconnect.api.domain.model.metadata.Metadata; import dev.fitko.fitconnect.api.domain.model.metadata.PublicServiceType; +import dev.fitko.fitconnect.api.domain.model.metadata.SignatureType; import dev.fitko.fitconnect.api.domain.model.metadata.attachment.Attachment; import dev.fitko.fitconnect.api.domain.model.metadata.attachment.Purpose; -import dev.fitko.fitconnect.api.domain.model.metadata.attachment.signature.AttachmentSignatureType; -import dev.fitko.fitconnect.api.domain.model.metadata.attachment.signature.Hash__1; import dev.fitko.fitconnect.api.domain.model.metadata.data.Data; -import dev.fitko.fitconnect.api.domain.model.metadata.data.DataSignatureType; -import dev.fitko.fitconnect.api.domain.model.metadata.data.Hash; import dev.fitko.fitconnect.api.domain.model.metadata.data.SubmissionSchema; import dev.fitko.fitconnect.api.domain.model.submission.CreateSubmission; import dev.fitko.fitconnect.api.domain.model.submission.ServiceType; @@ -29,6 +27,8 @@ import java.util.stream.Collectors; public final class SubmissionUtil { + private SubmissionUtil(){} + public static CreateSubmission createSubmission(final UUID destinationId, final ServiceType serviceType, final List<UUID> attachmentIdsToAnnounce) { return CreateSubmission.builder() .destinationId(destinationId) @@ -60,7 +60,7 @@ public final class SubmissionUtil { public static Data buildData(final DataPayload dataPayload) { final var hash = new Hash(); hash.setContent(dataPayload.getHashedData()); - hash.setDataSignatureType(DataSignatureType.SHA_512); + hash.setSignatureType(SignatureType.SHA_512); final var submissionSchema = new SubmissionSchema(); submissionSchema.setMimeType(dataPayload.getMimeType()); @@ -104,9 +104,9 @@ public final class SubmissionUtil { attachment.setFilename(attachmentPayload.getFile().getName()); attachment.setMimeType(attachmentPayload.getMimeType()); - final var hash = new Hash__1(); + final var hash = new Hash(); hash.setContent(attachmentPayload.getHashedData()); - hash.setAttachmentSignatureType(AttachmentSignatureType.SHA_512); + hash.setSignatureType(SignatureType.SHA_512); attachment.setHash(hash); return attachment; } diff --git a/client/src/test/java/dev/fitko/fitconnect/client/SubscriberClientTest.java b/client/src/test/java/dev/fitko/fitconnect/client/SubscriberClientTest.java index 206cbc35f..a06a10445 100644 --- a/client/src/test/java/dev/fitko/fitconnect/client/SubscriberClientTest.java +++ b/client/src/test/java/dev/fitko/fitconnect/client/SubscriberClientTest.java @@ -6,10 +6,9 @@ import com.nimbusds.jose.jwk.RSAKey; import dev.fitko.fitconnect.api.domain.model.metadata.ContentStructure; import dev.fitko.fitconnect.api.domain.model.metadata.Metadata; import dev.fitko.fitconnect.api.domain.model.metadata.attachment.Attachment; -import dev.fitko.fitconnect.api.domain.model.metadata.attachment.signature.Hash__1; import dev.fitko.fitconnect.api.domain.model.metadata.data.Data; -import dev.fitko.fitconnect.api.domain.model.metadata.data.DataSignatureType; -import dev.fitko.fitconnect.api.domain.model.metadata.data.Hash; +import dev.fitko.fitconnect.api.domain.model.metadata.SignatureType; +import dev.fitko.fitconnect.api.domain.model.metadata.Hash; import dev.fitko.fitconnect.api.domain.model.metadata.data.MimeType; import dev.fitko.fitconnect.api.domain.model.metadata.data.SubmissionSchema; import dev.fitko.fitconnect.api.domain.model.submission.Submission; @@ -233,7 +232,7 @@ class SubscriberClientTest { final Hash hash = new Hash(); hash.setContent(cryptoService.hashBytes(dataPayload.getBytes())); - hash.setDataSignatureType(DataSignatureType.SHA_512); + hash.setSignatureType(SignatureType.SHA_512); final SubmissionSchema schema = new SubmissionSchema(); schema.setSchemaUri(URI.create("https://dummy.schema.url")); @@ -379,7 +378,7 @@ class SubscriberClientTest { final var data = new Data(); data.setHash(dataHash); - final var attachmentHash = new Hash__1(); + final var attachmentHash = new Hash(); attachmentHash.setContent(""); final var attachment = new Attachment(); attachment.setFilename("src/test/resources/attachment.txt"); diff --git a/core/src/test/java/dev/fitko/fitconnect/core/validation/DefaultValidationServiceTest.java b/core/src/test/java/dev/fitko/fitconnect/core/validation/DefaultValidationServiceTest.java index 0851c1fa0..1c5eed5c3 100644 --- a/core/src/test/java/dev/fitko/fitconnect/core/validation/DefaultValidationServiceTest.java +++ b/core/src/test/java/dev/fitko/fitconnect/core/validation/DefaultValidationServiceTest.java @@ -12,8 +12,8 @@ import dev.fitko.fitconnect.api.config.ApplicationConfig; import dev.fitko.fitconnect.api.domain.model.metadata.ContentStructure; import dev.fitko.fitconnect.api.domain.model.metadata.Metadata; import dev.fitko.fitconnect.api.domain.model.metadata.data.Data; -import dev.fitko.fitconnect.api.domain.model.metadata.data.DataSignatureType; -import dev.fitko.fitconnect.api.domain.model.metadata.data.Hash; +import dev.fitko.fitconnect.api.domain.model.metadata.SignatureType; +import dev.fitko.fitconnect.api.domain.model.metadata.Hash; import dev.fitko.fitconnect.api.domain.model.metadata.data.MimeType; import dev.fitko.fitconnect.api.domain.model.metadata.data.SubmissionSchema; import dev.fitko.fitconnect.api.domain.validation.ValidationResult; @@ -116,7 +116,7 @@ class DefaultValidationServiceTest { final var hash = new Hash(); hash.setContent(hashService.toHexString(hashService.createHash("someBogusContent".getBytes()))); - hash.setDataSignatureType(DataSignatureType.SHA_512); + hash.setSignatureType(SignatureType.SHA_512); final var data = new Data(); data.setSubmissionSchema(submissionSchema); @@ -176,7 +176,7 @@ class DefaultValidationServiceTest { final var hash = new Hash(); hash.setContent("noHexString"); - hash.setDataSignatureType(DataSignatureType.SHA_512); + hash.setSignatureType(SignatureType.SHA_512); final var dataWithInvalidHashFormat = new Data(); dataWithInvalidHashFormat.setSubmissionSchema(submissionSchema); -- GitLab