Mount filters with path

This commit is contained in:
Naoki Takezoe
2017-11-17 18:23:41 +09:00
parent 30a1968793
commit 3745243078
3 changed files with 24 additions and 21 deletions

View File

@@ -35,19 +35,19 @@ class ScalatraBootstrap extends LifeCycle with SystemSettingsService {
context.mount(new FileUploadController, "/upload")
val filter = new CompositeScalatraFilter()
filter.mount(new IndexController)
filter.mount(new ApiController)
filter.mount(new SystemSettingsController)
filter.mount(new DashboardController)
filter.mount(new AccountController)
filter.mount(new RepositoryViewerController)
filter.mount(new WikiController)
filter.mount(new LabelsController)
filter.mount(new PrioritiesController)
filter.mount(new MilestonesController)
filter.mount(new IssuesController)
filter.mount(new PullRequestsController)
filter.mount(new RepositorySettingsController)
filter.mount(new IndexController, "/")
filter.mount(new ApiController, "/api/v3")
filter.mount(new SystemSettingsController, "/admin")
filter.mount(new DashboardController, "/*")
filter.mount(new AccountController, "/*")
filter.mount(new RepositoryViewerController, "/*")
filter.mount(new WikiController, "/*")
filter.mount(new LabelsController, "/*")
filter.mount(new PrioritiesController, "/*")
filter.mount(new MilestonesController, "/*")
filter.mount(new IssuesController, "/*")
filter.mount(new PullRequestsController, "/*")
filter.mount(new RepositorySettingsController, "/*")
context.addFilter("compositeScalatraFilter", filter)
context.getFilterRegistration("compositeScalatraFilter").addMappingForUrlPatterns(EnumSet.allOf(classOf[DispatcherType]), true, "/*")

View File

@@ -1,4 +1,4 @@
package gitbucket.core.controller
package gitbucket.core.servlet
import javax.servlet._
@@ -8,22 +8,26 @@ import scala.collection.mutable.ListBuffer
class CompositeScalatraFilter extends Filter {
private val filters = new ListBuffer[ScalatraFilter]()
private val filters = new ListBuffer[(ScalatraFilter, String)]()
def mount(filter: ScalatraFilter): Unit = {
filters += filter
def mount(filter: ScalatraFilter, path: String): Unit = {
filters += ((filter, path))
}
override def init(filterConfig: FilterConfig): Unit = {
filters.foreach(_.init(filterConfig))
filters.foreach { case (filter, _) =>
filter.init(filterConfig)
}
}
override def destroy(): Unit = {
filters.foreach(_.destroy())
filters.foreach { case (filter, _) =>
filter.destroy()
}
}
override def doFilter(request: ServletRequest, response: ServletResponse, chain: FilterChain): Unit = {
filters.foreach { filter =>
filters.foreach { case (filter, path) =>
val mockChain = new MockFilterChain()
filter.doFilter(request, response, mockChain)
if(mockChain.continue == false){

View File

@@ -3,7 +3,6 @@ package gitbucket.core.servlet
import javax.servlet._
import javax.servlet.http.HttpServletRequest
import gitbucket.core.controller.MockFilterChain
import gitbucket.core.plugin.PluginRegistry
class PluginControllerFilter extends Filter {