Skip to content

Commit

Permalink
Route に関する記述を Controller に移動
Browse files Browse the repository at this point in the history
  • Loading branch information
rea9r committed Jan 7, 2019
1 parent f3bd4a7 commit 1e048fa
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 17 deletions.
38 changes: 22 additions & 16 deletions src/main/kotlin/com/amtkxa/kotlinsparkrestapi/Server.kt
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
package com.amtkxa.kotlinsparkrestapi

import com.amtkxa.kotlinsparkrestapi.common.JsonTransformer
import com.amtkxa.kotlinsparkrestapi.user.UserController
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.kotlin.registerKotlinModule
import spark.Spark.*
import com.amtkxa.kotlinsparkrestapi.annotation.SparkController
import org.reflections.Reflections
import org.reflections.scanners.MethodAnnotationsScanner
import org.reflections.scanners.SubTypesScanner
import org.reflections.scanners.TypeAnnotationsScanner
import org.slf4j.LoggerFactory
import spark.Spark.port
import spark.servlet.SparkApplication

class Server : SparkApplication {
private val jsonTransformer = JsonTransformer(ObjectMapper().registerKotlinModule())
private val userController = UserController()
val logger = LoggerFactory.getLogger(Server::class.java)

override fun init() = Unit

constructor(args: Array<String>) {
initServer()
initRoutes()
initControllers()
}

override fun init() = Unit

/**
* Initialize the configuration for embedded Jetty server.
*/
Expand All @@ -26,13 +27,18 @@ class Server : SparkApplication {
}

/**
* Initialize the route of the Spark application.
* Initialize controllers.
*
* @apiNote The Route setting is described in the class given the {@link SparkController) annotation.
*/
private fun initRoutes() {
redirect.any("/", "/users")

path("/users") {
get("", userController.index(), jsonTransformer)
private fun initControllers() {
val reflections = Reflections(
this.javaClass.`package`.name, MethodAnnotationsScanner(), TypeAnnotationsScanner(), SubTypesScanner()
)
val controllers = reflections.getTypesAnnotatedWith(SparkController::class.java)
controllers.forEach {
logger.info("Instantiating controller: " + it.name)
it.newInstance()
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.amtkxa.kotlinsparkrestapi.annotation

@Retention(AnnotationRetention.RUNTIME)
@Target(AnnotationTarget.CLASS)
annotation class SparkController
Original file line number Diff line number Diff line change
@@ -1,11 +1,24 @@
package com.amtkxa.kotlinsparkrestapi.user

import com.amtkxa.kotlinsparkrestapi.annotation.SparkController
import com.amtkxa.kotlinsparkrestapi.common.JsonTransformer
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.kotlin.registerKotlinModule
import spark.Route
import spark.Spark.get
import spark.Spark.path


@SparkController
class UserController {
private val jsonTransformer = JsonTransformer(ObjectMapper().registerKotlinModule())
private val userService = UserService()

init {
path("/users") {
get("", index(), jsonTransformer)
}
}

fun index(): Route = Route { request, response ->
userService.findAll()
}
Expand Down

0 comments on commit 1e048fa

Please sign in to comment.