aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/com/drivergrp/core/config.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/com/drivergrp/core/config.scala')
-rw-r--r--src/main/scala/com/drivergrp/core/config.scala43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/main/scala/com/drivergrp/core/config.scala b/src/main/scala/com/drivergrp/core/config.scala
new file mode 100644
index 0000000..5a89752
--- /dev/null
+++ b/src/main/scala/com/drivergrp/core/config.scala
@@ -0,0 +1,43 @@
+package com.drivergrp.core
+
+import java.io.File
+import com.typesafe.config.{Config, ConfigFactory}
+
+
+object config {
+
+ trait ConfigModule {
+ def config: Config
+ }
+
+ /**
+ * Configuration implementation providing config which is specified as the parameter
+ * which might be used for testing purposes
+ *
+ * @param config fixed config to provide
+ */
+ class DefaultConfigModule(val config: Config) extends ConfigModule
+
+ /**
+ * Configuration implementation reading default typesafe config
+ */
+ trait TypesafeConfigModule extends ConfigModule {
+
+ private val internalConfig: Config = {
+ val configDefaults =
+ ConfigFactory.load(this.getClass.getClassLoader, "application.conf")
+
+ scala.sys.props.get("application.config") match {
+
+ case Some(filename) =>
+ ConfigFactory.parseFile(new File(filename)).withFallback(configDefaults)
+
+ case None => configDefaults
+ }
+ }
+
+ protected val rootConfig = internalConfig
+
+ val config = rootConfig
+ }
+}