Little scala extension to Typesafe Config
libraryDependencies += "com.github.andyglow" %% "typesafe-config-scala" % ${LATEST_VERSION} % Compile
Import it
import com.github.andyglow.config._
And then you will be able to
val v1 = config.get[String]("path")
val v2 = config.get[Int]("path")
val v3 = config.get[FiniteDuration]("path")
// optional value
val val1: Option[String] = config.get[Option[String]]("path")
val val2: String = config.getOrElse[String]("path", "default")
val list1 = config.get[List[String]]("path")
val set2 = config.get[Set[Int]]("path")
val iterator3 = config.get[Iterator[ConfigMemorySize]]("path")
String
Int
Boolean
Double
Long
Bytes
(file size, etc...)Duration
(java.time)Duration
(scala)FiniteDuration
ConfigList
Config
ConfigObject
ConfigMemorySize
Date
(java.util)Date
(java.sql)Time
(java.sql)Timestamp
(java.sql)LocalDate
(java.time)LocalTime
(java.time)LocalDateTime
(java.time)OffsetDateTime
(java.time)ZonedDateTime
(java.time)DayOfWeek
(java.time)Month
(java.time)Year
(java.time)Option[T]
whereT
is one of the supported types- scala collections.
Seq[T]
, etc. Any sort of collection types which has correspondingCanBuildFrom
Also this can be extended by providing implementations for FromConf
and/or ConfType
(used for collections and might be implicitly reused for FromConf
)
For example take a look at com.github.andyglow.config.ConfType#juDateT
implementation
and spec at com.github.andyglow.config.JavaUtilDateExtSpec
Often we need to transform configs into some more trivial structures like Maps or java Properties.
For these sort or problems we provide Flatten
function.
It map take Config
or ConfigValue
and produce either Properties or Map.
Example:
val conf: Config = ???
// for config
val properties = Flatten[java.util.Properties](conf)
val stringMap = Flatten[Map[String, String]](conf)
// for value
val properties = Flatten[java.util.Properties](conf.getValue("some-prop"))
val stringMap = Flatten[Map[String, String]](conf.getValue("some-prop"))
// also you can flatten config into already initialized instance of either Properties of Map
val propertiesWithConfig = Flatten(conf.getValue("some-prop"), properties)
val stringMapWithConfig = Flatten(conf.getValue("some-prop"), stringMap)