aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/rest/Swagger.scala
diff options
context:
space:
mode:
authorJakob Odersky <jakob@driver.xyz>2018-08-22 12:51:36 -0700
committerJakob Odersky <jakob@driver.xyz>2018-09-12 14:17:39 -0700
commit5ec270aa98b806f32338fa25357abdf45dd0625b (patch)
treef1423f8add00cc2f899d2f8259b9ab33ba3c914b /src/main/scala/xyz/driver/core/rest/Swagger.scala
parent3eb6a9e96bd8bf111490f390ea94a1c6d7677eff (diff)
downloaddriver-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.scala34
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 {