1212import java .util .LinkedHashMap ;
1313import java .util .LinkedList ;
1414import java .util .List ;
15+ import java .util .Locale ;
1516import java .util .Map ;
1617import java .util .Map .Entry ;
1718import java .util .NoSuchElementException ;
@@ -56,6 +57,8 @@ public class RouteHandler {
5657
5758 private Charset charset ;
5859
60+ private Locale locale ;
61+
5962 private Injector rootInjector ;
6063
6164 private Set <Request .Module > modules ;
@@ -67,12 +70,14 @@ public RouteHandler(final Injector injector,
6770 final BodyConverterSelector selector ,
6871 final Set <Request .Module > modules ,
6972 final Set <Route .Definition > routes ,
70- final Charset defaultCharset ) {
73+ final Charset defaultCharset ,
74+ final Locale defaultLocale ) {
7175 this .rootInjector = requireNonNull (injector , "An injector is required." );
7276 this .selector = requireNonNull (selector , "A message converter selector is required." );
7377 this .modules = requireNonNull (modules , "Request modules are required." );
7478 this .routeDefs = requireNonNull (routes , "The routes are required." );
7579 this .charset = requireNonNull (defaultCharset , "A defaultCharset is required." );
80+ this .locale = requireNonNull (defaultLocale , "A defaultLocale is required." );
7681 this .typeProvider = injector .getInstance (MediaTypeProvider .class );
7782 }
7883
@@ -109,8 +114,11 @@ public void handle(final HttpServletRequest request, final HttpServletResponse r
109114 .map (Charset ::forName )
110115 .orElse (this .charset );
111116
117+ Locale locale = Optional .ofNullable (request .getHeader ("Accept-Language" ))
118+ .map (l -> request .getLocale ()).orElse (this .locale );
119+
112120 BiFunction <Injector , Route , Request > reqFactory = (injector , route ) ->
113- new RequestImpl (request , injector , route , selector , charset , type , accept );
121+ new RequestImpl (request , injector , route , selector , type , accept , charset , locale );
114122
115123 BiFunction <Injector , Route , Response > resFactory = (injector , route ) ->
116124 new ResponseImpl (response , injector , route , locals , selector , typeProvider , charset );
0 commit comments