override def load()

in app/AppLoader.scala [14:49]


  override def load(context: Context): Application = {
    new LogbackLoggerConfigurator().configure(context.environment)

    val credentialsProvider = DefaultCredentialsProvider.create()
    val isDev = context.environment.mode == Mode.Dev

    val configAndIdentity = for {
      identity <-
        if (isDev) Success(DevIdentity("amigo"))
        else AppIdentity.whoAmI(defaultAppName = "amigo", credentialsProvider)
      config <- Try(ConfigurationLoader.load(identity) {
        case identity: AwsIdentity => SSMConfigurationLocation.default(identity)
      })
    } yield (config, identity)

    configAndIdentity.fold(
      err => {
        log.error(s"Failed to start application due to $err")
        throw err
      },
      configAndIdentity => {
        val (config, identity) = configAndIdentity
        val newContext = context.copy(initialConfiguration =
          Configuration(config).withFallback(context.initialConfiguration)
        )
        val components = new AppComponents(newContext, identity)
        log.info("Starting the scheduler")
        components.quartzScheduler.start()
        components.applicationLifecycle.addStopHook { () =>
          log.info("Shutting down scheduler")
          Future.successful(components.quartzScheduler.shutdown())
        }
        components.application
      }
    )
  }