def load()

in newswires/app/AppLoader.scala [14:54]


  def load(context: Context): Application = {
    LoggerConfigurator(context.environment.classLoader).foreach {
      _.configure(context.environment, context.initialConfiguration, Map.empty)
    }

    // Ensure JVM uses UTC to prevent unexpected timezone conversions in database queries
    System.setProperty("user.timezone", "UTC")
    TimeZone.setDefault(TimeZone.getTimeZone("UTC"))

    val discoveredIdentity = Identity.discover(context)

    val loadedConfig = for {
      identity <- discoveredIdentity
      config <- Try(ConfigurationLoader.load(identity) {
        case identity: AwsIdentity =>
          SSMConfigurationLocation.default(identity)
      })
      stage <- discoveredIdentity.map({
        case id: AwsIdentity => id.stage
        case _               => "dev"
      })
      configWithStage = Configuration
        .from(Map("stage" -> stage))
        .withFallback(Configuration(config))
    } yield configWithStage

    loadedConfig.fold(
      err => {
        logger.error(s"Failed to start application due to $err", err)
        throw err
      },
      config => {
        val configuration = config
          .withFallback(context.initialConfiguration)

        val newContext = context.copy(initialConfiguration = configuration)

        new AppComponents(newContext).application
      }
    )
  }