1010import io .jooby .Context ;
1111import io .jooby .Jooby ;
1212import io .jooby .RegistryException ;
13+ import io .jooby .RouterOption ;
1314import io .jooby .ServerOptions ;
1415import io .jooby .ServiceKey ;
1516import io .jooby .SessionStore ;
2223import io .jooby .ResponseHandler ;
2324import io .jooby .Route ;
2425import io .jooby .Router ;
25- import io .jooby .RouterOptions ;
2626import io .jooby .ServiceRegistry ;
2727import io .jooby .StatusCode ;
2828import io .jooby .TemplateEngine ;
4040import java .nio .file .Paths ;
4141import java .util .ArrayList ;
4242import java .util .Collections ;
43+ import java .util .EnumSet ;
4344import java .util .HashMap ;
4445import java .util .LinkedHashMap ;
4546import java .util .LinkedList ;
4647import java .util .List ;
4748import java .util .Map ;
4849import java .util .NoSuchElementException ;
4950import java .util .Optional ;
51+ import java .util .Set ;
5052import java .util .concurrent .ConcurrentHashMap ;
5153import java .util .concurrent .Executor ;
5254import java .util .function .Predicate ;
@@ -136,8 +138,6 @@ public Stack executor(Executor executor) {
136138
137139 private Map <String , StatusCode > errorCodes ;
138140
139- private RouterOptions options = new RouterOptions ();
140-
141141 private RouteTree chi = new Chi ();
142142
143143 private LinkedList <Stack > stack = new LinkedList <>();
@@ -172,6 +172,8 @@ public Stack executor(Executor executor) {
172172
173173 private ClassLoader classLoader ;
174174
175+ private Set <RouterOption > routerOptions = EnumSet .of (RouterOption .RESET_HEADERS_ON_ERROR );
176+
175177 public RouterImpl (ClassLoader loader ) {
176178 this .classLoader = loader ;
177179 stack .addLast (new Stack (null ));
@@ -188,13 +190,13 @@ public RouterImpl(ClassLoader loader) {
188190 return attributes ;
189191 }
190192
191- @ Nonnull @ Override public Router setRouterOptions (@ Nonnull RouterOptions options ) {
192- this .options = options ;
193- return this ;
193+ @ Nonnull @ Override public Set <RouterOption > getRouterOptions () {
194+ return routerOptions ;
194195 }
195196
196- @ Nonnull @ Override public RouterOptions getRouterOptions () {
197- return options ;
197+ @ Nonnull @ Override public Router setRouterOptions (@ Nonnull RouterOption ... options ) {
198+ Stream .of (options ).forEach (routerOptions ::add );
199+ return this ;
198200 }
199201
200202 @ Nonnull @ Override public Router setContextPath (@ Nonnull String basePath ) {
@@ -505,13 +507,13 @@ private Route newRoute(@Nonnull String method, @Nonnull String pattern,
505507 }
506508 }
507509 /** router options: */
508- if (options . getIgnoreCase ( )) {
510+ if (routerOptions . contains ( RouterOption . LOW_CASE )) {
509511 chi = new RouteTreeLowerCasePath (chi );
510512 }
511- if (options . getIgnoreTrailingSlash ( )) {
513+ if (routerOptions . contains ( RouterOption . NO_TRAILING_SLASH )) {
512514 chi = new RouteTreeIgnoreTrailingSlash (chi );
513515 }
514- if (options . getNormalizePath ( )) {
516+ if (routerOptions . contains ( RouterOption . NORM )) {
515517 chi = new RouteTreeNormPath (chi );
516518 }
517519
0 commit comments