All Downloads are FREE. Search and download functionalities are using the official Maven repository.

play.modules.swagger.ApiListingCache.scala Maven / Gradle / Ivy

package play.modules.swagger

import io.swagger.config._
import io.swagger.models.Swagger
import javax.inject.Inject
import play.api.Logger
import scala.collection.mutable

class ApiListingCache @Inject()(scanner: Scanner, reader: PlayReader) {
  private val cache: mutable.Map[String, Swagger] = mutable.Map.empty

  def listing(host: String): Swagger = {
    cache.getOrElseUpdate(host, {
      Logger("swagger").debug("Loading API metadata")

      val classes = scanner.classes()
      val swagger = reader.read(classes)
      val result = scanner match {
        case config: SwaggerConfig =>
          config.configure(swagger)
        case _ =>
          swagger
      }
      result.setHost(host)
      result
    })
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy