File tree Expand file tree Collapse file tree 4 files changed +45
-4
lines changed
main/kotlin/org/springframework/web/reactive/function/server
test/kotlin/org/springframework/web/reactive/function/server
main/kotlin/org/springframework/web/servlet/function
test/kotlin/org/springframework/web/servlet/function Expand file tree Collapse file tree 4 files changed +45
-4
lines changed Original file line number Diff line number Diff line change @@ -531,8 +531,8 @@ class CoRouterFunctionDsl internal constructor (private val init: (CoRouterFunct
531
531
fun filter (filterFunction : suspend (ServerRequest , suspend (ServerRequest ) -> ServerResponse ) -> ServerResponse ) {
532
532
builder.filter { serverRequest, handlerFunction ->
533
533
mono(Dispatchers .Unconfined ) {
534
- filterFunction(serverRequest) {
535
- handlerFunction.handle(serverRequest ).awaitSingle()
534
+ filterFunction(serverRequest) { handlerRequest ->
535
+ handlerFunction.handle(handlerRequest ).awaitSingle()
536
536
}
537
537
}
538
538
}
Original file line number Diff line number Diff line change @@ -152,6 +152,16 @@ class CoRouterFunctionDslTests {
152
152
}
153
153
}
154
154
155
+ @Test
156
+ fun filtering () {
157
+ val mockRequest = get(" https://example.com/filter" ).build()
158
+ val request = DefaultServerRequest (MockServerWebExchange .from(mockRequest), emptyList())
159
+ StepVerifier .create(sampleRouter().route(request).flatMap { it.handle(request) })
160
+ .expectNextMatches { response ->
161
+ response.headers().getFirst(" foo" ) == " bar"
162
+ }
163
+ .verifyComplete()
164
+ }
155
165
156
166
private fun sampleRouter () = coRouter {
157
167
(GET (" /foo/" ) or GET (" /foos/" )) { req -> handle(req) }
@@ -186,6 +196,18 @@ class CoRouterFunctionDslTests {
186
196
path(" /baz" , ::handle)
187
197
GET (" /rendering" ) { RenderingResponse .create(" index" ).buildAndAwait() }
188
198
add(otherRouter)
199
+ add(filterRouter)
200
+ }
201
+
202
+ private val filterRouter = coRouter {
203
+ " /filter" { request ->
204
+ ok().header(" foo" , request.headers().firstHeader(" foo" )).buildAndAwait()
205
+ }
206
+
207
+ filter { request, next ->
208
+ val newRequest = ServerRequest .from(request).apply { header(" foo" , " bar" ) }.build()
209
+ next(newRequest)
210
+ }
189
211
}
190
212
191
213
private val otherRouter = router {
Original file line number Diff line number Diff line change @@ -649,8 +649,8 @@ class RouterFunctionDsl internal constructor (private val init: (RouterFunctionD
649
649
*/
650
650
fun filter (filterFunction : (ServerRequest , (ServerRequest ) -> ServerResponse ) -> ServerResponse ) {
651
651
builder.filter { request, next ->
652
- filterFunction(request) {
653
- next.handle(request )
652
+ filterFunction(request) { handlerRequest ->
653
+ next.handle(handlerRequest )
654
654
}
655
655
}
656
656
}
Original file line number Diff line number Diff line change @@ -127,6 +127,13 @@ class RouterFunctionDslTests {
127
127
}
128
128
}
129
129
130
+ @Test
131
+ fun filtering () {
132
+ val servletRequest = PathPatternsTestUtils .initRequest(" GET" , " /filter" , true )
133
+ val request = DefaultServerRequest (servletRequest, emptyList())
134
+ assertThat(sampleRouter().route(request).get().handle(request).headers().getFirst(" foo" )).isEqualTo(" bar" )
135
+ }
136
+
130
137
private fun sampleRouter () = router {
131
138
(GET (" /foo/" ) or GET (" /foos/" )) { req -> handle(req) }
132
139
" /api" .nest {
@@ -160,6 +167,18 @@ class RouterFunctionDslTests {
160
167
path(" /baz" , ::handle)
161
168
GET (" /rendering" ) { RenderingResponse .create(" index" ).build() }
162
169
add(otherRouter)
170
+ add(filterRouter)
171
+ }
172
+
173
+ private val filterRouter = router {
174
+ " /filter" { request ->
175
+ ok().header(" foo" , request.headers().firstHeader(" foo" )).build()
176
+ }
177
+
178
+ filter { request, next ->
179
+ val newRequest = ServerRequest .from(request).apply { header(" foo" , " bar" ) }.build()
180
+ next(newRequest)
181
+ }
163
182
}
164
183
165
184
private val otherRouter = router {
You can’t perform that action at this time.
0 commit comments