From 8bba0e0e542c36b682ab8e325876aabff414de09 Mon Sep 17 00:00:00 2001 From: Martin Vogel <martin.vogel@sinc.de> Date: Tue, 21 Jun 2022 22:31:09 +0200 Subject: [PATCH] #414 Use HOCON notation for app config --- .../dependency/ApplicationConfig.java | 36 +++++++++++++++++++ .../fitconnect/dependency/SdkModule.java | 28 ++++++--------- sdk-config/sdk.properties | 3 -- sdk.conf | 12 +++++++ 4 files changed, 58 insertions(+), 21 deletions(-) create mode 100644 dependency/src/main/java/de/fitko/fitconnect/dependency/ApplicationConfig.java delete mode 100644 sdk-config/sdk.properties create mode 100644 sdk.conf diff --git a/dependency/src/main/java/de/fitko/fitconnect/dependency/ApplicationConfig.java b/dependency/src/main/java/de/fitko/fitconnect/dependency/ApplicationConfig.java new file mode 100644 index 000000000..e459216d0 --- /dev/null +++ b/dependency/src/main/java/de/fitko/fitconnect/dependency/ApplicationConfig.java @@ -0,0 +1,36 @@ +package de.fitko.fitconnect.dependency; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import java.util.List; +import java.util.Properties; + +@Getter +@Setter +@ToString +public class ApplicationConfig { + + private String httpProxyHost; + private String httpProxyPort; + + private String authTokenUrl; + private List<String> apiUrls; + + private String clientId; + private String clientSecret; + + + public Properties getAsProperties() { + var props = new Properties(); + props.put("httpProxyHost", getHttpProxyHost()); + props.put("httpProxyPort", getHttpProxyPort()); + props.put("authTokenUrl", getAuthTokenUrl()); + props.put("apiUrls", String.join(",",getApiUrls())); + props.put("clientId", clientId); + props.put("clientSecret", clientSecret); + return props; + } +} + diff --git a/dependency/src/main/java/de/fitko/fitconnect/dependency/SdkModule.java b/dependency/src/main/java/de/fitko/fitconnect/dependency/SdkModule.java index 114ec6739..57551e680 100644 --- a/dependency/src/main/java/de/fitko/fitconnect/dependency/SdkModule.java +++ b/dependency/src/main/java/de/fitko/fitconnect/dependency/SdkModule.java @@ -5,6 +5,9 @@ import com.google.inject.Provides; import com.google.inject.Singleton; import com.google.inject.name.Named; import com.google.inject.name.Names; +import com.typesafe.config.Config; +import com.typesafe.config.ConfigBeanFactory; +import com.typesafe.config.ConfigFactory; import de.fitko.fitconnect.api.services.Sender; import de.fitko.fitconnect.api.services.Subscriber; import de.fitko.fitconnect.api.services.auth.OAuthService; @@ -24,15 +27,12 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.client.RestTemplate; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; +import java.io.File; public class SdkModule extends AbstractModule { private static final Logger logger = LoggerFactory.getLogger(SdkModule.class); - public static final String CONFIG_PATH = "sdk-config/sdk.properties"; + public static final String CONFIG_NAME = "sdk.conf"; @Override protected void configure() { @@ -43,16 +43,12 @@ public class SdkModule extends AbstractModule { bind(CertificateValidator.class).to(KeyValidator.class); bind(MetadataValidator.class).to(MetadataSubmissionValidator.class); bind(MetadataService.class).to(MetadataUploadService.class); + bind(OAuthService.class).to(DefaultOAuthService.class); bind(Sender.class).to(SubmissionSender.class); bind(Subscriber.class).to(SubmissionSubscriber.class); } - @Provides - OAuthService provideOAuthService(@Named("authTokenUrl") String tokenUrl, RestTemplate restTemplate) { - return new DefaultOAuthService(restTemplate, tokenUrl); - } - @Provides @Singleton RestTemplate provideRestTemplate(@Named("httpProxyHost") String proxyHost, @Named("httpProxyPort") int proxyPort) { @@ -60,13 +56,9 @@ public class SdkModule extends AbstractModule { } private void bindConfigProperties() { - try (InputStream in = new FileInputStream(CONFIG_PATH)) { - final Properties properties = new Properties(); - properties.load(in); - Names.bindProperties(binder(), properties); - logger.info("using sdk config: {}", properties); - } catch (IOException e) { - logger.error("could not read sdk properties", e); - } + final Config conf = ConfigFactory.load( ConfigFactory.parseFile(new File(CONFIG_NAME))).getConfig("sdk"); + final ApplicationConfig appConfig = ConfigBeanFactory.create(conf, ApplicationConfig.class); + Names.bindProperties(binder(), appConfig.getAsProperties()); + logger.info("using sdk config: {}", appConfig); } } diff --git a/sdk-config/sdk.properties b/sdk-config/sdk.properties deleted file mode 100644 index 10e7ac647..000000000 --- a/sdk-config/sdk.properties +++ /dev/null @@ -1,3 +0,0 @@ -authTokenUrl=https://auth-testing.fit-connect.fitko.dev/token -httpProxyHost= -httpProxyPort=0 \ No newline at end of file diff --git a/sdk.conf b/sdk.conf new file mode 100644 index 000000000..50dacfca5 --- /dev/null +++ b/sdk.conf @@ -0,0 +1,12 @@ +# SKD application properties and global configurations +sdk { + + clientId: "781f6213-0f0f-4a79-9372-e7187ffda98b" + clientSecret: "PnzR8Vbmhpv_VwTkT34wponqXWK8WBm-LADlryYdV4o" + + httpProxyHost: "" + httpProxyPort: "0" + + apiUrls: ["http://test.url1", "http://test.url2", "http://test.url3"] + authTokenUrl: "https://auth-testing.fit-connect.fitko.dev/token" +} -- GitLab