mirror of
https://github.com/gitbucket/gitbucket.git
synced 2026-05-06 23:47:07 +02:00
Refactoring
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package gitbucket.core.servlet
|
||||
|
||||
import javax.servlet._
|
||||
import javax.servlet.http.HttpServletRequest
|
||||
|
||||
import org.scalatra.ScalatraFilter
|
||||
|
||||
@@ -27,20 +28,27 @@ class CompositeScalatraFilter extends Filter {
|
||||
}
|
||||
|
||||
override def doFilter(request: ServletRequest, response: ServletResponse, chain: FilterChain): Unit = {
|
||||
filters.foreach { case (filter, path) =>
|
||||
val mockChain = new MockFilterChain()
|
||||
filter.doFilter(request, response, mockChain)
|
||||
if(mockChain.continue == false){
|
||||
return ()
|
||||
val requestUri = request.asInstanceOf[HttpServletRequest].getRequestURI
|
||||
|
||||
filters
|
||||
.filter { case (_, path) =>
|
||||
val start = path.replaceFirst("/\\*$", "/")
|
||||
(requestUri + "/").startsWith(start)
|
||||
}
|
||||
}
|
||||
.foreach { case (filter, _) =>
|
||||
val mockChain = new MockFilterChain()
|
||||
filter.doFilter(request, response, mockChain)
|
||||
if(mockChain.continue == false){
|
||||
return ()
|
||||
}
|
||||
}
|
||||
|
||||
chain.doFilter(request, response)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class MockFilterChain extends FilterChain {
|
||||
|
||||
var continue: Boolean = false
|
||||
|
||||
override def doFilter(request: ServletRequest, response: ServletResponse): Unit = {
|
||||
@@ -48,3 +56,8 @@ class MockFilterChain extends FilterChain {
|
||||
}
|
||||
}
|
||||
|
||||
class FilterChainFilter(chain: FilterChain) extends Filter {
|
||||
override def init(filterConfig: FilterConfig): Unit = ()
|
||||
override def destroy(): Unit = ()
|
||||
override def doFilter(request: ServletRequest, response: ServletResponse, mockChain: FilterChain) = chain.doFilter(request, response)
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package gitbucket.core.servlet
|
||||
import javax.servlet._
|
||||
import javax.servlet.http.HttpServletRequest
|
||||
|
||||
import gitbucket.core.controller.ControllerBase
|
||||
import gitbucket.core.plugin.PluginRegistry
|
||||
|
||||
class PluginControllerFilter extends Filter {
|
||||
@@ -20,22 +21,25 @@ class PluginControllerFilter extends Filter {
|
||||
}
|
||||
|
||||
override def doFilter(request: ServletRequest, response: ServletResponse, chain: FilterChain): Unit = {
|
||||
val controllers = PluginRegistry().getControllers().filter { case (_, path) =>
|
||||
val requestUri = request.asInstanceOf[HttpServletRequest].getRequestURI
|
||||
val start = path.replaceFirst("/\\*$", "/")
|
||||
(requestUri + "/").startsWith(start)
|
||||
}
|
||||
val requestUri = request.asInstanceOf[HttpServletRequest].getRequestURI
|
||||
|
||||
controllers.foreach { case (controller, _) =>
|
||||
if(controller.config == null){
|
||||
controller.init(filterConfig)
|
||||
PluginRegistry().getControllers()
|
||||
.filter { case (_, path) =>
|
||||
val start = path.replaceFirst("/\\*$", "/")
|
||||
(requestUri + "/").startsWith(start)
|
||||
}
|
||||
val mockChain = new MockFilterChain()
|
||||
controller.doFilter(request, response, mockChain)
|
||||
if(mockChain.continue == false){
|
||||
return ()
|
||||
.foreach { case (controller, _) =>
|
||||
controller match {
|
||||
case x: ControllerBase if(x.config == null) => x.init(filterConfig)
|
||||
case _ => ()
|
||||
}
|
||||
val mockChain = new MockFilterChain()
|
||||
controller.doFilter(request, response, mockChain)
|
||||
|
||||
if(mockChain.continue == false){
|
||||
return ()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
chain.doFilter(request, response)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user