From 118e750e9ea48bae2705dd644a2235049bc3bdc8 Mon Sep 17 00:00:00 2001 From: Martin Vogel <martin.vogel@sinc.de> Date: Wed, 22 Jun 2022 18:34:05 +0200 Subject: [PATCH] #414 Refactor domain model classes --- .../model/event/SecurityEventToken.java | 4 -- .../model/events/SecurityEventToken.java | 4 ++ ...bmission.java => SubmissionForPickup.java} | 2 +- ...sionRequest.java => SubmissionSubmit.java} | 2 +- ...issions.java => SubmissionsForPickup.java} | 11 ++-- .../domain/validation/ValidationResult.java | 23 +++----- .../fitconnect/core/SubmissionSender.java | 55 ++++++++----------- 7 files changed, 46 insertions(+), 55 deletions(-) delete mode 100644 api/src/main/java/de/fitko/fitconnect/api/domain/model/event/SecurityEventToken.java create mode 100644 api/src/main/java/de/fitko/fitconnect/api/domain/model/events/SecurityEventToken.java rename api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/{CreatedSubmission.java => SubmissionForPickup.java} (91%) rename api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/{SubmissionRequest.java => SubmissionSubmit.java} (95%) rename api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/{AvailableSubmissions.java => SubmissionsForPickup.java} (67%) diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/model/event/SecurityEventToken.java b/api/src/main/java/de/fitko/fitconnect/api/domain/model/event/SecurityEventToken.java deleted file mode 100644 index 9104fd7c5..000000000 --- a/api/src/main/java/de/fitko/fitconnect/api/domain/model/event/SecurityEventToken.java +++ /dev/null @@ -1,4 +0,0 @@ -package de.fitko.fitconnect.api.domain.model.event; - -public class SecurityEventToken { -} diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/model/events/SecurityEventToken.java b/api/src/main/java/de/fitko/fitconnect/api/domain/model/events/SecurityEventToken.java new file mode 100644 index 000000000..177de5151 --- /dev/null +++ b/api/src/main/java/de/fitko/fitconnect/api/domain/model/events/SecurityEventToken.java @@ -0,0 +1,4 @@ +package de.fitko.fitconnect.api.domain.model.events; + +public class SecurityEventToken { +} diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/CreatedSubmission.java b/api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/SubmissionForPickup.java similarity index 91% rename from api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/CreatedSubmission.java rename to api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/SubmissionForPickup.java index d07b2de50..4c179568b 100644 --- a/api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/CreatedSubmission.java +++ b/api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/SubmissionForPickup.java @@ -6,7 +6,7 @@ import lombok.Value; import java.util.UUID; @Value -public class CreatedSubmission { +public class SubmissionForPickup { @JsonProperty("destinationId") private final UUID destinationId; diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/SubmissionRequest.java b/api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/SubmissionSubmit.java similarity index 95% rename from api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/SubmissionRequest.java rename to api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/SubmissionSubmit.java index 0b691c7ba..a90e0398a 100644 --- a/api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/SubmissionRequest.java +++ b/api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/SubmissionSubmit.java @@ -14,7 +14,7 @@ import java.util.UUID; @Setter @Value @Builder -public class SubmissionRequest { +public class SubmissionSubmit { @JsonProperty("destinationId") UUID destinationId; diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/AvailableSubmissions.java b/api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/SubmissionsForPickup.java similarity index 67% rename from api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/AvailableSubmissions.java rename to api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/SubmissionsForPickup.java index 07dc7552d..54f0f14a0 100644 --- a/api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/AvailableSubmissions.java +++ b/api/src/main/java/de/fitko/fitconnect/api/domain/model/submission/SubmissionsForPickup.java @@ -1,13 +1,16 @@ package de.fitko.fitconnect.api.domain.model.submission; + import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Builder; import lombok.Value; +import java.util.Collections; import java.util.List; @Value -public class AvailableSubmissions { - +@Builder +public class SubmissionsForPickup{ @JsonProperty("count") int count; @@ -18,5 +21,5 @@ public class AvailableSubmissions { int totalCount; @JsonProperty("submissions") - List<CreatedSubmission> submissions; -} + List<SubmissionForPickup> submissions = Collections.emptyList(); +} \ No newline at end of file diff --git a/api/src/main/java/de/fitko/fitconnect/api/domain/validation/ValidationResult.java b/api/src/main/java/de/fitko/fitconnect/api/domain/validation/ValidationResult.java index 0293bfbed..c9f74030f 100644 --- a/api/src/main/java/de/fitko/fitconnect/api/domain/validation/ValidationResult.java +++ b/api/src/main/java/de/fitko/fitconnect/api/domain/validation/ValidationResult.java @@ -1,44 +1,39 @@ package de.fitko.fitconnect.api.domain.validation; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - /** * Wrapper for validations including errors that occurred */ public class ValidationResult { private final boolean isValid; - private final List<Exception> errors; + private Exception error; private ValidationResult(final boolean isValid) { this.isValid = isValid; - this.errors = Collections.emptyList(); } - private ValidationResult(final boolean isValid, Exception... exceptions) { + private ValidationResult(final boolean isValid, Exception exception) { this.isValid = isValid; - this.errors = Arrays.asList(exceptions); + this.error = exception; } public static ValidationResult ok() { return new ValidationResult(true); } - public static ValidationResult error(Exception... exceptions) { - return new ValidationResult(false, exceptions); + public static ValidationResult error(Exception exception) { + return new ValidationResult(false, exception); } public boolean isValid() { return this.isValid; } - public boolean hasErrors() { - return !isValid || !errors.isEmpty(); + public boolean hasError() { + return !isValid || error != null; } - public List<Exception> getErrors() { - return this.errors; + public Exception getError() { + return this.error; } } diff --git a/core/src/main/java/de/fitko/fitconnect/core/SubmissionSender.java b/core/src/main/java/de/fitko/fitconnect/core/SubmissionSender.java index fc12ed0f8..68e965b1f 100644 --- a/core/src/main/java/de/fitko/fitconnect/core/SubmissionSender.java +++ b/core/src/main/java/de/fitko/fitconnect/core/SubmissionSender.java @@ -8,10 +8,10 @@ import de.fitko.fitconnect.api.domain.model.metadata.attachment.Attachment; import de.fitko.fitconnect.api.domain.model.metadata.attachment.signature.Hash__1; import de.fitko.fitconnect.api.domain.model.metadata.attachment.signature.Type; import de.fitko.fitconnect.api.domain.model.metadata.data.Data; -import de.fitko.fitconnect.api.domain.model.submission.SubmissionRequest; -import de.fitko.fitconnect.api.domain.model.submission.CreatedSubmission; +import de.fitko.fitconnect.api.domain.model.submission.SubmissionForPickup; +import de.fitko.fitconnect.api.domain.model.submission.SubmissionSubmit; import de.fitko.fitconnect.api.domain.validation.ValidationResult; -import de.fitko.fitconnect.api.exceptions.internal.AuthenticationException; +import de.fitko.fitconnect.api.exceptions.AttachmentCreationException; import de.fitko.fitconnect.api.services.Sender; import de.fitko.fitconnect.api.services.auth.OAuthService; import de.fitko.fitconnect.api.services.crypto.CryptoService; @@ -24,7 +24,6 @@ import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; import java.util.List; -import java.util.Optional; import java.util.UUID; public class SubmissionSender implements Sender { @@ -35,8 +34,7 @@ public class SubmissionSender implements Sender { private final CertificateValidator certificateValidator; private final CryptoService cryptoService; private final MetadataService metadataService; - - private HashUtil hashUtil = new HashUtil(); + private final HashUtil hashUtil = new HashUtil(); @Inject public SubmissionSender(final OAuthService authService, @@ -51,77 +49,72 @@ public class SubmissionSender implements Sender { @Override - public ValidationResult validatePublicKey(RSAKey publicKey) { + public ValidationResult validatePublicKey(final RSAKey publicKey) { return certificateValidator.validatePublicKey(publicKey); } @Override - public Optional<Data> encryptSubmissionData(RSAKey publicKey, Data data) { + public Data encryptSubmissionData(final RSAKey publicKey, final Data data) { throw new UnsupportedOperationException("not yet implemented"); } @Override - public Optional<Attachment> encryptAttachment(RSAKey publicKey, Attachment attachment) { + public Attachment encryptAttachment(final RSAKey publicKey, final Attachment attachment) { throw new UnsupportedOperationException("not yet implemented"); } @Override - public Optional<OAuthToken> retrieveOAuthToken(String clientId, String clientSecret, String... scope) { - try { - final OAuthToken token = authService.authenticate(clientId, clientSecret, scope); - logger.debug("successfully retrieved token {}", token.getAccessToken()); - return Optional.of(token); - } catch (AuthenticationException e) { - logger.error("client could not be authenticated", e.getMessage()); - return Optional.empty(); - } + public OAuthToken retrieveOAuthToken(final String clientId, final String clientSecret, final String... scope) { + final OAuthToken token = authService.authenticate(clientId, clientSecret, scope); + logger.debug("Successfully retrieved OAuth token: {}", token.getAccessToken()); + return token; } @Override - public Optional<Metadata> createMetadata(Data data, List<Attachment> attachments) { + public Metadata createMetadata(final Data data, final List<Attachment> attachments) { throw new UnsupportedOperationException("not yet implemented"); } @Override - public Optional<Metadata> createMetadata(List<Attachment> attachments) { + public Metadata createMetadata(final List<Attachment> attachments) { throw new UnsupportedOperationException("not yet implemented"); } @Override - public Optional<CreatedSubmission> createSubmission(SubmissionRequest submission) { + public SubmissionForPickup createSubmission(final SubmissionSubmit submission) { throw new UnsupportedOperationException("not yet implemented"); } @Override - public Optional<CreatedSubmission> sendSubmission(UUID submissionId, Metadata encryptedMetadata) { + public SubmissionForPickup sendSubmission(final UUID submissionId, final Metadata encryptedMetadata) { throw new UnsupportedOperationException("not yet implemented"); } @Override - public void uploadAttachments(UUID submissionId, List<Attachment> encryptedAttachments) { + public void uploadAttachments(final UUID submissionId, final List<Attachment> encryptedAttachments) { throw new UnsupportedOperationException("not yet implemented"); } @Override - public Optional<Attachment> createAttachment(File file) { + public Attachment createAttachment(final File file) { try { - String hashedFileContent = hashUtil.createHashFromFile(file); - Hash__1 hash = new Hash__1(); + final String hashedFileContent = hashUtil.createHashFromFile(file); + final Hash__1 hash = new Hash__1(); hash.setType(Type.SHA_512); hash.setContent(hashedFileContent); - return Optional.ofNullable(Attachment.builder() + return Attachment.builder() .attachmentId(UUID.randomUUID()) .filename(file.getName()) .hash(hash) - .build()); - } catch (IOException e) { + .build(); + } catch (final IOException e) { logger.error("Attachment could not be read", e); - return Optional.empty(); + throw new AttachmentCreationException(e.getMessage(), e); } } @Override - public RSAKey getEncryptionKeyForDestination(UUID destinationId) { + public RSAKey getEncryptionKeyForDestination(final UUID destinationId) { throw new UnsupportedOperationException("not yet implemented"); } -- GitLab