From 213aede752644bd126d0afe1344623764d809722 Mon Sep 17 00:00:00 2001 From: Martin Vogel <martin.vogel@sinc.de> Date: Thu, 15 Sep 2022 15:38:59 +0200 Subject: [PATCH] refactor(config): change thrown exception on failed config loading to InitializationException --- .../client/factory/ApplicationConfigLoader.java | 13 +++++++++---- .../fitconnect/client/factory/ClientFactory.java | 6 ++++-- .../client/factory/ApplicationConfigLoaderTest.java | 2 +- .../client/factory/ClientFactoryTest.java | 5 +++-- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/client/src/main/java/dev/fitko/fitconnect/client/factory/ApplicationConfigLoader.java b/client/src/main/java/dev/fitko/fitconnect/client/factory/ApplicationConfigLoader.java index f51986e60..259616210 100644 --- a/client/src/main/java/dev/fitko/fitconnect/client/factory/ApplicationConfigLoader.java +++ b/client/src/main/java/dev/fitko/fitconnect/client/factory/ApplicationConfigLoader.java @@ -1,6 +1,7 @@ package dev.fitko.fitconnect.client.factory; import dev.fitko.fitconnect.api.config.ApplicationConfig; +import dev.fitko.fitconnect.api.exceptions.InitializationException; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.Constructor; @@ -18,16 +19,20 @@ public final class ApplicationConfigLoader { * @param configPath path to config file * * @return ApplicationConfig - * @throws IOException if the default config file could not be loaded + * @throws InitializationException if the config file could not be loaded */ - public static ApplicationConfig loadConfig(final Path configPath) throws IOException { - return loadConfig(Files.readString(configPath)); + public static ApplicationConfig loadConfig(final Path configPath) { + try { + return loadConfig(Files.readString(configPath)); + } catch (final IOException e) { + throw new InitializationException(e.getMessage(), e); + } } /** * Load ApplicationConfig from string. * - * @param configYaml string of the yaml config file + * @param configYaml string content of the yaml config file * * @return ApplicationConfig */ diff --git a/client/src/main/java/dev/fitko/fitconnect/client/factory/ClientFactory.java b/client/src/main/java/dev/fitko/fitconnect/client/factory/ClientFactory.java index 6a6aeb31a..8babca685 100644 --- a/client/src/main/java/dev/fitko/fitconnect/client/factory/ClientFactory.java +++ b/client/src/main/java/dev/fitko/fitconnect/client/factory/ClientFactory.java @@ -2,6 +2,7 @@ package dev.fitko.fitconnect.client.factory; import dev.fitko.fitconnect.api.config.ApplicationConfig; import dev.fitko.fitconnect.api.config.SubscriberConfig; +import dev.fitko.fitconnect.api.exceptions.InitializationException; import dev.fitko.fitconnect.api.services.Sender; import dev.fitko.fitconnect.api.services.Subscriber; import dev.fitko.fitconnect.api.services.auth.OAuthService; @@ -214,8 +215,9 @@ public final class ClientFactory { final ApplicationConfig applicationConfig = ApplicationConfigLoader.loadConfig(pathToConfig); LOGGER.info("Using sdk environment config {} with {}", applicationConfig.getCurrentEnvironment(), applicationConfig); return applicationConfig; - } catch (final IOException e) { - throw new IllegalStateException("Config could not be loaded, please provide a 'config.yml' in the root path or in the ENV-var 'FIT_CONNECT_CONFIG'", e); + } catch (final InitializationException e) { + LOGGER.error("Config could not be loaded, please provide a 'config.yml' in the root path or in the ENV-var 'FIT_CONNECT_CONFIG'"); + throw e; } } diff --git a/client/src/test/java/dev/fitko/fitconnect/client/factory/ApplicationConfigLoaderTest.java b/client/src/test/java/dev/fitko/fitconnect/client/factory/ApplicationConfigLoaderTest.java index 0df1d3795..ec98d3baa 100644 --- a/client/src/test/java/dev/fitko/fitconnect/client/factory/ApplicationConfigLoaderTest.java +++ b/client/src/test/java/dev/fitko/fitconnect/client/factory/ApplicationConfigLoaderTest.java @@ -25,7 +25,7 @@ class ApplicationConfigLoaderTest { @Test void testLoadMissingConfigFile() { - Assertions.assertThrows(IOException.class, () -> ApplicationConfigLoader.loadConfig(Path.of("/no/path"))); + Assertions.assertThrows(InitializationException.class, () -> ApplicationConfigLoader.loadConfig(Path.of("/no/path"))); } @Test diff --git a/client/src/test/java/dev/fitko/fitconnect/client/factory/ClientFactoryTest.java b/client/src/test/java/dev/fitko/fitconnect/client/factory/ClientFactoryTest.java index 68625bc9a..b75a1e29f 100644 --- a/client/src/test/java/dev/fitko/fitconnect/client/factory/ClientFactoryTest.java +++ b/client/src/test/java/dev/fitko/fitconnect/client/factory/ClientFactoryTest.java @@ -6,6 +6,7 @@ import dev.fitko.fitconnect.api.config.EnvironmentName; import dev.fitko.fitconnect.api.config.ResourcePaths; import dev.fitko.fitconnect.api.config.SenderConfig; import dev.fitko.fitconnect.api.config.SubscriberConfig; +import dev.fitko.fitconnect.api.exceptions.InitializationException; import org.junit.jupiter.api.Test; import java.util.Map; @@ -17,8 +18,8 @@ class ClientFactoryTest { @Test void testMissingConfiguration() { - assertThrows(IllegalStateException.class, () -> ClientFactory.senderClient()); - assertThrows(IllegalStateException.class, () -> ClientFactory.subscriberClient()); + assertThrows(InitializationException.class, () -> ClientFactory.senderClient()); + assertThrows(InitializationException.class, () -> ClientFactory.subscriberClient()); } @Test -- GitLab