Moved http server to WAContext and added initialization functions

This commit is contained in:
Ziver Koc 2016-07-28 22:33:58 +02:00
parent ba3c548232
commit 9997bcd91a
9 changed files with 59 additions and 21 deletions

View file

@ -22,6 +22,7 @@
package wa.server;
import wa.server.page.WAPage;
import wa.server.page.struct.WAAlert;
import zutil.db.DBConnection;
import zutil.db.DBUpgradeHandler;
@ -29,6 +30,8 @@ import zutil.db.handler.SimpleSQLResult;
import zutil.io.file.FileUtil;
import zutil.log.LogUtil;
import zutil.net.http.HttpHeader;
import zutil.net.http.HttpServer;
import zutil.net.http.page.HttpFilePage;
import zutil.plugin.PluginManager;
import zutil.ui.Navigation;
@ -47,6 +50,7 @@ public class WAContext {
private static Navigation rootNav;
private static DBConnection db;
private static PluginManager pluginManager;
private static HttpServer httpServer;
private ArrayList<WAAlert> alerts;
@ -112,6 +116,9 @@ public class WAContext {
handler.upgrade();
}
httpServer = new HttpServer(80);
httpServer.setDefaultPage(new HttpFilePage(FileUtil.find("WebContent/")));
httpServer.start();
} catch (Exception e) {
logger.log(Level.SEVERE, null, e);
System.exit(1);
@ -121,6 +128,12 @@ public class WAContext {
public static DBConnection getDB(){
return db;
}
public static HttpServer getHttpServer(){
return httpServer;
}
public static void registerWaPage(WAPage page){
httpServer.setPage(page.getPageName(), page);
}
public static Navigation getRootNav(){
return rootNav;
}

View file

@ -1,5 +1,6 @@
package wa.server;
import wa.server.page.ConfigPage;
import wa.server.page.WAPage;
import zutil.io.file.FileUtil;
import zutil.log.CompactLogFormatter;
@ -27,14 +28,8 @@ public class WebAdminServer {
try {
WAContext.initialize();
HttpServer http = new HttpServer(80);
for (Iterator<WAPage> it = WAContext.getPluginManager().getObjectIterator(WAPage.class); it.hasNext(); ){
WAPage page = it.next();
if (page.getPageName() != null)
http.setPage(page.getPageName(), page);
}
http.setDefaultPage(new HttpFilePage(FileUtil.find("WebContent/")));
http.start();
WAPage.initialize();
ConfigPage.initialize();
}catch(Exception e){
e.printStackTrace();

View file

@ -33,6 +33,7 @@ import zutil.ui.Configurator;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
@ -44,7 +45,7 @@ import java.util.logging.Logger;
*
* Created by Ziver on 2015-07-27.
*/
public abstract class ConfigPage extends WAPage {
public class ConfigPage extends WAPage {
private static final Logger log = LogUtil.getLogger();
private static final String TEMPLATE = "WebContent/page/ConfigPage.tmpl";
@ -53,8 +54,20 @@ public abstract class ConfigPage extends WAPage {
public ConfigPage(Class<? extends WAConfiguration> configClass) {
super(getPageName(configClass));
this.configClass = configClass;
}
private static String getPageName(Class<? extends WAConfiguration> configClass){
WAConfiguration.WAConfig params = configClass.getAnnotation(WAConfiguration.WAConfig.class);
if (params != null) {
WAContext.getRootNav()
.createSubNav(WAServicePage.PAGE_NAME)
.createSubNav(params.service())
.createSubNav(params.id(), params.name());
return WAServicePage.PAGE_NAME +"/"+ params.service() +"/"+ params.id();
}
return null;
}
@ -106,19 +119,28 @@ public abstract class ConfigPage extends WAPage {
}
private WAConfiguration newConfig(){
private static WAConfiguration newConfig(){
return null;
}
private WAConfiguration getConfig(int id){
private static WAConfiguration getConfig(int id){
return null;
}
private List<WAConfiguration> getAllConfigs(){
private static List<WAConfiguration> getAllConfigs(){
return null;
}
private WAConfiguration saveConfig(WAConfiguration target){
private static WAConfiguration saveConfig(WAConfiguration target){
return null;
}
private WAConfiguration deleteConfig(int id){
private static WAConfiguration deleteConfig(int id){
return null;
}
public static void initialize() {
for (Iterator<Class<? extends WAConfiguration>> it = WAContext.getPluginManager().getClassIterator(WAConfiguration.class); it.hasNext(); ){
Class<? extends WAConfiguration> clazz = it.next();
WAContext.registerWaPage(new ConfigPage(clazz));
}
}
}

View file

@ -59,6 +59,7 @@ public class ServiceStatusPage extends WAPage {
.createSubNav(getPageName(), NAVIGATION_NAME).setWeight(-100);
}
public ServiceStatusPage(WAServiceStatus ss){
super(WAServicePage.NAVIGATION_NAME);
services = new ArrayList<>();
services.add(ss);
}

View file

@ -34,6 +34,7 @@ import zutil.parser.json.JSONWriter;
import zutil.ui.Navigation;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
@ -50,9 +51,6 @@ public abstract class WAPage implements HttpPage{
private Templator tmpl;
public WAPage() {
this(null);
}
public WAPage(String pageName) {
this.pageName = pageName;
try {
@ -130,4 +128,12 @@ public abstract class WAPage implements HttpPage{
Map<String, String> request) {
return null;
}
public static void initialize() {
for (Iterator<WAPage> it = WAContext.getPluginManager().getObjectIterator(WAPage.class); it.hasNext(); ){
WAContext.registerWaPage(it.next());
}
}
}

View file

@ -41,6 +41,7 @@ import java.util.logging.Logger;
*/
public abstract class WAServicePage extends WAPage {
private static final Logger log = LogUtil.getLogger();
public static final String PAGE_NAME = "service";
public static final String NAVIGATION_NAME = "Services";
private static final String TMPL_FILE = "WebContent/page/ServicePage.tmpl";
@ -50,7 +51,7 @@ public abstract class WAServicePage extends WAPage {
public WAServicePage(String name, String niceName){
super("service/"+name);
super(PAGE_NAME +"/"+ name);
WAContext.getRootNav().createSubNav(NAVIGATION_NAME).setWeight(100)
.createSubNav(getPageName(), niceName);

View file

@ -1,6 +1,5 @@
package wa.server.plugin;
import zutil.db.bean.DBBean;
/**
* Created by Ziver on 2016-07-27.
@ -10,6 +9,7 @@ public abstract class WAConfiguration{
public @interface WAConfig{
String id();
String name();
String service();
}

View file

@ -6,7 +6,7 @@ import zutil.ui.Configurator;
import java.io.PrintStream;
@WAConfiguration.WAConfig(id="proxy", name="Proxy")
@WAConfiguration.WAConfig(service=ApacheService.PAGE_NAME, id="proxy", name="Proxy")
public class ApacheConfigProxy extends ApacheAbstractConfig {
@Configurator.Configurable("Proxy Target")

View file

@ -6,7 +6,7 @@ import zutil.ui.Configurator;
import java.io.PrintStream;
@WAConfiguration.WAConfig(id="vhost", name="VirtualHost")
@WAConfiguration.WAConfig(service=ApacheService.PAGE_NAME, id="vhost", name="VirtualHost")
public class ApacheConfigVirtualHost extends ApacheAbstractConfig {
@Configurator.Configurable("Document Root")