From 9997bcd91aee48d022c117c05715d06644fedff7 Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Thu, 28 Jul 2016 22:33:58 +0200 Subject: [PATCH] Moved http server to WAContext and added initialization functions --- src/wa/server/WAContext.java | 13 +++++++ src/wa/server/WebAdminServer.java | 11 ++---- src/wa/server/page/ConfigPage.java | 34 +++++++++++++++---- src/wa/server/page/ServiceStatusPage.java | 1 + src/wa/server/page/WAPage.java | 12 +++++-- src/wa/server/page/WAServicePage.java | 3 +- src/wa/server/plugin/WAConfiguration.java | 2 +- .../plugin/apache/ApacheConfigProxy.java | 2 +- .../apache/ApacheConfigVirtualHost.java | 2 +- 9 files changed, 59 insertions(+), 21 deletions(-) diff --git a/src/wa/server/WAContext.java b/src/wa/server/WAContext.java index 852f19f..a999ee2 100755 --- a/src/wa/server/WAContext.java +++ b/src/wa/server/WAContext.java @@ -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 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; } diff --git a/src/wa/server/WebAdminServer.java b/src/wa/server/WebAdminServer.java index 9bcf0ef..6d4521b 100755 --- a/src/wa/server/WebAdminServer.java +++ b/src/wa/server/WebAdminServer.java @@ -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 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(); diff --git a/src/wa/server/page/ConfigPage.java b/src/wa/server/page/ConfigPage.java index 6cf5bd7..ead5211 100755 --- a/src/wa/server/page/ConfigPage.java +++ b/src/wa/server/page/ConfigPage.java @@ -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 configClass) { + super(getPageName(configClass)); this.configClass = configClass; } + private static String getPageName(Class 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 getAllConfigs(){ + private static List 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> it = WAContext.getPluginManager().getClassIterator(WAConfiguration.class); it.hasNext(); ){ + Class clazz = it.next(); + WAContext.registerWaPage(new ConfigPage(clazz)); + } + } } diff --git a/src/wa/server/page/ServiceStatusPage.java b/src/wa/server/page/ServiceStatusPage.java index 2a88acb..f5923be 100755 --- a/src/wa/server/page/ServiceStatusPage.java +++ b/src/wa/server/page/ServiceStatusPage.java @@ -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); } diff --git a/src/wa/server/page/WAPage.java b/src/wa/server/page/WAPage.java index e6e055c..0a104ff 100755 --- a/src/wa/server/page/WAPage.java +++ b/src/wa/server/page/WAPage.java @@ -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 request) { return null; } + + + + public static void initialize() { + for (Iterator it = WAContext.getPluginManager().getObjectIterator(WAPage.class); it.hasNext(); ){ + WAContext.registerWaPage(it.next()); + } + } } diff --git a/src/wa/server/page/WAServicePage.java b/src/wa/server/page/WAServicePage.java index 4386975..62c4e3c 100755 --- a/src/wa/server/page/WAServicePage.java +++ b/src/wa/server/page/WAServicePage.java @@ -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); diff --git a/src/wa/server/plugin/WAConfiguration.java b/src/wa/server/plugin/WAConfiguration.java index e1238da..325e1f8 100755 --- a/src/wa/server/plugin/WAConfiguration.java +++ b/src/wa/server/plugin/WAConfiguration.java @@ -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(); } diff --git a/src/wa/server/plugin/apache/ApacheConfigProxy.java b/src/wa/server/plugin/apache/ApacheConfigProxy.java index 66cbcaf..01d9d7f 100755 --- a/src/wa/server/plugin/apache/ApacheConfigProxy.java +++ b/src/wa/server/plugin/apache/ApacheConfigProxy.java @@ -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") diff --git a/src/wa/server/plugin/apache/ApacheConfigVirtualHost.java b/src/wa/server/plugin/apache/ApacheConfigVirtualHost.java index 7b10181..aadd9ee 100755 --- a/src/wa/server/plugin/apache/ApacheConfigVirtualHost.java +++ b/src/wa/server/plugin/apache/ApacheConfigVirtualHost.java @@ -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")