Skip to content

Latest commit

 

History

History
68 lines (47 loc) · 1.71 KB

README.md

File metadata and controls

68 lines (47 loc) · 1.71 KB

Injectable Configuration Module

An extension to Playframework adding injectable configuration in form of play.api.inject.Module - implemented with Playframework API. Having a following application.conf:

icm.int = 121535
icm.long = 1768619760268566049
icm.double = 2.5

icm.false = false
icm.true = true

icm.nonEmptyString = "character sequence"
icm.emptyString = ""

icm.nullRef = null

icm.emptyList = []
icm.ints = [523969, 177618]
icm.longs = [5272471683069627553, 789875541540841016]
icm.doubles = [3.5, 4.5]

icm.emptyConf = {

  innerEmptyConf = {

  }

}

icm.nonEmptyConf = {
  innerKey = "innerValue"
}

icm.complex = [0, {
  object = {
    hello = "world"
  },
  flat = "flat"
}, "boom", false]

This module allows injecting body of configuration in following manner:

class Application @Inject()(@Config("icm.int") intScala: Int,
                            @Config("icm.int") intJava: java.lang.Integer,
                            @Config("icm.int") intLongScala: Long,
                            @Config("icm.int") intLongJava: java.lang.Long,
                            @Config("icm.int") intDoubleScala: Double,
                            @Config("icm.int") intDoubleJava: java.lang.Double,

                            @Config("icm.complex.1") configScala: Configuration,
                            @Config("icm.complex.1") configJava: play.Configuration,

                            @Config("icm.complex.2") boom: String,

                            @Config("icm.nonEmptyString") stringScala: String,
                            @Config("icm.nonEmptyString") stringScala: java.lang.String) extends Controller {

}

Limits

  • No Duration handling due to Typesafe parsing API being private.