Skip to content
This repository was archived by the owner on Sep 14, 2022. It is now read-only.

Commit e2082f2

Browse files
author
François LAROCHE
committed
Allow sub-routes
1 parent 5111816 commit e2082f2

1 file changed

Lines changed: 13 additions & 6 deletions

File tree

play-2.5/swagger-play2/app/play/modules/swagger/SwaggerPlugin.scala

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,17 @@ package play.modules.swagger
1818

1919
import java.io.File
2020
import javax.inject.Inject
21+
2122
import io.swagger.config.{FilterFactory, ScannerFactory}
22-
import play.modules.swagger.util.SwaggerContext
2323
import io.swagger.core.filter.SwaggerSpecFilter
2424
import play.api.inject.ApplicationLifecycle
25-
import play.api.{Logger, Application}
2625
import play.api.routing.Router
27-
import scala.concurrent.Future
28-
import scala.collection.JavaConversions._
29-
import play.routes.compiler.{Route => PlayRoute, Include => PlayInclude, RoutesFileParser, StaticPart}
26+
import play.api.{Application, Logger}
27+
import play.modules.swagger.util.SwaggerContext
28+
import play.routes.compiler.{RoutesFileParser, StaticPart, Include => PlayInclude, Route => PlayRoute}
3029

30+
import scala.collection.JavaConversions._
31+
import scala.concurrent.Future
3132
import scala.io.Source
3233

3334
trait SwaggerPlugin
@@ -124,7 +125,13 @@ class SwaggerPluginImpl @Inject()(lifecycle: ApplicationLifecycle, router: Route
124125
val routes = parsedRoutes.right.get.collect {
125126
case (route: PlayRoute) => {
126127
logger.debug(s"Adding route '$route'")
127-
Seq(route.copy(path = route.path.copy(parts = StaticPart(prefix) +: route.path.parts)))
128+
(prefix, route.path.parts) match {
129+
case ("", _) => Seq(route)
130+
case (_, Seq()) => Seq(route.copy(path = route.path.copy(parts = StaticPart(prefix) +: route.path.parts)))
131+
case (_, Seq(StaticPart(""))) => Seq(route.copy(path = route.path.copy(parts = StaticPart(prefix) +: route.path.parts)))
132+
case (_, Seq(StaticPart("/"))) => Seq(route.copy(path = route.path.copy(parts = StaticPart(prefix) +: route.path.parts)))
133+
case (_, _) => Seq(route.copy(path = route.path.copy(parts = StaticPart(prefix) +: StaticPart("/") +: route.path.parts)))
134+
}
128135
}
129136
case (include: PlayInclude) => {
130137
logger.debug(s"Processing route include $include")

0 commit comments

Comments
 (0)