diff options
author | Jakob Odersky <jakob@driver.xyz> | 2018-08-22 12:51:36 -0700 |
---|---|---|
committer | Jakob Odersky <jakob@driver.xyz> | 2018-09-12 14:17:39 -0700 |
commit | 5ec270aa98b806f32338fa25357abdf45dd0625b (patch) | |
tree | f1423f8add00cc2f899d2f8259b9ab33ba3c914b /src/main/scala/xyz/driver/core/rest/Swagger.scala | |
parent | 3eb6a9e96bd8bf111490f390ea94a1c6d7677eff (diff) | |
download | driver-core-5ec270aa98b806f32338fa25357abdf45dd0625b.tar.gz driver-core-5ec270aa98b806f32338fa25357abdf45dd0625b.tar.bz2 driver-core-5ec270aa98b806f32338fa25357abdf45dd0625b.zip |
Trait-based initialization and other utilities
Adds the concept of a 'platform', a centralized place in which
environment-specific information will be managed, and provides common
initialization logic for most "standard" apps.
As part of the common initialization, other parts of core have also
been reworked:
- HTTP-related unmarshallers and path matchers have been factored out
from core.json to a new core.rest.directives package (core.json
extends those unmarshallers and matchers for backwards
compatibility)
- CORS handling has also been moved to a dedicated utility trait
- Some custom headers have been moved from raw headers to typed ones
in core.rest.headers
- The concept of a "reporter" has been introduced. A reporter is a
context-aware combination of tracing and logging. It is intended to
issue diagnostic messages that can be traced across service
boundaries.
Closes #192
Closes #195
Diffstat (limited to 'src/main/scala/xyz/driver/core/rest/Swagger.scala')
-rw-r--r-- | src/main/scala/xyz/driver/core/rest/Swagger.scala | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/src/main/scala/xyz/driver/core/rest/Swagger.scala b/src/main/scala/xyz/driver/core/rest/Swagger.scala index a3d942c..b598b33 100644 --- a/src/main/scala/xyz/driver/core/rest/Swagger.scala +++ b/src/main/scala/xyz/driver/core/rest/Swagger.scala @@ -13,24 +13,20 @@ import com.typesafe.scalalogging.Logger import io.swagger.models.Scheme import io.swagger.util.Json -import scala.reflect.runtime.universe -import scala.reflect.runtime.universe.Type import scala.util.control.NonFatal class Swagger( override val host: String, - override val schemes: List[Scheme], + accessSchemes: List[String], version: String, - val apiTypes: Seq[Type], + override val apiClasses: Set[Class[_]], val config: Config, val logger: Logger) extends SwaggerHttpService { - lazy val mirror = universe.runtimeMirror(getClass.getClassLoader) - - override val apiClasses = apiTypes.map { tpe => - mirror.runtimeClass(tpe.typeSymbol.asClass) - }.toSet + override val schemes = accessSchemes.map { s => + Scheme.forValue(s) + } // Note that the reason for overriding this is a subtle chain of causality: // @@ -52,15 +48,19 @@ class Swagger( try { val swagger: JSwagger = reader.read(apiClasses.asJava) - // Removing trailing spaces - swagger.setPaths( + val paths = if (swagger.getPaths == null) { + Map.empty + } else { swagger.getPaths.asScala - .map { - case (key, path) => - key.trim -> path - } - .toMap - .asJava) + } + + // Removing trailing spaces + val fixedPaths = paths.map { + case (key, path) => + key.trim -> path + } + + swagger.setPaths(fixedPaths.asJava) Json.pretty().writeValueAsString(swagger) } catch { |