move setup of web application to the build() method
This commit is contained in:
parent
d3140e330e
commit
d3198ad8b7
3 changed files with 59 additions and 28 deletions
|
@ -54,6 +54,7 @@ public class WebApplicationBuilder extends BaseApplicationBuilder {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WebApplication build() {
|
public WebApplication build() {
|
||||||
|
super.build();
|
||||||
return new WebApplication(this);
|
return new WebApplication(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,7 +52,7 @@ public class BaseApplication implements Application {
|
||||||
|
|
||||||
protected BaseApplication(BaseApplicationBuilder builder) {
|
protected BaseApplication(BaseApplicationBuilder builder) {
|
||||||
this.builder = builder;
|
this.builder = builder;
|
||||||
this.sessionName = getSettings().get("session.name", "SESS");
|
this.sessionName = builder.settings.get("session.name", "SESS");
|
||||||
this.httpResponseRenderer = newResponseRenderer();
|
this.httpResponseRenderer = newResponseRenderer();
|
||||||
this.applicationModuleList = new ArrayList<>();
|
this.applicationModuleList = new ArrayList<>();
|
||||||
for (Map.Entry<String, Settings> entry : builder.settings.getGroups("module").entrySet()) {
|
for (Map.Entry<String, Settings> entry : builder.settings.getGroups("module").entrySet()) {
|
||||||
|
|
|
@ -32,6 +32,10 @@ public class BaseApplicationBuilder implements ApplicationBuilder {
|
||||||
private static final Set<String> DEFAULT_SUFFIXES =
|
private static final Set<String> DEFAULT_SUFFIXES =
|
||||||
Set.of("css", "js", "ico", "png", "jpg", "jpeg", "gif", "woff2");
|
Set.of("css", "js", "ico", "png", "jpg", "jpeg", "gif", "woff2");
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private String profile;
|
||||||
|
|
||||||
protected ClassLoader classLoader;
|
protected ClassLoader classLoader;
|
||||||
|
|
||||||
protected Path home;
|
protected Path home;
|
||||||
|
@ -61,34 +65,17 @@ public class BaseApplicationBuilder implements ApplicationBuilder {
|
||||||
protected HttpRouter httpRouter;
|
protected HttpRouter httpRouter;
|
||||||
|
|
||||||
protected BaseApplicationBuilder() {
|
protected BaseApplicationBuilder() {
|
||||||
this.classLoader = getClass().getClassLoader();
|
|
||||||
this.home = Paths.get(System.getProperties().containsKey("application.home") ? System.getProperty("application.home") : ".");
|
|
||||||
this.contextPath = "/";
|
|
||||||
this.secret = "secret";
|
|
||||||
this.sessionsEnabled = true;
|
this.sessionsEnabled = true;
|
||||||
this.locale = Locale.getDefault();
|
|
||||||
this.zoneId = ZoneId.systemDefault();
|
|
||||||
this.mimeTypeService = new MimeTypeService();
|
|
||||||
String name = System.getProperty("application.name");
|
|
||||||
if (name == null) {
|
|
||||||
name = "application";
|
|
||||||
}
|
}
|
||||||
String profile = System.getProperty("application.profile");
|
|
||||||
if (profile == null) {
|
public BaseApplicationBuilder setName(String name) {
|
||||||
profile = "developer";
|
this.name = name;
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
this.configParams = new ConfigParams()
|
|
||||||
.withDirectoryName(name)
|
public BaseApplicationBuilder setProfile(String profile) {
|
||||||
.withFileNamesWithoutSuffix(profile)
|
this.profile = profile;
|
||||||
.withSystemEnvironment()
|
return this;
|
||||||
.withSystemProperties();
|
|
||||||
this.configLoader = ConfigLoader.getInstance()
|
|
||||||
.withLogger(bootLogger);
|
|
||||||
this.settings = configLoader.load(configParams);
|
|
||||||
if (staticFileSuffixes == null) {
|
|
||||||
staticFileSuffixes = DEFAULT_SUFFIXES;
|
|
||||||
}
|
|
||||||
this.executor = BaseExecutor.builder().build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public BaseApplicationBuilder setSettings(Settings settings) {
|
public BaseApplicationBuilder setSettings(Settings settings) {
|
||||||
|
@ -159,6 +146,49 @@ public class BaseApplicationBuilder implements ApplicationBuilder {
|
||||||
@Override
|
@Override
|
||||||
public Application build() {
|
public Application build() {
|
||||||
Objects.requireNonNull(httpRouter, "http router must not be null");
|
Objects.requireNonNull(httpRouter, "http router must not be null");
|
||||||
|
if (this.classLoader == null) {
|
||||||
|
this.classLoader = getClass().getClassLoader();
|
||||||
|
}
|
||||||
|
if (this.home == null) {
|
||||||
|
this.home = Paths.get(System.getProperty("application.home", "."));
|
||||||
|
}
|
||||||
|
if (this.contextPath == null) {
|
||||||
|
this.contextPath = "/";
|
||||||
|
}
|
||||||
|
if (this.secret == null) {
|
||||||
|
this.secret = "secret";
|
||||||
|
}
|
||||||
|
if (this.locale == null) {
|
||||||
|
this.locale = Locale.getDefault();
|
||||||
|
}
|
||||||
|
if (this.zoneId == null) {
|
||||||
|
this.zoneId = ZoneId.systemDefault();
|
||||||
|
}
|
||||||
|
if (name == null) {
|
||||||
|
name = System.getProperty("application.name", "application");
|
||||||
|
}
|
||||||
|
if (profile == null) {
|
||||||
|
profile = System.getProperty("application.profile", "developer");
|
||||||
|
}
|
||||||
|
if (this.settings == null) {
|
||||||
|
this.configParams = new ConfigParams()
|
||||||
|
.withDirectoryName(name)
|
||||||
|
.withFileNamesWithoutSuffix(profile)
|
||||||
|
.withSystemEnvironment()
|
||||||
|
.withSystemProperties();
|
||||||
|
this.configLoader = ConfigLoader.getInstance()
|
||||||
|
.withLogger(bootLogger);
|
||||||
|
this.settings = configLoader.load(configParams);
|
||||||
|
}
|
||||||
|
if (this.mimeTypeService == null) {
|
||||||
|
this.mimeTypeService = new MimeTypeService();
|
||||||
|
}
|
||||||
|
if (this.staticFileSuffixes == null) {
|
||||||
|
this.staticFileSuffixes = DEFAULT_SUFFIXES;
|
||||||
|
}
|
||||||
|
if (executor == null) {
|
||||||
|
this.executor = BaseExecutor.builder().build();
|
||||||
|
}
|
||||||
return new BaseApplication(this);
|
return new BaseApplication(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue