@ -67,7 +67,8 @@ public abstract class RouterFunctions {
@@ -67,7 +67,8 @@ public abstract class RouterFunctions {
public static final String URI_TEMPLATE_VARIABLES_ATTRIBUTE =
RouterFunctions . class . getName ( ) + ".uriTemplateVariables" ;
private static final HandlerFunction < ServerResponse > NOT_FOUND_HANDLER = request - > ServerResponse . notFound ( ) . build ( ) ;
private static final HandlerFunction < ServerResponse > NOT_FOUND_HANDLER =
request - > ServerResponse . notFound ( ) . build ( ) ;
/ * *
@ -103,9 +104,8 @@ public abstract class RouterFunctions {
@@ -103,9 +104,8 @@ public abstract class RouterFunctions {
* RouterFunction & lt ; ServerResponse & gt ; userRoutes =
* RouterFunctions . route ( RequestPredicates . method ( HttpMethod . GET ) , this : : listUsers )
* . andRoute ( RequestPredicates . method ( HttpMethod . POST ) , this : : createUser ) ;
*
* RouterFunction & lt ; ServerResponse & gt ; nestedRoute =
* RouterFunctions . nest ( RequestPredicates . path ( "/user" ) , userRoutes ) ;
* RouterFunctions . nest ( RequestPredicates . path ( "/user" ) , userRoutes ) ;
* < / pre >
* @param predicate the predicate to test
* @param routerFunction the nested router function to delegate to if the predicate applies
@ -125,7 +125,7 @@ public abstract class RouterFunctions {
@@ -125,7 +125,7 @@ public abstract class RouterFunctions {
* For instance
* < pre class = "code" >
* Resource location = new FileSystemResource ( "public-resources/" ) ;
* Routing Function & lt ; ServerResponse & gt ; resources = RouterFunctions . resources ( "/resources/**" , location ) ;
* Router Function & lt ; ServerResponse & gt ; resources = RouterFunctions . resources ( "/resources/**" , location ) ;
* < / pre >
* @param pattern the pattern to match
* @param location the location directory relative to which resources should be resolved
@ -225,12 +225,13 @@ public abstract class RouterFunctions {
@@ -225,12 +225,13 @@ public abstract class RouterFunctions {
} ;
}
private static < T > Mono < T > wrapException ( Supplier < Mono < T > > supplier ) {
try {
return supplier . get ( ) ;
}
catch ( Throwable t ) {
return Mono . error ( t ) ;
catch ( Throwable ex ) {
return Mono . error ( ex ) ;
}
}
@ -303,6 +304,7 @@ public abstract class RouterFunctions {
@@ -303,6 +304,7 @@ public abstract class RouterFunctions {
}
}
static final class SameComposedRouterFunction < T extends ServerResponse > extends AbstractRouterFunction < T > {
private final RouterFunction < T > first ;
@ -350,9 +352,9 @@ public abstract class RouterFunctions {
@@ -350,9 +352,9 @@ public abstract class RouterFunctions {
this . first . accept ( visitor ) ;
this . second . accept ( visitor ) ;
}
}
static final class FilteredRouterFunction < T extends ServerResponse , S extends ServerResponse >
implements RouterFunction < S > {
@ -383,8 +385,8 @@ public abstract class RouterFunctions {
@@ -383,8 +385,8 @@ public abstract class RouterFunctions {
}
}
private static final class DefaultRouterFunction < T extends ServerResponse >
extends AbstractRouterFunction < T > {
private static final class DefaultRouterFunction < T extends ServerResponse > extends AbstractRouterFunction < T > {
private final RequestPredicate predicate ;
@ -414,11 +416,10 @@ public abstract class RouterFunctions {
@@ -414,11 +416,10 @@ public abstract class RouterFunctions {
public void accept ( Visitor visitor ) {
visitor . route ( this . predicate , this . handlerFunction ) ;
}
}
private static final class DefaultNestedRouterFunction < T extends ServerResponse >
extends AbstractRouterFunction < T > {
private static final class DefaultNestedRouterFunction < T extends ServerResponse > extends AbstractRouterFunction < T > {
private final RequestPredicate predicate ;
@ -446,15 +447,15 @@ public abstract class RouterFunctions {
@@ -446,15 +447,15 @@ public abstract class RouterFunctions {
mergeTemplateVariables ( serverRequest , nestedRequest . pathVariables ( ) ) ;
} ) ;
}
)
. orElseGet ( Mono : : empty ) ;
) . orElseGet ( Mono : : empty ) ;
}
@SuppressWarnings ( "unchecked" )
private void mergeTemplateVariables ( ServerRequest request , Map < String , String > variables ) {
if ( ! variables . isEmpty ( ) ) {
Map < String , Object > attributes = request . attributes ( ) ;
Map < String , String > oldVariables = ( Map < String , String > ) request . attribute ( RouterFunctions . URI_TEMPLATE_VARIABLES_ATTRIBUTE )
Map < String , String > oldVariables =
( Map < String , String > ) request . attribute ( RouterFunctions . URI_TEMPLATE_VARIABLES_ATTRIBUTE )
. orElseGet ( LinkedHashMap : : new ) ;
Map < String , String > mergedVariables = new LinkedHashMap < > ( oldVariables ) ;
mergedVariables . putAll ( variables ) ;
@ -469,9 +470,9 @@ public abstract class RouterFunctions {
@@ -469,9 +470,9 @@ public abstract class RouterFunctions {
this . routerFunction . accept ( visitor ) ;
visitor . endNested ( this . predicate ) ;
}
}
private static class ResourcesRouterFunction extends AbstractRouterFunction < ServerResponse > {
private final Function < ServerRequest , Mono < Resource > > lookupFunction ;
@ -492,6 +493,7 @@ public abstract class RouterFunctions {
@@ -492,6 +493,7 @@ public abstract class RouterFunctions {
}
}
private static class HandlerStrategiesResponseContext implements ServerResponse . Context {
private final HandlerStrategies strategies ;