Fixed some enable issues on Bukkit version. More:

Tested functioning:
- Enable
- Reload
- Analysis & Inspect command
- Debug page
- WebServer functions partially

Tested not functioning:
- /player/playername (Null response)
  - Some PageHandlers return null Response (Not supposed to)
- /server/  (Endless "Refreshing" page)
- /server/name
  - Style responses not found in sub folders (eg /server/page)
- /players (jquery.dataTables.js Unexpected token)
- Internal InfoRequests do not work as intended
- Internal errors in RequestHandler
- /plan manage backup, restore, setup

Not Tested, probably not functioning:
- Bungee
- /plan manage setup

Not implemented:
- Player online information to transfer table
- Config setting transfer
- Bukkit - Bungee Set-up
This commit is contained in:
Rsl1122 2018-01-24 21:59:53 +02:00
parent 2b412f6f7b
commit a60f77f06f
27 changed files with 208 additions and 85 deletions

View File

@ -81,7 +81,7 @@ public class Plan extends BukkitPlugin implements PlanPlugin {
registerCommand("plan", new PlanCommand(this));
Benchmark.start("Hook to 3rd party plugins");
hookHandler = new HookHandler(this);
hookHandler = new HookHandler();
Benchmark.stop("Enable", "Hook to 3rd party plugins");
ImporterManager.registerImporter(new OfflinePlayerImporter());

View File

@ -24,9 +24,9 @@ public interface PlanPlugin extends IPlugin {
boolean bungeeAvailable = Check.isBungeeAvailable();
if (bukkitAvailable && bungeeAvailable) {
// TODO Test Plugin
} else if (bungeeAvailable) {
return Plan.getInstance();
} else if (bukkitAvailable) {
return Plan.getInstance();
} else if (bungeeAvailable) {
return PlanBungee.getInstance();
}
throw new IllegalAccessError("Plugin instance not available");

View File

@ -0,0 +1,69 @@
/*
* Licence is provided in the jar as license.yml also here:
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
*/
package com.djrapitops.plan.api;
import com.djrapitops.plan.api.exceptions.database.DBException;
import com.djrapitops.plan.data.plugin.PluginData;
import com.djrapitops.plan.system.BukkitSystem;
import com.djrapitops.plan.system.database.databases.operation.FetchOperations;
import com.djrapitops.plugin.api.utility.log.Log;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
* //TODO Class Javadoc Comment
*
* @author Rsl1122
*/
public class BukkitAPI implements PlanAPI {
private final BukkitSystem bukkitSystem;
public BukkitAPI(BukkitSystem bukkitSystem) {
this.bukkitSystem = bukkitSystem;
}
@Override
public void addPluginDataSource(PluginData pluginData) {
bukkitSystem.getHookHandler().addPluginDataSource(pluginData);
}
@Override
public String getPlayerInspectPageLink(UUID uuid) {
return getPlayerInspectPageLink(getPlayerName(uuid));
}
@Override
public String getPlayerInspectPageLink(String playerName) {
return "../player/" + playerName;
}
@Override
public String getPlayerName(UUID uuid) {
return bukkitSystem.getCacheSystem().getDataCache().getName(uuid);
}
@Override
public UUID playerNameToUUID(String playerName) {
return bukkitSystem.getCacheSystem().getDataCache().getUUIDof(playerName);
}
@Override
public Map<UUID, String> getKnownPlayerNames() {
try {
return bukkitSystem.getDatabaseSystem().getActiveDatabase().fetch().getPlayerNames();
} catch (DBException e) {
Log.toLog(this.getClass(), e);
return new HashMap<>();
}
}
@Override
public FetchOperations fetchFromPlanDB() {
return bukkitSystem.getDatabaseSystem().getActiveDatabase().fetch();
}
}

View File

@ -5,6 +5,7 @@
package com.djrapitops.plan.api;
import com.djrapitops.plan.data.plugin.PluginData;
import com.djrapitops.plan.system.PlanSystem;
import com.djrapitops.plan.system.database.databases.operation.FetchOperations;
import java.util.Map;
@ -18,7 +19,7 @@ import java.util.UUID;
public interface PlanAPI {
static PlanAPI getInstance() {
throw new IllegalAccessError("Not yet implemented"); // TODO
return PlanSystem.getInstance().getPlanAPI();
}
void addPluginDataSource(PluginData pluginData);

View File

@ -2,8 +2,12 @@ package com.djrapitops.plan.data.plugin;
import com.djrapitops.plan.Plan;
import com.djrapitops.plan.data.element.InspectContainer;
import com.djrapitops.plan.system.PlanSystem;
import com.djrapitops.plan.system.SubSystem;
import com.djrapitops.plan.utilities.NullCheck;
import com.djrapitops.plugin.StaticHolder;
import com.djrapitops.plugin.api.utility.log.Log;
import com.djrapitops.pluginbridge.plan.Bridge;
import java.util.*;
@ -14,29 +18,35 @@ import java.util.*;
* @author Rsl1122
* @since 2.6.0
*/
public class HookHandler {
public class HookHandler implements SubSystem {
private final List<PluginData> additionalDataSources;
private final PluginsConfigSection configHandler;
private PluginsConfigSection configHandler;
/**
* Class constructor, hooks to plugins.
*
* @param plugin Current instance of plan.
*/
public HookHandler(Plan plugin) {
public HookHandler() {
additionalDataSources = new ArrayList<>();
}
public static HookHandler getInstance() {
HookHandler hookHandler = PlanSystem.getInstance().getHookHandler();
NullCheck.check(hookHandler, new IllegalStateException("Plugin Hooks were not initialized."));
return hookHandler;
}
@Override
public void enable() {
configHandler = new PluginsConfigSection();
try {
// Bridge.hook(this);
Bridge.hook(this);
} catch (Exception e) {
Log.toLog(this.getClass().getName(), e);
Log.error("Plan Plugin Bridge not included in the plugin jar.");
}
}
public static HookHandler getInstance() {
return null;// TODO
@Override
public void disable() {
}
/**

View File

@ -6,8 +6,11 @@ package com.djrapitops.plan.system;
import com.djrapitops.plan.Plan;
import com.djrapitops.plan.ShutdownHook;
import com.djrapitops.plan.api.BukkitAPI;
import com.djrapitops.plan.data.plugin.HookHandler;
import com.djrapitops.plan.system.database.BukkitDBSystem;
import com.djrapitops.plan.system.file.FileSystem;
import com.djrapitops.plan.system.info.BukkitInfoSystem;
import com.djrapitops.plan.system.info.server.BukkitServerInfo;
import com.djrapitops.plan.system.listeners.BukkitListenerSystem;
import com.djrapitops.plan.system.settings.config.BukkitConfigSystem;
@ -30,8 +33,12 @@ public class BukkitSystem extends PlanSystem {
listenerSystem = new BukkitListenerSystem(plugin);
taskSystem = new BukkitTaskSystem(plugin);
infoSystem = new BukkitInfoSystem();
serverInfo = new BukkitServerInfo(plugin);
hookHandler = new HookHandler();
planAPI = new BukkitAPI(this);
StaticHolder.saveInstance(ShutdownHook.class, plugin.getClass());
new ShutdownHook().register();
}

View File

@ -7,7 +7,7 @@ package com.djrapitops.plan.system;
import com.djrapitops.plan.PlanBungee;
import com.djrapitops.plan.system.database.BungeeDBSystem;
import com.djrapitops.plan.system.file.FileSystem;
import com.djrapitops.plan.system.info.BukkitInfoSystem;
import com.djrapitops.plan.system.info.BungeeInfoSystem;
import com.djrapitops.plan.system.info.server.BungeeServerInfo;
import com.djrapitops.plan.system.listeners.BungeeListenerSystem;
import com.djrapitops.plan.system.settings.config.BungeeConfigSystem;
@ -29,7 +29,7 @@ public class BungeeSystem extends PlanSystem {
listenerSystem = new BungeeListenerSystem(plugin);
taskSystem = new BungeeTaskSystem(plugin);
infoSystem = new BukkitInfoSystem();
infoSystem = new BungeeInfoSystem();
serverInfo = new BungeeServerInfo(plugin);
}

View File

@ -4,7 +4,9 @@
*/
package com.djrapitops.plan.system;
import com.djrapitops.plan.api.PlanAPI;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.data.plugin.HookHandler;
import com.djrapitops.plan.system.cache.CacheSystem;
import com.djrapitops.plan.system.database.DBSystem;
import com.djrapitops.plan.system.file.FileSystem;
@ -44,6 +46,9 @@ public abstract class PlanSystem implements SubSystem {
protected TaskSystem taskSystem;
protected ServerInfo serverInfo;
protected HookHandler hookHandler;
protected PlanAPI planAPI;
public PlanSystem() {
processingQueue = new ProcessingQueue();
webServerSystem = new WebServerSystem();
@ -117,6 +122,8 @@ public abstract class PlanSystem implements SubSystem {
NullCheck.check(serverInfo, new IllegalStateException("ServerInfo was not initialized."));
NullCheck.check(listenerSystem, new IllegalStateException("Listener system was not initialized."));
NullCheck.check(taskSystem, new IllegalStateException("Task system was not initialized."));
NullCheck.check(hookHandler, new IllegalStateException("Plugin Hooks were not initialized."));
NullCheck.check(planAPI, new IllegalStateException("Plan API was not initialized."));
} catch (Exception e) {
throw new EnableException("One of the subsystems is not initialized on enable for " + this.getClass().getSimpleName() + ".", e);
}
@ -167,4 +174,12 @@ public abstract class PlanSystem implements SubSystem {
public InfoSystem getInfoSystem() {
return infoSystem;
}
public HookHandler getHookHandler() {
return hookHandler;
}
public PlanAPI getPlanAPI() {
return planAPI;
}
}

View File

@ -8,10 +8,6 @@ import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.system.PlanSystem;
import com.djrapitops.plan.system.SubSystem;
import com.djrapitops.plan.utilities.NullCheck;
import com.djrapitops.plugin.api.utility.log.Log;
import java.io.IOException;
import java.net.UnknownHostException;
/**
* System that holds data caches of the plugin.
@ -36,13 +32,9 @@ public class CacheSystem implements SubSystem {
@Override
public void enable() throws EnableException {
try {
GeolocationCache.checkDB();
} catch (UnknownHostException e) {
Log.error("Plan Requires internet access on first run to download GeoLite2 Geolocation database.");
} catch (IOException e) {
throw new EnableException("Something went wrong saving the downloaded GeoLite2 Geolocation database", e);
}
dataCache.enable();
geolocationCache.enable();
}
@Override

View File

@ -2,6 +2,7 @@ package com.djrapitops.plan.system.cache;
import com.djrapitops.plan.api.exceptions.database.DBException;
import com.djrapitops.plan.system.PlanSystem;
import com.djrapitops.plan.system.SubSystem;
import com.djrapitops.plan.system.database.databases.Database;
import com.djrapitops.plan.utilities.NullCheck;
import com.djrapitops.plugin.api.utility.log.Log;
@ -21,9 +22,9 @@ import java.util.*;
* @author Rsl1122
* @since 4.0.0
*/
public class DataCache extends SessionCache {
public class DataCache extends SessionCache implements SubSystem {
private final Database db;
private Database db;
private final Map<UUID, String> playerNames;
private final Map<String, UUID> uuids;
private final Map<UUID, String> displayNames;
@ -35,13 +36,21 @@ public class DataCache extends SessionCache {
*/
public DataCache(PlanSystem system) {
super(system);
db = system.getDatabaseSystem().getActiveDatabase();
playerNames = new HashMap<>();
displayNames = new HashMap<>();
uuids = new HashMap<>();
}
@Override
public void enable() {
db = system.getDatabaseSystem().getActiveDatabase();
}
@Override
public void disable() {
}
public static DataCache getInstance() {
DataCache dataCache = CacheSystem.getInstance().getDataCache();
NullCheck.check(dataCache, new IllegalStateException("Data Cache was not initialized."));

View File

@ -1,7 +1,10 @@
package com.djrapitops.plan.system.cache;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.system.SubSystem;
import com.djrapitops.plan.system.file.FileSystem;
import com.djrapitops.plan.utilities.NullCheck;
import com.djrapitops.plugin.api.utility.log.Log;
import com.google.common.cache.Cache;
import com.maxmind.geoip2.DatabaseReader;
import com.maxmind.geoip2.exception.GeoIp2Exception;
@ -13,6 +16,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.URL;
import java.net.UnknownHostException;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.util.HashMap;
@ -29,14 +33,29 @@ import java.util.zip.GZIPInputStream;
* @author Fuzzlemann
* @since 3.5.5
*/
public class GeolocationCache {
public class GeolocationCache implements SubSystem {
private final Map<String, String> geolocationCache;
private final File geolocationDB;
private File geolocationDB;
public GeolocationCache() {
geolocationCache = new HashMap<>();
}
@Override
public void enable() throws EnableException {
geolocationDB = new File(FileSystem.getDataFolder(), "GeoIP.dat");
try {
GeolocationCache.checkDB();
} catch (UnknownHostException e) {
Log.error("Plan Requires internet access on first run to download GeoLite2 Geolocation database.");
} catch (IOException e) {
throw new EnableException("Something went wrong saving the downloaded GeoLite2 Geolocation database", e);
}
}
@Override
public void disable() {
}
private static GeolocationCache getInstance() {

View File

@ -50,7 +50,7 @@ public abstract class DBSystem implements SubSystem {
Log.info(Locale.get(Msg.ENABLE_DB_INFO).parse(db.getConfigName()));
Benchmark.stop("Enable", "Init Database");
} catch (DBInitException e) {
throw new EnableException(db.getName() + "-Database failed to initialize", e);
throw new EnableException("Database failed to initialize", e);
}
}

View File

@ -1,7 +1,5 @@
package com.djrapitops.plan.system.database.databases.sql;
import com.djrapitops.plan.system.database.databases.operation.TransferOperations;
import com.djrapitops.plan.system.database.databases.sql.operation.SQLTransferOps;
import com.djrapitops.plan.system.settings.Settings;
import com.djrapitops.plugin.api.utility.log.Log;
import org.apache.commons.dbcp2.BasicDataSource;
@ -16,15 +14,7 @@ public class MySQLDB extends SQLDB {
private BasicDataSource dataSource;
private final SQLTransferOps transferOps;
public MySQLDB() {
transferOps = new SQLTransferOps(this);
}
@Override
public TransferOperations transfer() {
return transferOps;
}
/**

View File

@ -48,6 +48,7 @@ public abstract class SQLDB extends Database {
private final SQLSearchOps searchOps;
private final SQLCountOps countOps;
private final SQLSaveOps saveOps;
private final SQLTransferOps transferOps;
private final boolean usingMySQL;
private boolean open = false;
@ -81,7 +82,7 @@ public abstract class SQLDB extends Database {
countOps = new SQLCountOps(this);
searchOps = new SQLSearchOps(this);
saveOps = new SQLSaveOps(this);
transferOps = new SQLTransferOps(this);
}
/**
@ -390,4 +391,9 @@ public abstract class SQLDB extends Database {
public SaveOperations save() {
return saveOps;
}
@Override
public TransferOperations transfer() {
return transferOps;
}
}

View File

@ -1,9 +1,7 @@
package com.djrapitops.plan.system.database.databases.sql;
import com.djrapitops.plan.PlanPlugin;
import com.djrapitops.plan.api.exceptions.connection.UnsupportedTransferDatabaseException;
import com.djrapitops.plan.api.exceptions.database.DBInitException;
import com.djrapitops.plan.system.database.databases.operation.TransferOperations;
import com.djrapitops.plan.utilities.MiscUtils;
import com.djrapitops.plugin.api.utility.log.Log;
import com.djrapitops.plugin.task.AbsRunnable;
@ -37,11 +35,6 @@ public class SQLiteDB extends SQLDB {
this.dbName = dbName;
}
@Override
public TransferOperations transfer() throws UnsupportedTransferDatabaseException {
throw new UnsupportedTransferDatabaseException(this);
}
/**
* Setups the {@link BasicDataSource}
*/

View File

@ -69,7 +69,7 @@ public class TransferTable extends Table {
.column(columnSenderID, Sql.INT).notNull()
.column(columnExpiry, Sql.LONG).notNull().defaultValue("0")
.column(columnInfoType, Sql.varchar(100)).notNull()
.column(columnExtraVariables, Sql.varchar(255)).defaultValue("")
.column(columnExtraVariables, Sql.varchar(255)).defaultValue("''")
.column(columnContent, usingMySQL ? "MEDIUMTEXT" : Sql.varchar(1)) // SQLite does not enforce varchar limits.
.foreignKey(columnSenderID, serverTable.toString(), serverTable.getColumnID())
.toString()

View File

@ -27,6 +27,9 @@ public class BukkitInfoSystem extends InfoSystem {
@Override
protected void runLocally(InfoRequest infoRequest) throws WebException {
if (infoRequest instanceof CacheNetworkPageContentRequest) {
return;
}
if (infoRequest instanceof InfoRequestWithVariables) {
infoRequest.handleRequest(((InfoRequestWithVariables) infoRequest).getVariables());
} else {

View File

@ -5,6 +5,7 @@
package com.djrapitops.plan.system.info;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.api.exceptions.connection.NoServersException;
import com.djrapitops.plan.api.exceptions.connection.WebException;
import com.djrapitops.plan.system.PlanSystem;
import com.djrapitops.plan.system.SubSystem;
@ -57,10 +58,14 @@ public abstract class InfoSystem implements SubSystem {
}
public void sendRequest(InfoRequest infoRequest) throws WebException {
if (!connectionSystem.isServerAvailable()) {
try {
if (!connectionSystem.isServerAvailable()) {
runLocally(infoRequest);
}
connectionSystem.sendInfoRequest(infoRequest);
} catch (NoServersException e) {
runLocally(infoRequest);
}
connectionSystem.sendInfoRequest(infoRequest);
}
protected abstract void runLocally(InfoRequest infoRequest) throws WebException;
@ -70,6 +75,8 @@ public abstract class InfoSystem implements SubSystem {
connectionSystem.enable();
try {
updateNetworkPage();
} catch (NoServersException e) {
/* Ignored */
} catch (WebException e) {
// TODO Exception handling
Log.toLog(this.getClass().getName(), e);
@ -87,7 +94,7 @@ public abstract class InfoSystem implements SubSystem {
public abstract void updateNetworkPage() throws WebException;
public void requestSetUp(String address) throws WebException {
public void requestSetUp(String address) {
// TODO
}
}

View File

@ -77,7 +77,7 @@ public class BukkitConnectionSystem extends ConnectionSystem {
}
}
if (server == null) {
throw new NoServersException("Proper server is not available to process requests.");
throw new NoServersException("Proper server is not available to process request: " + infoRequest.getClass().getSimpleName());
}
return server;
}

View File

@ -63,7 +63,7 @@ public class BungeeConnectionSystem extends ConnectionSystem {
}
}
if (server == null) {
throw new NoServersException("Proper server is not available to process requests.");
throw new NoServersException("Proper server is not available to process request: " + infoRequest.getClass().getSimpleName());
}
return server;
}

View File

@ -67,7 +67,7 @@ public class ConnectionOut {
public void sendRequest() throws WebException {
String address = toServer.getWebAddress();
try {
URL url = new URL(address + "/info/" + this.getClass().getSimpleName().toLowerCase());
URL url = new URL(address + "/info/" + infoRequest.getClass().getSimpleName().toLowerCase());
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
if (address.startsWith("https")) {
HttpsURLConnection httpsConn = (HttpsURLConnection) connection;

View File

@ -54,11 +54,13 @@ public abstract class ConnectionSystem implements SubSystem {
private Map<String, InfoRequest> loadDataRequests() {
Map<String, InfoRequest> requests = new HashMap<>();
putRequest(requests, CacheInspectPageRequest.createHandler());
putRequest(requests, CacheInspectPluginsTabRequest.createHandler());
putRequest(requests, CacheAnalysisPageRequest.createHandler());
putRequest(requests, CacheNetworkPageContentRequest.createHandler());
putRequest(requests, GenerateAnalysisPageRequest.createHandler());
putRequest(requests, GenerateInspectPageRequest.createHandler());
putRequest(requests, GenerateInspectPluginsTabRequest.createHandler());
return requests;
}

View File

@ -24,12 +24,11 @@ import java.io.IOException;
*/
public abstract class ConfigSystem implements SubSystem {
protected final Config config;
protected Config config;
protected final Locale locale;
protected final Theme theme;
public ConfigSystem() {
config = new Config(FileSystem.getConfigFile());
locale = new Locale();
theme = new Theme();
}
@ -50,6 +49,7 @@ public abstract class ConfigSystem implements SubSystem {
@Override
public void enable() throws EnableException {
config = new Config(FileSystem.getConfigFile());
try {
copyDefaults();
config.save();

View File

@ -16,7 +16,6 @@ import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import java.io.IOException;
import java.util.List;
/**
@ -50,7 +49,7 @@ public class RequestHandler implements HttpHandler {
}
response.setResponseHeaders(responseHeaders);
response.send(exchange);
} catch (IOException e) {
} catch (Exception e) {
if (Settings.DEV_MODE.isTrue()) {
e.printStackTrace();
}

View File

@ -18,6 +18,7 @@ import com.djrapitops.plan.system.webserver.response.errors.NotFoundResponse;
import com.djrapitops.plan.system.webserver.response.errors.UnauthorizedServerResponse;
import com.djrapitops.plugin.api.utility.log.Log;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
@ -79,8 +80,10 @@ public class ResponseHandler extends TreePageHandler {
public Response getResponse(Request request) {
String targetString = request.getTarget();
List<String> target = Arrays.asList(targetString.split("/"));
target.remove(0);
List<String> target = new ArrayList<>(Arrays.asList(targetString.split("/")));
if (!target.isEmpty()) {
target.remove(0);
}
try {
return getResponse(request, targetString, target);
} catch (WebUserAuthException e) {

View File

@ -1,6 +1,7 @@
package com.djrapitops.plan.system.webserver;
import com.djrapitops.plan.PlanPlugin;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.system.SubSystem;
import com.djrapitops.plan.system.file.FileSystem;
import com.djrapitops.plan.system.settings.Settings;
@ -44,17 +45,28 @@ public class WebServer implements SubSystem {
private ResponseHandler responseHandler;
@Override
public void enable() {
public void enable() throws EnableException {
this.port = Settings.WEBSERVER_PORT.getNumber();
requestHandler = new RequestHandler(this);
responseHandler = requestHandler.getResponseHandler();
PlanPlugin plugin = PlanPlugin.getInstance();
StaticHolder.saveInstance(RequestHandler.class, plugin.getClass());
StaticHolder.saveInstance(ResponseHandler.class, plugin.getClass());
requestHandler = new RequestHandler(this);
responseHandler = requestHandler.getResponseHandler();
initServer();
if (!isEnabled()) {
if (Check.isBungeeAvailable()) {
throw new EnableException("WebServer did not initialize!");
}
if (Settings.WEBSERVER_DISABLED.isTrue()) {
Log.warn("WebServer was not initialized. (WebServer.DisableWebServer: true)");
} else {
Log.error("WebServer was not initialized successfully. Is the port (" + Settings.WEBSERVER_PORT.getNumber() + ") in use?");
}
}
}
@Override
@ -65,7 +77,7 @@ public class WebServer implements SubSystem {
/**
* Starts up the WebServer in a new Thread Pool.
*/
public void initServer() {
private void initServer() {
// Check if Bukkit WebServer has been disabled.
if (!Check.isBungeeAvailable() && Settings.WEBSERVER_DISABLED.isTrue()) {
return;
@ -86,7 +98,6 @@ public class WebServer implements SubSystem {
Log.infoColor("§eUser Authorization Disabled! (Not possible over http)");
server = HttpServer.create(new InetSocketAddress(Settings.WEBSERVER_IP.toString(), port), 10);
}
server.createContext("/", requestHandler);
server.setExecutor(new ThreadPoolExecutor(4, 8, 30, TimeUnit.SECONDS, new ArrayBlockingQueue<>(100)));

View File

@ -7,11 +7,8 @@ package com.djrapitops.plan.system.webserver;
import com.djrapitops.plan.api.exceptions.EnableException;
import com.djrapitops.plan.system.PlanSystem;
import com.djrapitops.plan.system.SubSystem;
import com.djrapitops.plan.system.settings.Settings;
import com.djrapitops.plan.system.webserver.response.cache.ResponseCache;
import com.djrapitops.plugin.api.Benchmark;
import com.djrapitops.plugin.api.Check;
import com.djrapitops.plugin.api.utility.log.Log;
/**
* WebServer subsystem for managing WebServer initialization.
@ -38,17 +35,7 @@ public class WebServerSystem implements SubSystem {
@Override
public void enable() throws EnableException {
Benchmark.start("WebServer Initialization");
webServer.initServer();
if (!webServer.isEnabled()) {
if (Check.isBungeeAvailable()) {
throw new EnableException("WebServer did not initialize!");
}
if (Settings.WEBSERVER_DISABLED.isTrue()) {
Log.warn("WebServer was not initialized. (WebServer.DisableWebServer: true)");
} else {
Log.error("WebServer was not initialized successfully. Is the port (" + Settings.WEBSERVER_PORT.getNumber() + ") in use?");
}
}
webServer.enable();
Benchmark.stop("Enable", "WebServer Initialization");
ResponseHandler responseHandler = webServer.getResponseHandler();
responseHandler.registerWebAPIPages();