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 4af121a2c5bf1f06896b8d671f52cbcb57e8090f..74705e388dc719392277e3c81314812b90905ba7 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,7 @@ 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.Builder; import lombok.Getter; import lombok.Setter; @@ -21,6 +22,7 @@ import java.util.Map; }) @Getter @Setter +@Builder public class Metadata { @JsonProperty("contentStructure") ContentStructure contentStructure; 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 7e830f2d1001d542361b9481ec23a01a0fb4a461..159655d3761868a2b20fa1829ef85675c808ac04 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,6 +4,7 @@ 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.Builder; import lombok.Getter; import lombok.Setter; @@ -20,6 +21,7 @@ import java.util.Map; }) @Getter @Setter +@Builder public class Data { @JsonProperty("signature") diff --git a/api/src/main/java/fitconnect/api/domain/submission/Callback.java b/api/src/main/java/fitconnect/api/domain/submission/Callback.java new file mode 100644 index 0000000000000000000000000000000000000000..b456431722a9ce24413a8a3ac3d0d270b0bdc2a9 --- /dev/null +++ b/api/src/main/java/fitconnect/api/domain/submission/Callback.java @@ -0,0 +1,20 @@ +package fitconnect.api.domain.submission; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; +import lombok.Value; + +import java.net.URI; + +@Getter +@Setter +@Value +public class Callback { + + @JsonProperty("uri") + URI uri; + + @JsonProperty("secret") + String secret; +} diff --git a/api/src/main/java/fitconnect/api/domain/submission/ServiceType.java b/api/src/main/java/fitconnect/api/domain/submission/ServiceType.java new file mode 100644 index 0000000000000000000000000000000000000000..c3d3b2e1f502415c44d86826a52bce9870c616af --- /dev/null +++ b/api/src/main/java/fitconnect/api/domain/submission/ServiceType.java @@ -0,0 +1,21 @@ +package fitconnect.api.domain.submission; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.Setter; +import lombok.Value; + +@Getter +@Setter +@Value +public class ServiceType { + + @JsonProperty("name") + String name; + + @JsonProperty("description") + String description; + + @JsonProperty("identifier") + String identifier; +} diff --git a/api/src/main/java/fitconnect/api/domain/submission/Submission.java b/api/src/main/java/fitconnect/api/domain/submission/Submission.java index 1744385949678043335e85324d984e3cae574521..7aa806e37731476874e6eb81577db7fd2418eb87 100644 --- a/api/src/main/java/fitconnect/api/domain/submission/Submission.java +++ b/api/src/main/java/fitconnect/api/domain/submission/Submission.java @@ -1,9 +1,34 @@ package fitconnect.api.domain.submission; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Builder; import lombok.Getter; import lombok.Setter; +import lombok.Value; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; @Getter @Setter +@Value +@Builder public class Submission { + + @JsonProperty("destinationId") + UUID destinationId; + + @JsonProperty("destinationId") + Optional<UUID> caseId; + + @JsonProperty("announcedAttachments") + List<UUID> announcedAttachments; + + @JsonProperty("serviceType") + ServiceType serviceType; + + @JsonProperty("callback") + Callback callback; + } diff --git a/api/src/main/java/fitconnect/api/logger/LoggingProvider.java b/api/src/main/java/fitconnect/api/logger/LoggingProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..2987c41d57421df3805b3a9c2334677cc1dcaeb9 --- /dev/null +++ b/api/src/main/java/fitconnect/api/logger/LoggingProvider.java @@ -0,0 +1,18 @@ +package fitconnect.api.logger; + +import java.util.logging.Logger; + +/** + * Provider that allows to register a custom {@link Logger} implementation. + * + */ +public interface LoggingProvider { + + /** + * Creates a new custom {@link Logger}. + * + * @param name custom name for the logger + * @return Implementation of a {@link Logger} + */ + Logger createLogger(final String name); +} diff --git a/api/src/main/java/fitconnect/api/logger/SdkLogger.java b/api/src/main/java/fitconnect/api/logger/SdkLogger.java deleted file mode 100644 index c82eab60fd1bce8a75928be2e5d1d22e25011c03..0000000000000000000000000000000000000000 --- a/api/src/main/java/fitconnect/api/logger/SdkLogger.java +++ /dev/null @@ -1,13 +0,0 @@ -package fitconnect.api.logger; - - -import java.util.logging.Logger; - -public final class SdkLogger { - - // TODO make custom logging module injectable / load via SPI - - public static Logger defaultLogger(final Class clazz) { - return Logger.getLogger(clazz.getName()); - } -} diff --git a/client/src/main/java/de/fitconnect/client/FitConnectClient.java b/client/src/main/java/de/fitconnect/client/FitConnectClient.java index 4e88a9dad6693fdd5f724985adda5662e8ab382a..d13bcfe9beb704ba776d8f19874a99f2b20430a1 100644 --- a/client/src/main/java/de/fitconnect/client/FitConnectClient.java +++ b/client/src/main/java/de/fitconnect/client/FitConnectClient.java @@ -6,7 +6,7 @@ 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 fitconnect.impl.logger.SdkLogger; import java.util.List; import java.util.Optional; @@ -15,7 +15,7 @@ import java.util.logging.Logger; public class FitConnectClient { - private static final Logger logger = SdkLogger.defaultLogger(FitConnectClient.class); + private static final Logger logger = SdkLogger.customLogger(FitConnectClient.class); private final Sender sender; private Optional<OAuthToken> token = Optional.empty(); diff --git a/client/src/main/java/de/fitconnect/client/TestRunner.java b/client/src/main/java/de/fitconnect/client/TestRunner.java index 7a82becdebc053ee4688fbb7f795e8ca6b2c7fe7..8b01abaf9b604bc198d95295322d4f807553c5a2 100644 --- a/client/src/main/java/de/fitconnect/client/TestRunner.java +++ b/client/src/main/java/de/fitconnect/client/TestRunner.java @@ -1,5 +1,7 @@ package de.fitconnect.client; +import fitconnect.api.domain.metadata.Metadata; +import fitconnect.api.domain.metadata.data.Data; import fitconnect.api.domain.submission.Submission; import java.util.Collections; @@ -14,11 +16,10 @@ public class TestRunner { FitConnectClient client = new FitConnectClient(); // sample high -level- api calls to send a submission - client + client.authenticate(clientId,secret) .printToken() - .authenticate(clientId,secret) - .createSubmission(new Submission()) + .createSubmission(Submission.builder().build()) .uploadAttachments(Collections.emptyList()) - .sendSubmission(null, null); + .sendSubmission(Metadata.builder().build(), Data.builder().build()); } } diff --git a/impl/src/main/java/fitconnect/impl/SubmissionSender.java b/impl/src/main/java/fitconnect/impl/SubmissionSender.java index 559ee48c3fed1b81c5877cf5d8e85d4be56072bf..c60c458da95d85d47848977af1fce4078b90b825 100644 --- a/impl/src/main/java/fitconnect/impl/SubmissionSender.java +++ b/impl/src/main/java/fitconnect/impl/SubmissionSender.java @@ -10,7 +10,7 @@ import fitconnect.api.domain.metadata.attachment.Attachment; import fitconnect.api.domain.metadata.data.Data; import fitconnect.api.exceptions.AuthenticationException; import fitconnect.api.exceptions.EncryptionException; -import fitconnect.api.logger.SdkLogger; +import fitconnect.impl.logger.SdkLogger; import fitconnect.api.validation.CertificateValidator; import fitconnect.api.validation.ValidationResult; import fitconnect.impl.auth.FitCoAuthService; diff --git a/impl/src/main/java/fitconnect/impl/SubmissionSubscriber.java b/impl/src/main/java/fitconnect/impl/SubmissionSubscriber.java index de4a2144a2e955ace238f3948b85903b34c6ed71..e8eea17c71b5c52aa1d62837eb315c8df4836f71 100644 --- a/impl/src/main/java/fitconnect/impl/SubmissionSubscriber.java +++ b/impl/src/main/java/fitconnect/impl/SubmissionSubscriber.java @@ -10,7 +10,7 @@ import fitconnect.api.domain.metadata.attachment.Attachment; import fitconnect.api.domain.metadata.data.Data; import fitconnect.api.exceptions.AuthenticationException; import fitconnect.api.exceptions.DecryptionException; -import fitconnect.api.logger.SdkLogger; +import fitconnect.impl.logger.SdkLogger; import fitconnect.api.validation.MetadataValidator; import fitconnect.api.validation.ValidationResult; import fitconnect.impl.auth.FitCoAuthService; diff --git a/impl/src/main/java/fitconnect/impl/auth/FitCoAuthService.java b/impl/src/main/java/fitconnect/impl/auth/FitCoAuthService.java index e9486a5b0b54a33e14f89677d3f5012b06a1fbd8..5b6a8574d2efd7eb0c3c86bcd9e6c54a9f844b09 100644 --- a/impl/src/main/java/fitconnect/impl/auth/FitCoAuthService.java +++ b/impl/src/main/java/fitconnect/impl/auth/FitCoAuthService.java @@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import fitconnect.api.auth.OAuthService; import fitconnect.api.auth.OAuthToken; import fitconnect.api.exceptions.AuthenticationException; -import fitconnect.api.logger.SdkLogger; +import fitconnect.impl.logger.SdkLogger; import java.io.IOException; import java.net.URI; diff --git a/impl/src/main/java/fitconnect/impl/logger/DefaultLoggingProvider.java b/impl/src/main/java/fitconnect/impl/logger/DefaultLoggingProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..2eba4f24919502557397cad10e0fcc6394bc084e --- /dev/null +++ b/impl/src/main/java/fitconnect/impl/logger/DefaultLoggingProvider.java @@ -0,0 +1,13 @@ +package fitconnect.impl.logger; + +import fitconnect.api.logger.LoggingProvider; + +import java.util.logging.Logger; + +public class DefaultLoggingProvider implements LoggingProvider { + + @Override + public Logger createLogger(final String name) { + return Logger.getLogger(name); + } +} diff --git a/impl/src/main/java/fitconnect/impl/logger/SdkLogger.java b/impl/src/main/java/fitconnect/impl/logger/SdkLogger.java new file mode 100644 index 0000000000000000000000000000000000000000..fcd56f20b8bab2dcb2991c48a9542c6e079717e0 --- /dev/null +++ b/impl/src/main/java/fitconnect/impl/logger/SdkLogger.java @@ -0,0 +1,22 @@ +package fitconnect.impl.logger; + + +import fitconnect.api.logger.LoggingProvider; + +import java.util.ServiceLoader; +import java.util.logging.Logger; + +public final class SdkLogger { + + public static Logger defaultLogger(final Class clazz) { + return Logger.getLogger(clazz.getName()); + } + + // TODO find a better solution than this ;) + public static Logger customLogger(final Class clazz) { + var serviceLoader = ServiceLoader.load(LoggingProvider.class); + final LoggingProvider loggingProvider = serviceLoader.iterator().next(); + return loggingProvider.createLogger(clazz.getName()); + } + +} diff --git a/impl/src/main/resources/META-INF/services/fitconnect.api.logger.LoggingProvider b/impl/src/main/resources/META-INF/services/fitconnect.api.logger.LoggingProvider new file mode 100644 index 0000000000000000000000000000000000000000..3f1e3b1214454dc38995a74dc6f2e8ed9d2c0c99 --- /dev/null +++ b/impl/src/main/resources/META-INF/services/fitconnect.api.logger.LoggingProvider @@ -0,0 +1 @@ +fitconnect.impl.logger.DefaultLoggingProvider \ No newline at end of file diff --git a/impl/src/test/java/fitconnect/impl/auth/OAuthTokenIntegrationTest.java b/impl/src/test/java/fitconnect/impl/auth/OAuthTokenIntegrationTest.java index b0ee8870e17a5094f8b17a0423fdf8c5c561dc54..5b6dcd62b160f9ef26b4ac46646c555ac7013d67 100644 --- a/impl/src/test/java/fitconnect/impl/auth/OAuthTokenIntegrationTest.java +++ b/impl/src/test/java/fitconnect/impl/auth/OAuthTokenIntegrationTest.java @@ -31,8 +31,8 @@ class OAuthTokenIntegrationTest { // Then assertTrue(token.isPresent()); - assertNull(token.get().error()); - assertNotNull(token.get().access_token()); - assertEquals(1800, token.get().expires_in()); + assertNull(token.get().getError()); + assertNotNull(token.get().getAccessToken()); + assertEquals(1800, token.get().getExpiresIn()); } } \ No newline at end of file