Skip to content
Snippets Groups Projects
Commit a11ba14b authored by Martin Vogel's avatar Martin Vogel
Browse files

#414 Load custom logger via SPI

parent f9b5257f
No related branches found
No related tags found
2 merge requests!2#414 Remaining changes from MR,!1planning#414 Methoden Signaturen (Zwischenstand)
Showing
with 137 additions and 12 deletions
...@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; ...@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
...@@ -21,6 +22,7 @@ import java.util.Map; ...@@ -21,6 +22,7 @@ import java.util.Map;
}) })
@Getter @Getter
@Setter @Setter
@Builder
public class Metadata { public class Metadata {
@JsonProperty("contentStructure") @JsonProperty("contentStructure")
ContentStructure contentStructure; ContentStructure contentStructure;
......
...@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; ...@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
...@@ -20,6 +21,7 @@ import java.util.Map; ...@@ -20,6 +21,7 @@ import java.util.Map;
}) })
@Getter @Getter
@Setter @Setter
@Builder
public class Data { public class Data {
@JsonProperty("signature") @JsonProperty("signature")
......
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;
}
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;
}
package fitconnect.api.domain.submission; package fitconnect.api.domain.submission;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.Value;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
@Getter @Getter
@Setter @Setter
@Value
@Builder
public class Submission { 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;
} }
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);
}
...@@ -6,7 +6,7 @@ import fitconnect.api.domain.metadata.Metadata; ...@@ -6,7 +6,7 @@ import fitconnect.api.domain.metadata.Metadata;
import fitconnect.api.domain.metadata.attachment.Attachment; import fitconnect.api.domain.metadata.attachment.Attachment;
import fitconnect.api.domain.metadata.data.Data; import fitconnect.api.domain.metadata.data.Data;
import fitconnect.api.domain.submission.Submission; import fitconnect.api.domain.submission.Submission;
import fitconnect.api.logger.SdkLogger; import fitconnect.impl.logger.SdkLogger;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
...@@ -15,7 +15,7 @@ import java.util.logging.Logger; ...@@ -15,7 +15,7 @@ import java.util.logging.Logger;
public class FitConnectClient { 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 final Sender sender;
private Optional<OAuthToken> token = Optional.empty(); private Optional<OAuthToken> token = Optional.empty();
......
package de.fitconnect.client; package de.fitconnect.client;
import fitconnect.api.domain.metadata.Metadata;
import fitconnect.api.domain.metadata.data.Data;
import fitconnect.api.domain.submission.Submission; import fitconnect.api.domain.submission.Submission;
import java.util.Collections; import java.util.Collections;
...@@ -14,11 +16,10 @@ public class TestRunner { ...@@ -14,11 +16,10 @@ public class TestRunner {
FitConnectClient client = new FitConnectClient(); FitConnectClient client = new FitConnectClient();
// sample high -level- api calls to send a submission // sample high -level- api calls to send a submission
client client.authenticate(clientId,secret)
.printToken() .printToken()
.authenticate(clientId,secret) .createSubmission(Submission.builder().build())
.createSubmission(new Submission())
.uploadAttachments(Collections.emptyList()) .uploadAttachments(Collections.emptyList())
.sendSubmission(null, null); .sendSubmission(Metadata.builder().build(), Data.builder().build());
} }
} }
...@@ -10,7 +10,7 @@ import fitconnect.api.domain.metadata.attachment.Attachment; ...@@ -10,7 +10,7 @@ import fitconnect.api.domain.metadata.attachment.Attachment;
import fitconnect.api.domain.metadata.data.Data; import fitconnect.api.domain.metadata.data.Data;
import fitconnect.api.exceptions.AuthenticationException; import fitconnect.api.exceptions.AuthenticationException;
import fitconnect.api.exceptions.EncryptionException; import fitconnect.api.exceptions.EncryptionException;
import fitconnect.api.logger.SdkLogger; import fitconnect.impl.logger.SdkLogger;
import fitconnect.api.validation.CertificateValidator; import fitconnect.api.validation.CertificateValidator;
import fitconnect.api.validation.ValidationResult; import fitconnect.api.validation.ValidationResult;
import fitconnect.impl.auth.FitCoAuthService; import fitconnect.impl.auth.FitCoAuthService;
......
...@@ -10,7 +10,7 @@ import fitconnect.api.domain.metadata.attachment.Attachment; ...@@ -10,7 +10,7 @@ import fitconnect.api.domain.metadata.attachment.Attachment;
import fitconnect.api.domain.metadata.data.Data; import fitconnect.api.domain.metadata.data.Data;
import fitconnect.api.exceptions.AuthenticationException; import fitconnect.api.exceptions.AuthenticationException;
import fitconnect.api.exceptions.DecryptionException; import fitconnect.api.exceptions.DecryptionException;
import fitconnect.api.logger.SdkLogger; import fitconnect.impl.logger.SdkLogger;
import fitconnect.api.validation.MetadataValidator; import fitconnect.api.validation.MetadataValidator;
import fitconnect.api.validation.ValidationResult; import fitconnect.api.validation.ValidationResult;
import fitconnect.impl.auth.FitCoAuthService; import fitconnect.impl.auth.FitCoAuthService;
......
...@@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; ...@@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import fitconnect.api.auth.OAuthService; import fitconnect.api.auth.OAuthService;
import fitconnect.api.auth.OAuthToken; import fitconnect.api.auth.OAuthToken;
import fitconnect.api.exceptions.AuthenticationException; import fitconnect.api.exceptions.AuthenticationException;
import fitconnect.api.logger.SdkLogger; import fitconnect.impl.logger.SdkLogger;
import java.io.IOException; import java.io.IOException;
import java.net.URI; import java.net.URI;
......
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);
}
}
package fitconnect.api.logger; package fitconnect.impl.logger;
import fitconnect.api.logger.LoggingProvider;
import java.util.ServiceLoader;
import java.util.logging.Logger; import java.util.logging.Logger;
public final class SdkLogger { public final class SdkLogger {
// TODO make custom logging module injectable / load via SPI
public static Logger defaultLogger(final Class clazz) { public static Logger defaultLogger(final Class clazz) {
return Logger.getLogger(clazz.getName()); 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());
}
} }
fitconnect.impl.logger.DefaultLoggingProvider
\ No newline at end of file
...@@ -31,8 +31,8 @@ class OAuthTokenIntegrationTest { ...@@ -31,8 +31,8 @@ class OAuthTokenIntegrationTest {
// Then // Then
assertTrue(token.isPresent()); assertTrue(token.isPresent());
assertNull(token.get().error()); assertNull(token.get().getError());
assertNotNull(token.get().access_token()); assertNotNull(token.get().getAccessToken());
assertEquals(1800, token.get().expires_in()); assertEquals(1800, token.get().getExpiresIn());
} }
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment