2016-03-27 7 views
2

私はこれまでのところ、私はHttp().bindAndHandleに渡すことはできませんアイテムのリストとして動作しないコードの上に明らかに形質を使ってakka-http経路を集めるには?

object SMController { 
    def aggregateRoutes(actorSystem: ActorSystem): List[Route] = { 
    val runtimeMirror = universe.runtimeMirror(getClass.getClassLoader) 
    val reflections = new Reflections("com.example.api") 
    val subclasses = reflections.getSubTypesOf(classOf[Routable]) 
    val routesList = new ListBuffer[Route]() 

    for (i <- subclasses) { 
     val module = runtimeMirror.staticModule(i.getName) 
     val obj = runtimeMirror.reflectModule(module) 
     val someTrait: Routable = obj.instance.asInstanceOf[Routable] 
     routesList += someTrait.getAllRoutes(actorSystem) 
    } 

    routesList.toList 
    } 
} 

を持って、実行時に形質を使用して集約ルートにしようとしています。

List[Routes]をどのように解析してHttp().bindAndHandleを受け入れることができますか、またはRoutableのサブクラスからルートを動的にロードするにはどうすればよいですか?

答えて

3

foldLeft:

routes.reduceLeft(_ ~ _) 

val routes = SMController.aggregateRoutes(system) 
val bindingFuture = Http().bindAndHandle(
     routes.tail.foldLeft(routes.head)((a, b) => a ~ b), "localhost", 8080) 

reduceLeftを次のように私は、ルートをfoldLeftし、すべてのルートを合体するために管理しています

関連する問題