11package com .annimon .ownlang .modules .server ;
22
3- import com .annimon .ownlang .lib .ArrayValue ;
4- import com .annimon .ownlang .lib .NumberValue ;
5- import com .annimon .ownlang .lib .Types ;
6- import com .annimon .ownlang .lib .Value ;
3+ import com .annimon .ownlang .lib .*;
74import io .javalin .config .JavalinConfig ;
5+ import io .javalin .config .Key ;
86import io .javalin .http .staticfiles .Location ;
97import java .util .Map ;
108import java .util .function .Consumer ;
2119 * "etags": true,
2220 * "maxRequestSize": 1_000_000,
2321 *
22+ * "defaultHost": "localhost",
23+ * "defaultPort": 8000,
24+ *
2425 * "caseInsensitiveRoutes": true,
2526 * "ignoreTrailingSlashes": true,
2627 * "multipleSlashesAsSingle": true,
2930 * "basicAuth": ["user", "password"],
3031 * "dev": true,
3132 * "showBanner": false,
32- * "sslRedirects": true
33+ * "sslRedirects": true,
34+ * "virtualThreads": true,
35+ * "appData": {
36+ * "key1": "value1",
37+ * "key2": "value2"
38+ * }
3339 * }
3440 */
3541
@@ -60,6 +66,10 @@ public void setup(JavalinConfig config) {
6066 ifBoolean ("etags" , flag -> config .http .generateEtags = flag );
6167 ifNumber ("maxRequestSize" , value -> config .http .maxRequestSize = value .asLong ());
6268
69+ // jetty
70+ ifString ("defaultHost" , value -> config .jetty .defaultHost = value );
71+ ifNumber ("defaultPort" , value -> config .jetty .defaultPort = value .asInt ());
72+
6373 // routing
6474 ifBoolean ("caseInsensitiveRoutes" , flag -> config .router .caseInsensitiveRoutes = flag );
6575 ifBoolean ("ignoreTrailingSlashes" , flag -> config .router .ignoreTrailingSlashes = flag );
@@ -71,6 +81,9 @@ public void setup(JavalinConfig config) {
7181 ifBoolean ("showBanner" , flag -> config .showJavalinBanner = flag );
7282 ifTrue ("dev" , config .bundledPlugins ::enableDevLogging );
7383 ifTrue ("sslRedirects" , config .bundledPlugins ::enableSslRedirects );
84+ ifBoolean ("virtualThreads" , flag -> config .useVirtualThreads = flag );
85+ ifMap ("appData" , appData -> appData .getMapStringKeys ()
86+ .forEach ((key , value ) -> config .appData (new Key <>(key ), value )));
7487 }
7588
7689 private void ifTrue (String key , Runnable action ) {
@@ -104,4 +117,12 @@ private void ifArray(String key, Consumer<ArrayValue> consumer) {
104117 consumer .accept ((ArrayValue ) value );
105118 }
106119 }
120+
121+ private void ifMap (String key , Consumer <MapValue > consumer ) {
122+ if (!map .containsKey (key )) return ;
123+ final Value value = map .get (key );
124+ if (value .type () == Types .MAP ) {
125+ consumer .accept ((MapValue ) value );
126+ }
127+ }
107128}
0 commit comments