@@ -51,191 +51,191 @@ class RouterFunctionBuilder implements RouterFunctions.Builder {
5151 private final List <HandlerFilterFunction <ServerResponse , ServerResponse >> errorHandlers = new ArrayList <>();
5252
5353
54+ @ SuppressWarnings ("unchecked" )
5455 @ Override
55- public RouterFunctions .Builder add (RouterFunction <ServerResponse > routerFunction ) {
56+ public < T extends ServerResponse > RouterFunctions .Builder add (RouterFunction <T > routerFunction ) {
5657 Assert .notNull (routerFunction , "RouterFunction must not be null" );
57- this .routerFunctions .add (routerFunction );
58+ this .routerFunctions .add (( RouterFunction < ServerResponse >) routerFunction );
5859 return this ;
5960 }
6061
61- private RouterFunctions .Builder add (RequestPredicate predicate , HandlerFunction <ServerResponse > handlerFunction ) {
62- this .routerFunctions .add (RouterFunctions .route (predicate , handlerFunction ));
63- return this ;
62+ private <T extends ServerResponse > RouterFunctions .Builder add (RequestPredicate predicate , HandlerFunction <T > handlerFunction ) {
63+ return add (RouterFunctions .route (predicate , handlerFunction ));
6464 }
6565
6666 // GET
6767
6868 @ Override
69- public RouterFunctions .Builder GET (HandlerFunction <ServerResponse > handlerFunction ) {
69+ public < T extends ServerResponse > RouterFunctions .Builder GET (HandlerFunction <T > handlerFunction ) {
7070 return add (RequestPredicates .method (HttpMethod .GET ), handlerFunction );
7171 }
7272
7373 @ Override
74- public RouterFunctions .Builder GET (RequestPredicate predicate , HandlerFunction <ServerResponse > handlerFunction ) {
74+ public < T extends ServerResponse > RouterFunctions .Builder GET (RequestPredicate predicate , HandlerFunction <T > handlerFunction ) {
7575 return add (RequestPredicates .method (HttpMethod .GET ).and (predicate ), handlerFunction );
7676 }
7777
7878 @ Override
79- public RouterFunctions .Builder GET (String pattern , HandlerFunction <ServerResponse > handlerFunction ) {
79+ public < T extends ServerResponse > RouterFunctions .Builder GET (String pattern , HandlerFunction <T > handlerFunction ) {
8080 return add (RequestPredicates .GET (pattern ), handlerFunction );
8181 }
8282
8383 @ Override
84- public RouterFunctions .Builder GET (String pattern , RequestPredicate predicate ,
85- HandlerFunction <ServerResponse > handlerFunction ) {
84+ public < T extends ServerResponse > RouterFunctions .Builder GET (String pattern , RequestPredicate predicate ,
85+ HandlerFunction <T > handlerFunction ) {
8686
8787 return add (RequestPredicates .GET (pattern ).and (predicate ), handlerFunction );
8888 }
8989
9090 // HEAD
9191
9292 @ Override
93- public RouterFunctions .Builder HEAD (HandlerFunction <ServerResponse > handlerFunction ) {
93+ public < T extends ServerResponse > RouterFunctions .Builder HEAD (HandlerFunction <T > handlerFunction ) {
9494 return add (RequestPredicates .method (HttpMethod .HEAD ), handlerFunction );
9595 }
9696
9797 @ Override
98- public RouterFunctions .Builder HEAD (RequestPredicate predicate , HandlerFunction <ServerResponse > handlerFunction ) {
98+ public < T extends ServerResponse > RouterFunctions .Builder HEAD (RequestPredicate predicate , HandlerFunction <T > handlerFunction ) {
9999 return add (RequestPredicates .method (HttpMethod .HEAD ).and (predicate ), handlerFunction );
100100 }
101101
102102 @ Override
103- public RouterFunctions .Builder HEAD (String pattern , HandlerFunction <ServerResponse > handlerFunction ) {
103+ public < T extends ServerResponse > RouterFunctions .Builder HEAD (String pattern , HandlerFunction <T > handlerFunction ) {
104104 return add (RequestPredicates .HEAD (pattern ), handlerFunction );
105105 }
106106
107107 @ Override
108- public RouterFunctions .Builder HEAD (String pattern , RequestPredicate predicate ,
109- HandlerFunction <ServerResponse > handlerFunction ) {
108+ public < T extends ServerResponse > RouterFunctions .Builder HEAD (String pattern , RequestPredicate predicate ,
109+ HandlerFunction <T > handlerFunction ) {
110110
111111 return add (RequestPredicates .HEAD (pattern ).and (predicate ), handlerFunction );
112112 }
113113
114114 // POST
115115
116116 @ Override
117- public RouterFunctions .Builder POST (HandlerFunction <ServerResponse > handlerFunction ) {
117+ public < T extends ServerResponse > RouterFunctions .Builder POST (HandlerFunction <T > handlerFunction ) {
118118 return add (RequestPredicates .method (HttpMethod .POST ), handlerFunction );
119119 }
120120
121121 @ Override
122- public RouterFunctions .Builder POST (RequestPredicate predicate , HandlerFunction <ServerResponse > handlerFunction ) {
122+ public < T extends ServerResponse > RouterFunctions .Builder POST (RequestPredicate predicate , HandlerFunction <T > handlerFunction ) {
123123 return add (RequestPredicates .method (HttpMethod .POST ).and (predicate ), handlerFunction );
124124 }
125125
126126 @ Override
127- public RouterFunctions .Builder POST (String pattern , HandlerFunction <ServerResponse > handlerFunction ) {
127+ public < T extends ServerResponse > RouterFunctions .Builder POST (String pattern , HandlerFunction <T > handlerFunction ) {
128128 return add (RequestPredicates .POST (pattern ), handlerFunction );
129129 }
130130
131131 @ Override
132- public RouterFunctions .Builder POST (String pattern , RequestPredicate predicate ,
133- HandlerFunction <ServerResponse > handlerFunction ) {
132+ public < T extends ServerResponse > RouterFunctions .Builder POST (String pattern , RequestPredicate predicate ,
133+ HandlerFunction <T > handlerFunction ) {
134134
135135 return add (RequestPredicates .POST (pattern ).and (predicate ), handlerFunction );
136136 }
137137
138138 // PUT
139139
140140 @ Override
141- public RouterFunctions .Builder PUT (HandlerFunction <ServerResponse > handlerFunction ) {
141+ public < T extends ServerResponse > RouterFunctions .Builder PUT (HandlerFunction <T > handlerFunction ) {
142142 return add (RequestPredicates .method (HttpMethod .PUT ), handlerFunction );
143143 }
144144
145145 @ Override
146- public RouterFunctions .Builder PUT (RequestPredicate predicate , HandlerFunction <ServerResponse > handlerFunction ) {
146+ public < T extends ServerResponse > RouterFunctions .Builder PUT (RequestPredicate predicate , HandlerFunction <T > handlerFunction ) {
147147 return add (RequestPredicates .method (HttpMethod .PUT ).and (predicate ), handlerFunction );
148148 }
149149
150150 @ Override
151- public RouterFunctions .Builder PUT (String pattern , HandlerFunction <ServerResponse > handlerFunction ) {
151+ public < T extends ServerResponse > RouterFunctions .Builder PUT (String pattern , HandlerFunction <T > handlerFunction ) {
152152 return add (RequestPredicates .PUT (pattern ), handlerFunction );
153153 }
154154
155155 @ Override
156- public RouterFunctions .Builder PUT (String pattern , RequestPredicate predicate ,
157- HandlerFunction <ServerResponse > handlerFunction ) {
156+ public < T extends ServerResponse > RouterFunctions .Builder PUT (String pattern , RequestPredicate predicate ,
157+ HandlerFunction <T > handlerFunction ) {
158158
159159 return add (RequestPredicates .PUT (pattern ).and (predicate ), handlerFunction );
160160 }
161161
162162 // PATCH
163163
164164 @ Override
165- public RouterFunctions .Builder PATCH (HandlerFunction <ServerResponse > handlerFunction ) {
165+ public < T extends ServerResponse > RouterFunctions .Builder PATCH (HandlerFunction <T > handlerFunction ) {
166166 return add (RequestPredicates .method (HttpMethod .PATCH ), handlerFunction );
167167 }
168168
169169 @ Override
170- public RouterFunctions .Builder PATCH (RequestPredicate predicate , HandlerFunction <ServerResponse > handlerFunction ) {
170+ public < T extends ServerResponse > RouterFunctions .Builder PATCH (RequestPredicate predicate , HandlerFunction <T > handlerFunction ) {
171171 return add (RequestPredicates .method (HttpMethod .PATCH ).and (predicate ), handlerFunction );
172172 }
173173
174174 @ Override
175- public RouterFunctions .Builder PATCH (String pattern , HandlerFunction <ServerResponse > handlerFunction ) {
175+ public < T extends ServerResponse > RouterFunctions .Builder PATCH (String pattern , HandlerFunction <T > handlerFunction ) {
176176 return add (RequestPredicates .PATCH (pattern ), handlerFunction );
177177 }
178178
179179 @ Override
180- public RouterFunctions .Builder PATCH (String pattern , RequestPredicate predicate ,
181- HandlerFunction <ServerResponse > handlerFunction ) {
180+ public < T extends ServerResponse > RouterFunctions .Builder PATCH (String pattern , RequestPredicate predicate ,
181+ HandlerFunction <T > handlerFunction ) {
182182
183183 return add (RequestPredicates .PATCH (pattern ).and (predicate ), handlerFunction );
184184 }
185185
186186 // DELETE
187187
188188 @ Override
189- public RouterFunctions .Builder DELETE (HandlerFunction <ServerResponse > handlerFunction ) {
189+ public < T extends ServerResponse > RouterFunctions .Builder DELETE (HandlerFunction <T > handlerFunction ) {
190190 return add (RequestPredicates .method (HttpMethod .DELETE ), handlerFunction );
191191 }
192192
193193 @ Override
194- public RouterFunctions .Builder DELETE (RequestPredicate predicate , HandlerFunction <ServerResponse > handlerFunction ) {
194+ public < T extends ServerResponse > RouterFunctions .Builder DELETE (RequestPredicate predicate , HandlerFunction <T > handlerFunction ) {
195195 return add (RequestPredicates .method (HttpMethod .DELETE ).and (predicate ), handlerFunction );
196196 }
197197
198198 @ Override
199- public RouterFunctions .Builder DELETE (String pattern , HandlerFunction <ServerResponse > handlerFunction ) {
199+ public < T extends ServerResponse > RouterFunctions .Builder DELETE (String pattern , HandlerFunction <T > handlerFunction ) {
200200 return add (RequestPredicates .DELETE (pattern ), handlerFunction );
201201 }
202202
203203 @ Override
204- public RouterFunctions .Builder DELETE (String pattern , RequestPredicate predicate ,
205- HandlerFunction <ServerResponse > handlerFunction ) {
204+ public < T extends ServerResponse > RouterFunctions .Builder DELETE (String pattern , RequestPredicate predicate ,
205+ HandlerFunction <T > handlerFunction ) {
206206
207207 return add (RequestPredicates .DELETE (pattern ).and (predicate ), handlerFunction );
208208 }
209209
210210 // OPTIONS
211211
212212 @ Override
213- public RouterFunctions .Builder OPTIONS (HandlerFunction <ServerResponse > handlerFunction ) {
213+ public < T extends ServerResponse > RouterFunctions .Builder OPTIONS (HandlerFunction <T > handlerFunction ) {
214214 return add (RequestPredicates .method (HttpMethod .OPTIONS ), handlerFunction );
215215 }
216216
217217 @ Override
218- public RouterFunctions .Builder OPTIONS (RequestPredicate predicate , HandlerFunction <ServerResponse > handlerFunction ) {
218+ public < T extends ServerResponse > RouterFunctions .Builder OPTIONS (RequestPredicate predicate , HandlerFunction <T > handlerFunction ) {
219219 return add (RequestPredicates .method (HttpMethod .OPTIONS ).and (predicate ), handlerFunction );
220220 }
221221
222222 @ Override
223- public RouterFunctions .Builder OPTIONS (String pattern , HandlerFunction <ServerResponse > handlerFunction ) {
223+ public < T extends ServerResponse > RouterFunctions .Builder OPTIONS (String pattern , HandlerFunction <T > handlerFunction ) {
224224 return add (RequestPredicates .OPTIONS (pattern ), handlerFunction );
225225 }
226226
227227 @ Override
228- public RouterFunctions .Builder OPTIONS (String pattern , RequestPredicate predicate ,
229- HandlerFunction <ServerResponse > handlerFunction ) {
228+ public < T extends ServerResponse > RouterFunctions .Builder OPTIONS (String pattern , RequestPredicate predicate ,
229+ HandlerFunction <T > handlerFunction ) {
230230
231231 return add (RequestPredicates .OPTIONS (pattern ).and (predicate ), handlerFunction );
232232 }
233233
234234 // other
235235
236236 @ Override
237- public RouterFunctions .Builder route (RequestPredicate predicate ,
238- HandlerFunction <ServerResponse > handlerFunction ) {
237+ public < T extends ServerResponse > RouterFunctions .Builder route (RequestPredicate predicate ,
238+ HandlerFunction <T > handlerFunction ) {
239239 return add (RouterFunctions .route (predicate , handlerFunction ));
240240 }
241241
@@ -287,13 +287,14 @@ public RouterFunctions.Builder nest(RequestPredicate predicate,
287287 return this ;
288288 }
289289
290+ @ SuppressWarnings ("unchecked" )
290291 @ Override
291- public RouterFunctions .Builder nest (RequestPredicate predicate ,
292- Supplier <RouterFunction <ServerResponse >> routerFunctionSupplier ) {
292+ public < T extends ServerResponse > RouterFunctions .Builder nest (RequestPredicate predicate ,
293+ Supplier <RouterFunction <T >> routerFunctionSupplier ) {
293294
294295 Assert .notNull (routerFunctionSupplier , "RouterFunction Supplier must not be null" );
295296
296- RouterFunction <ServerResponse > nestedRoute = routerFunctionSupplier .get ();
297+ RouterFunction <ServerResponse > nestedRoute = ( RouterFunction < ServerResponse >) routerFunctionSupplier .get ();
297298 this .routerFunctions .add (RouterFunctions .nest (predicate , nestedRoute ));
298299 return this ;
299300 }
@@ -306,17 +307,20 @@ public RouterFunctions.Builder path(String pattern,
306307 }
307308
308309 @ Override
309- public RouterFunctions .Builder path (String pattern ,
310- Supplier <RouterFunction <ServerResponse >> routerFunctionSupplier ) {
310+ public < T extends ServerResponse > RouterFunctions .Builder path (String pattern ,
311+ Supplier <RouterFunction <T >> routerFunctionSupplier ) {
311312
312313 return nest (RequestPredicates .path (pattern ), routerFunctionSupplier );
313314 }
314315
316+ @ SuppressWarnings ("unchecked" )
315317 @ Override
316- public RouterFunctions .Builder filter (HandlerFilterFunction <ServerResponse , ServerResponse > filterFunction ) {
318+ public <T extends ServerResponse , R extends ServerResponse > RouterFunctions .Builder filter (
319+ HandlerFilterFunction <T , R > filterFunction ) {
320+
317321 Assert .notNull (filterFunction , "HandlerFilterFunction must not be null" );
318322
319- this .filterFunctions .add (filterFunction );
323+ this .filterFunctions .add (( HandlerFilterFunction < ServerResponse , ServerResponse >) filterFunction );
320324 return this ;
321325 }
322326
@@ -326,18 +330,19 @@ public RouterFunctions.Builder before(Function<ServerRequest, ServerRequest> req
326330 return filter ((request , next ) -> next .handle (requestProcessor .apply (request )));
327331 }
328332
333+ @ SuppressWarnings ("unchecked" )
329334 @ Override
330- public RouterFunctions .Builder after (
331- BiFunction <ServerRequest , ServerResponse , ServerResponse > responseProcessor ) {
335+ public < T extends ServerResponse , R extends ServerResponse > RouterFunctions .Builder after (
336+ BiFunction <ServerRequest , T , R > responseProcessor ) {
332337
333338 Assert .notNull (responseProcessor , "ResponseProcessor must not be null" );
334339 return filter ((request , next ) -> next .handle (request )
335- .map (serverResponse -> responseProcessor .apply (request , serverResponse )));
340+ .map (serverResponse -> responseProcessor .apply (request , ( T ) serverResponse )));
336341 }
337342
338343 @ Override
339- public RouterFunctions .Builder onError (Predicate <? super Throwable > predicate ,
340- BiFunction <? super Throwable , ServerRequest , Mono <ServerResponse >> responseProvider ) {
344+ public < T extends ServerResponse > RouterFunctions .Builder onError (Predicate <? super Throwable > predicate ,
345+ BiFunction <? super Throwable , ServerRequest , Mono <T >> responseProvider ) {
341346
342347 Assert .notNull (predicate , "Predicate must not be null" );
343348 Assert .notNull (responseProvider , "ResponseProvider must not be null" );
0 commit comments