Skip to content

Commit c78b51a

Browse files
committed
Added the command system and multipart policy
1 parent 7a185e4 commit c78b51a

File tree

5 files changed

+52
-9
lines changed

5 files changed

+52
-9
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@
4646
<artifactId>Graph</artifactId>
4747
<version>1.0-SNAPSHOT</version>
4848
</dependency>
49+
<dependency>
50+
<groupId>org.javawebstack</groupId>
51+
<artifactId>Command</artifactId>
52+
<version>1.0-SNAPSHOT</version>
53+
</dependency>
4954
<dependency>
5055
<groupId>org.junit.jupiter</groupId>
5156
<artifactId>junit-jupiter-engine</artifactId>

src/main/java/org/javawebstack/framework/WebApplication.java

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package org.javawebstack.framework;
22

33
import com.github.javafaker.Faker;
4+
import org.javawebstack.command.CommandResult;
5+
import org.javawebstack.command.CommandSystem;
46
import org.javawebstack.framework.bind.ModelBindParamTransformer;
57
import org.javawebstack.framework.bind.ModelBindTransformer;
68
import org.javawebstack.framework.config.Config;
79
import org.javawebstack.framework.module.Module;
810
import org.javawebstack.framework.util.CORSPolicy;
911
import org.javawebstack.framework.util.Crypt;
12+
import org.javawebstack.framework.util.MultipartPolicy;
1013
import org.javawebstack.httpserver.HTTPServer;
1114
import org.javawebstack.httpserver.transformer.response.JsonResponseTransformer;
1215
import 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
}

src/main/java/org/javawebstack/framework/config/Config.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public Config(){
2727
put("HTTP_SERVER_PORT", "http.server.port");
2828
put("HTTP_SERVER_CORS", "http.server.cors");
2929
put("HTTP_SERVER_JSON", "http.server.json");
30+
put("HTTP_SERVER_TMP", "http.server.tmp");
31+
put("CRYPT_KEY", "crypt.key");
3032
}});
3133
}
3234

src/main/java/org/javawebstack/framework/module/Module.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.javawebstack.framework.module;
22

3+
import org.javawebstack.command.CommandSystem;
34
import org.javawebstack.framework.WebApplication;
45
import org.javawebstack.framework.config.Config;
56
import org.javawebstack.httpserver.HTTPServer;
@@ -17,5 +18,6 @@ default void setupConfig(WebApplication application, Config config){}
1718
default void setupInjection(WebApplication application, SimpleInjector injector){}
1819
default void setupModels(WebApplication application, SQL sql) throws ORMConfigurationException {}
1920
default void setupServer(WebApplication application, HTTPServer server){}
21+
default void setupCommands(WebApplication application, CommandSystem system){}
2022

2123
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.javawebstack.framework.util;
2+
3+
import org.javawebstack.httpserver.Exchange;
4+
import org.javawebstack.httpserver.handler.RequestInterceptor;
5+
6+
public class MultipartPolicy implements RequestInterceptor {
7+
8+
private final String location;
9+
10+
public MultipartPolicy(String location){
11+
this.location = location;
12+
}
13+
14+
public boolean intercept(Exchange exchange) {
15+
if(location != null)
16+
exchange.enableMultipart(location);
17+
return false;
18+
}
19+
20+
}

0 commit comments

Comments
 (0)