11package org .javawebstack .framework ;
22
33import com .github .javafaker .Faker ;
4+ import org .javawebstack .command .CommandResult ;
5+ import org .javawebstack .command .CommandSystem ;
46import org .javawebstack .framework .bind .ModelBindParamTransformer ;
57import org .javawebstack .framework .bind .ModelBindTransformer ;
68import org .javawebstack .framework .config .Config ;
79import org .javawebstack .framework .module .Module ;
810import org .javawebstack .framework .util .CORSPolicy ;
911import org .javawebstack .framework .util .Crypt ;
12+ import org .javawebstack .framework .util .MultipartPolicy ;
1013import org .javawebstack .httpserver .HTTPServer ;
1114import org .javawebstack .httpserver .transformer .response .JsonResponseTransformer ;
1215import org .javawebstack .injector .Injector ;
@@ -31,6 +34,7 @@ public abstract class WebApplication {
3134 private final Crypt crypt ;
3235 private final List <Module > modules = new ArrayList <>();
3336 private final ModelBindParamTransformer modelBindParamTransformer = new ModelBindParamTransformer ();
37+ private final CommandSystem commandSystem = new CommandSystem ();
3438
3539 public WebApplication (){
3640 injector = new SimpleInjector ();
@@ -81,13 +85,21 @@ public WebApplication(){
8185 server .injector (injector );
8286 injector .inject (this );
8387 server .beforeInterceptor (new CORSPolicy (config .get ("http.server.cors" , "*" )));
88+ server .beforeInterceptor (new MultipartPolicy (config .get ("http.server.tmp" , null )));
8489 if (config .isEnabled ("http.server.json" , true ))
8590 server .responseTransformer (new JsonResponseTransformer ().ignoreStrings ());
8691 if (sql != null )
8792 server .routeParamTransformer (modelBindParamTransformer );
8893 modules .forEach (m -> m .beforeSetupServer (this , server ));
8994 setupServer (server );
9095 modules .forEach (m -> m .setupServer (this , server ));
96+ setupCommands (commandSystem );
97+ modules .forEach (m -> m .setupCommands (this , commandSystem ));
98+ commandSystem .addCommand ("start" , (args , params ) -> {
99+ server .start ();
100+ server .join ();
101+ return CommandResult .success ();
102+ });
91103 }
92104
93105 public WebApplication addModule (Module module ){
@@ -128,15 +140,17 @@ public Crypt getCrypt(){
128140 return crypt ;
129141 }
130142
131- public abstract void setupModules ();
132- public abstract void setupConfig (Config config );
133- public abstract void setupInjection (SimpleInjector injector );
134- public abstract void setupModels (SQL sql ) throws ORMConfigurationException ;
135- public abstract void setupServer (HTTPServer server );
136-
137- public void run (){
138- server .start ();
139- server .join ();
143+ protected void setupModules (){}
144+ protected abstract void setupConfig (Config config );
145+ protected abstract void setupInjection (SimpleInjector injector );
146+ protected abstract void setupModels (SQL sql ) throws ORMConfigurationException ;
147+ protected abstract void setupServer (HTTPServer server );
148+ protected abstract void setupCommands (CommandSystem system );
149+
150+ public void run (String [] args ){
151+ if (args == null )
152+ args = new String []{"start" };
153+ commandSystem .run (args );
140154 }
141155
142156}
0 commit comments