77
88import static java .util .Collections .singletonList ;
99import static java .util .Objects .requireNonNull ;
10- import static java .util .Spliterators .spliteratorUnknownSize ;
1110import static java .util .stream .StreamSupport .stream ;
1211
1312import java .io .IOException ;
3029import java .util .ServiceConfigurationError ;
3130import java .util .ServiceLoader ;
3231import java .util .Set ;
33- import java .util .Spliterator ;
3432import java .util .concurrent .Executor ;
3533import java .util .concurrent .ExecutorService ;
3634import java .util .concurrent .atomic .AtomicBoolean ;
@@ -149,7 +147,9 @@ public Jooby() {
149147 * Server options or <code>null</code>.
150148 *
151149 * @return Server options or <code>null</code>.
150+ * @deprecated Use {@link Server#getOptions()}
152151 */
152+ @ Deprecated (since = "3.8.0" , forRemoval = true )
153153 public @ Nullable ServerOptions getServerOptions () {
154154 return serverOptions ;
155155 }
@@ -159,7 +159,9 @@ public Jooby() {
159159 *
160160 * @param serverOptions Server options.
161161 * @return This application.
162+ * @deprecated Use {@link Server#setOptions(ServerOptions)}
162163 */
164+ @ Deprecated (since = "3.8.0" , forRemoval = true )
163165 public @ NonNull Jooby setServerOptions (@ NonNull ServerOptions serverOptions ) {
164166 this .serverOptions = serverOptions ;
165167 return this ;
@@ -970,10 +972,12 @@ public Jooby setStartupSummary(List<StartupSummary> startupSummary) {
970972 * etc..
971973 *
972974 * @return Server.
975+ * @deprecated Use {@link Server#start(Jooby[])}
973976 */
977+ @ Deprecated (since = "3.8.0" , forRemoval = true )
974978 public @ NonNull Server start () {
975979 if (server == null ) {
976- this .server = loadServer ();
980+ this .server = Server . loadServer ();
977981 }
978982 if (!server .getLoggerOff ().isEmpty ()) {
979983 this .server = MutedServer .mute (this .server );
@@ -1004,31 +1008,6 @@ public Jooby setStartupSummary(List<StartupSummary> startupSummary) {
10041008 }
10051009 }
10061010
1007- /**
1008- * Load server from classpath using {@link ServiceLoader}.
1009- *
1010- * @return A server.
1011- */
1012- private Server loadServer () {
1013- List <Server > servers =
1014- stream (
1015- spliteratorUnknownSize (
1016- ServiceLoader .load (Server .class ).iterator (), Spliterator .ORDERED ),
1017- false )
1018- .toList ();
1019- if (servers .isEmpty ()) {
1020- throw new StartupException ("Server not found." );
1021- }
1022- if (servers .size () > 1 ) {
1023- List <String > names =
1024- servers .stream ()
1025- .map (it -> it .getClass ().getSimpleName ().toLowerCase ())
1026- .collect (Collectors .toList ());
1027- getLog ().warn ("Multiple servers found {}. Using: {}" , names , names .get (0 ));
1028- }
1029- return servers .get (0 );
1030- }
1031-
10321011 /**
10331012 * Call back method that indicates application was deploy it in the given server.
10341013 *
@@ -1277,28 +1256,78 @@ public static void runApp(
12771256 @ NonNull String [] args ,
12781257 @ NonNull ExecutionMode executionMode ,
12791258 @ NonNull Supplier <Jooby > provider ) {
1280- createApp (args , executionMode , provider ). start ( );
1259+ runApp (args , Server . loadServer (), executionMode , List . of ( provider ) );
12811260 }
12821261
12831262 /**
12841263 * Setup default environment, logging (logback or log4j2) and run application.
12851264 *
12861265 * @param args Application arguments.
1287- * @param executionMode Application execution mode.
12881266 * @param provider Application provider.
1289- * @return Application.
12901267 */
1291- public static Jooby createApp (
1268+ public static void runApp (@ NonNull String [] args , @ NonNull List <Supplier <Jooby >> provider ) {
1269+ runApp (args , Server .loadServer (), ExecutionMode .DEFAULT , provider );
1270+ }
1271+
1272+ /**
1273+ * Setup default environment, logging (logback or log4j2) and run application.
1274+ *
1275+ * @param args Application arguments.
1276+ * @param executionMode Execution mode.
1277+ * @param provider Application provider.
1278+ */
1279+ public static void runApp (
12921280 @ NonNull String [] args ,
12931281 @ NonNull ExecutionMode executionMode ,
1294- @ NonNull Supplier <Jooby > provider ) {
1282+ @ NonNull List <Supplier <Jooby >> provider ) {
1283+ runApp (args , Server .loadServer (), executionMode , provider );
1284+ }
12951285
1296- configurePackage (provider .getClass ().getPackage ());
1286+ /**
1287+ * Setup default environment, logging (logback or log4j2) and run application.
1288+ *
1289+ * @param args Application arguments.
1290+ * @param server Server.
1291+ * @param provider Application provider.
1292+ */
1293+ public static void runApp (
1294+ @ NonNull String [] args , @ NonNull Server server , @ NonNull List <Supplier <Jooby >> provider ) {
1295+ runApp (args , server , ExecutionMode .DEFAULT , provider );
1296+ }
12971297
1298- /** Dump command line as system properties. */
1298+ /**
1299+ * Setup default environment, logging (logback or log4j2) and run application.
1300+ *
1301+ * @param args Application arguments.
1302+ * @param server Server.
1303+ * @param executionMode Execution mode.
1304+ * @param provider Application provider.
1305+ */
1306+ public static void runApp (
1307+ @ NonNull String [] args ,
1308+ @ NonNull Server server ,
1309+ @ NonNull ExecutionMode executionMode ,
1310+ @ NonNull List <Supplier <Jooby >> provider ) {
1311+ /* Dump command line as system properties. */
12991312 parseArguments (args ).forEach (System ::setProperty );
1313+ var apps = new ArrayList <Jooby >();
1314+ for (var factory : provider ) {
1315+ apps .add (createApp (executionMode , factory ));
1316+ }
1317+ server .start (apps .toArray (new Jooby [0 ]));
1318+ }
13001319
1301- /** Find application.env: */
1320+ /**
1321+ * Setup default environment, logging (logback or log4j2) and run application.
1322+ *
1323+ * @param executionMode Application execution mode.
1324+ * @param provider Application provider.
1325+ * @return Application.
1326+ */
1327+ public static Jooby createApp (
1328+ @ NonNull ExecutionMode executionMode , @ NonNull Supplier <Jooby > provider ) {
1329+ configurePackage (provider .getClass ().getPackage ());
1330+ /* Find application.env: */
13021331 String logfile =
13031332 LoggingService .configure (
13041333 provider .getClass ().getClassLoader (), new EnvironmentOptions ().getActiveNames ());
0 commit comments