From 3a7b94a94f2058eb5f3a0c467678132960589c64 Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Sun, 9 Sep 2018 14:53:41 +0300 Subject: [PATCH] Fixed StackOverflowExceptions on enable caused by dependency cycles Registered pages on ResponseHandler separately Registered commands in PlanCommand and PlanBungeeCommand separately Made WebServer Lazy in InfoSystems and ConnectionSystems --- Plan/dependency-reduced-pom.xml | 2 +- .../main/java/com/djrapitops/plan/Plan.java | 1 + .../java/com/djrapitops/plan/PlanBungee.java | 1 + .../java/com/djrapitops/plan/PlanSponge.java | 1 + .../plan/command/PlanBungeeCommand.java | 68 +++++++++++---- .../djrapitops/plan/command/PlanCommand.java | 87 ++++++++++++++----- .../plan/system/info/BungeeInfoSystem.java | 3 +- .../plan/system/info/InfoSystem.java | 10 +-- .../plan/system/info/ServerInfoSystem.java | 3 +- .../connection/BungeeConnectionSystem.java | 7 +- .../info/connection/ConnectionSystem.java | 16 ++-- .../connection/ServerConnectionSystem.java | 7 +- .../system/info/request/InfoRequests.java | 6 ++ .../system/webserver/ResponseHandler.java | 27 ++++-- .../plan/system/webserver/WebServer.java | 3 +- 15 files changed, 177 insertions(+), 65 deletions(-) diff --git a/Plan/dependency-reduced-pom.xml b/Plan/dependency-reduced-pom.xml index c843fc0af..53ca4a42f 100644 --- a/Plan/dependency-reduced-pom.xml +++ b/Plan/dependency-reduced-pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.djrapitops Plan - 4.3.0-SNAPSHOT + 4.5.0-SNAPSHOT ${basedir}/src/main/java ${basedir}/src/test/java diff --git a/Plan/src/main/java/com/djrapitops/plan/Plan.java b/Plan/src/main/java/com/djrapitops/plan/Plan.java index 61011911d..4f19723da 100644 --- a/Plan/src/main/java/com/djrapitops/plan/Plan.java +++ b/Plan/src/main/java/com/djrapitops/plan/Plan.java @@ -90,6 +90,7 @@ class BukkitPlanModule { @Singleton @Named("mainCommand") CommandNode provideMainCommand(PlanCommand command) { + command.registerCommands(); return command; } } diff --git a/Plan/src/main/java/com/djrapitops/plan/PlanBungee.java b/Plan/src/main/java/com/djrapitops/plan/PlanBungee.java index 951f73361..eb8eda73b 100644 --- a/Plan/src/main/java/com/djrapitops/plan/PlanBungee.java +++ b/Plan/src/main/java/com/djrapitops/plan/PlanBungee.java @@ -72,6 +72,7 @@ class BungeePlanModule { @Singleton @Named("mainCommand") CommandNode provideMainCommand(PlanBungeeCommand command) { + command.registerCommands(); return command; } } diff --git a/Plan/src/main/java/com/djrapitops/plan/PlanSponge.java b/Plan/src/main/java/com/djrapitops/plan/PlanSponge.java index 78745cf4b..6a5f9bf8a 100644 --- a/Plan/src/main/java/com/djrapitops/plan/PlanSponge.java +++ b/Plan/src/main/java/com/djrapitops/plan/PlanSponge.java @@ -80,6 +80,7 @@ class SpongePlanModule { @Singleton @Named("mainCommand") CommandNode provideMainCommand(PlanCommand command) { + command.registerCommands(); return command; } } diff --git a/Plan/src/main/java/com/djrapitops/plan/command/PlanBungeeCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/PlanBungeeCommand.java index 7eb7fe2da..56c3f23e4 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/PlanBungeeCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/PlanBungeeCommand.java @@ -10,6 +10,7 @@ import com.djrapitops.plugin.command.ColorScheme; import com.djrapitops.plugin.command.CommandNode; import com.djrapitops.plugin.command.CommandType; import com.djrapitops.plugin.command.TreeCmdNode; +import dagger.Lazy; import javax.inject.Inject; @@ -23,26 +24,60 @@ import javax.inject.Inject; */ public class PlanBungeeCommand extends TreeCmdNode { + private final NetworkCommand networkCommand; + private final ListServersCommand listServersCommand; + private final ListPlayersCommand listPlayersCommand; + private final RegisterCommand registerCommand; + private final Lazy webUserCommand; + private final ManageConDebugCommand conDebugCommand; + private final ManageRawDataCommand rawDataCommand; + private final BungeeSetupToggleCommand setupToggleCommand; + private final ReloadCommand reloadCommand; + private final DisableCommand disableCommand; + + private boolean commandsRegistered; + @Inject - public PlanBungeeCommand(ColorScheme colorScheme, Locale locale, - // Group 1 - NetworkCommand networkCommand, - ListServersCommand listServersCommand, - ListPlayersCommand listPlayersCommand, - // Group 2 - RegisterCommand registerCommand, - WebUserCommand webUserCommand, - // Group 3 - ManageConDebugCommand conDebugCommand, - ManageRawDataCommand rawDataCommand, - BungeeSetupToggleCommand setupToggleCommand, - ReloadCommand reloadCommand, - DisableCommand disableCommand + public PlanBungeeCommand( + ColorScheme colorScheme, + Locale locale, + // Group 1 + NetworkCommand networkCommand, + ListServersCommand listServersCommand, + ListPlayersCommand listPlayersCommand, + // Group 2 + RegisterCommand registerCommand, + Lazy webUserCommand, + // Group 3 + ManageConDebugCommand conDebugCommand, + ManageRawDataCommand rawDataCommand, + BungeeSetupToggleCommand setupToggleCommand, + ReloadCommand reloadCommand, + DisableCommand disableCommand ) { super("planbungee", Permissions.MANAGE.getPermission(), CommandType.CONSOLE, null); - super.setColorScheme(colorScheme); + commandsRegistered = false; + + this.networkCommand = networkCommand; + this.listServersCommand = listServersCommand; + this.listPlayersCommand = listPlayersCommand; + this.registerCommand = registerCommand; + this.webUserCommand = webUserCommand; + this.conDebugCommand = conDebugCommand; + this.rawDataCommand = rawDataCommand; + this.setupToggleCommand = setupToggleCommand; + this.reloadCommand = reloadCommand; + this.disableCommand = disableCommand; + + setColorScheme(colorScheme); setInDepthHelp(locale.getArray(DeepHelpLang.PLAN)); + } + + public void registerCommands() { + if (commandsRegistered) { + return; + } CommandNode[] analyticsGroup = { networkCommand, @@ -51,7 +86,7 @@ public class PlanBungeeCommand extends TreeCmdNode { }; CommandNode[] webGroup = { registerCommand, - webUserCommand + webUserCommand.get() }; CommandNode[] manageGroup = { conDebugCommand, @@ -61,5 +96,6 @@ public class PlanBungeeCommand extends TreeCmdNode { disableCommand }; setNodeGroups(analyticsGroup, webGroup, manageGroup); + commandsRegistered = true; } } diff --git a/Plan/src/main/java/com/djrapitops/plan/command/PlanCommand.java b/Plan/src/main/java/com/djrapitops/plan/command/PlanCommand.java index 38f9feecd..29ce7fb3e 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/PlanCommand.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/PlanCommand.java @@ -9,6 +9,7 @@ import com.djrapitops.plugin.command.ColorScheme; import com.djrapitops.plugin.command.CommandNode; import com.djrapitops.plugin.command.CommandType; import com.djrapitops.plugin.command.TreeCmdNode; +import dagger.Lazy; import javax.inject.Inject; @@ -22,30 +23,73 @@ import javax.inject.Inject; */ public class PlanCommand extends TreeCmdNode { + private final PlanConfig config; + private final InspectCommand inspectCommand; + private final QInspectCommand qInspectCommand; + private final SearchCommand searchCommand; + private final ListPlayersCommand listPlayersCommand; + private final AnalyzeCommand analyzeCommand; + private final NetworkCommand networkCommand; + private final ListServersCommand listServersCommand; + private final Lazy webUserCommand; + private final RegisterCommand registerCommand; + private final InfoCommand infoCommand; + private final ReloadCommand reloadCommand; + private final Lazy manageCommand; + private final DevCommand devCommand; + + private boolean commandsRegistered; + @Inject - public PlanCommand(ColorScheme colorScheme, Locale locale, PlanConfig config, - // Group 1 - InspectCommand inspectCommand, - QInspectCommand qInspectCommand, - SearchCommand searchCommand, - ListPlayersCommand listPlayersCommand, - AnalyzeCommand analyzeCommand, - NetworkCommand networkCommand, - ListServersCommand listServersCommand, - // Group 2 - WebUserCommand webUserCommand, - RegisterCommand registerCommand, - // Group 3 - InfoCommand infoCommand, - ReloadCommand reloadCommand, - ManageCommand manageCommand, - DevCommand devCommand + public PlanCommand( + ColorScheme colorScheme, + Locale locale, + PlanConfig config, + // Group 1 + InspectCommand inspectCommand, + QInspectCommand qInspectCommand, + SearchCommand searchCommand, + ListPlayersCommand listPlayersCommand, + AnalyzeCommand analyzeCommand, + NetworkCommand networkCommand, + ListServersCommand listServersCommand, + // Group 2 + Lazy webUserCommand, + RegisterCommand registerCommand, + // Group 3 + InfoCommand infoCommand, + ReloadCommand reloadCommand, + Lazy manageCommand, + DevCommand devCommand ) { super("plan", "", CommandType.CONSOLE, null); - super.setDefaultCommand("inspect"); - super.setColorScheme(colorScheme); + commandsRegistered = false; + + this.config = config; + this.inspectCommand = inspectCommand; + this.qInspectCommand = qInspectCommand; + this.searchCommand = searchCommand; + this.listPlayersCommand = listPlayersCommand; + this.analyzeCommand = analyzeCommand; + this.networkCommand = networkCommand; + this.listServersCommand = listServersCommand; + this.webUserCommand = webUserCommand; + this.registerCommand = registerCommand; + this.infoCommand = infoCommand; + this.reloadCommand = reloadCommand; + this.manageCommand = manageCommand; + this.devCommand = devCommand; + + setDefaultCommand("inspect"); + setColorScheme(colorScheme); setInDepthHelp(locale.getArray(DeepHelpLang.PLAN)); + } + + public void registerCommands() { + if (commandsRegistered) { + return; + } CommandNode[] analyticsGroup = { inspectCommand, @@ -57,15 +101,16 @@ public class PlanCommand extends TreeCmdNode { listServersCommand }; CommandNode[] webGroup = { - webUserCommand, + webUserCommand.get(), registerCommand }; CommandNode[] manageGroup = { infoCommand, reloadCommand, - manageCommand, + manageCommand.get(), config.isTrue(Settings.DEV_MODE) ? devCommand : null }; setNodeGroups(analyticsGroup, webGroup, manageGroup); + commandsRegistered = true; } } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/info/BungeeInfoSystem.java b/Plan/src/main/java/com/djrapitops/plan/system/info/BungeeInfoSystem.java index e5135d2c6..c3d72a45e 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/info/BungeeInfoSystem.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/info/BungeeInfoSystem.java @@ -17,6 +17,7 @@ import com.djrapitops.plan.system.webserver.cache.PageId; import com.djrapitops.plan.system.webserver.cache.ResponseCache; import com.djrapitops.plan.system.webserver.response.ResponseFactory; import com.djrapitops.plugin.logging.console.PluginLogger; +import dagger.Lazy; import javax.inject.Inject; import javax.inject.Singleton; @@ -38,7 +39,7 @@ public class BungeeInfoSystem extends InfoSystem { ResponseFactory responseFactory, ConnectionSystem connectionSystem, ServerInfo serverInfo, - WebServer webServer, + Lazy webServer, PluginLogger logger ) { super(infoRequestFactory, connectionSystem, serverInfo, webServer, logger); diff --git a/Plan/src/main/java/com/djrapitops/plan/system/info/InfoSystem.java b/Plan/src/main/java/com/djrapitops/plan/system/info/InfoSystem.java index c79aa392b..99e871d6a 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/info/InfoSystem.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/info/InfoSystem.java @@ -4,7 +4,6 @@ */ package com.djrapitops.plan.system.info; -import com.djrapitops.plan.api.exceptions.EnableException; import com.djrapitops.plan.api.exceptions.connection.BadRequestException; import com.djrapitops.plan.api.exceptions.connection.ConnectionFailException; import com.djrapitops.plan.api.exceptions.connection.NoServersException; @@ -20,6 +19,7 @@ import com.djrapitops.plan.system.info.server.ServerInfo; import com.djrapitops.plan.system.webserver.WebServer; import com.djrapitops.plugin.api.Check; import com.djrapitops.plugin.logging.console.PluginLogger; +import dagger.Lazy; import java.util.UUID; @@ -37,14 +37,14 @@ public abstract class InfoSystem implements SubSystem { protected final InfoRequestFactory infoRequestFactory; protected final ConnectionSystem connectionSystem; protected final ServerInfo serverInfo; - protected final WebServer webServer; + protected final Lazy webServer; protected final PluginLogger logger; protected InfoSystem( InfoRequestFactory infoRequestFactory, ConnectionSystem connectionSystem, ServerInfo serverInfo, - WebServer webServer, + Lazy webServer, PluginLogger logger ) { this.infoRequestFactory = infoRequestFactory; @@ -125,7 +125,7 @@ public abstract class InfoSystem implements SubSystem { public abstract void runLocally(InfoRequest infoRequest) throws WebException; @Override - public void enable() throws EnableException { + public void enable() { connectionSystem.enable(); } @@ -160,7 +160,7 @@ public abstract class InfoSystem implements SubSystem { throw new BadRequestException("Method not available on Bungee."); } Server bungee = new Server(-1, null, "Bungee", addressToRequestServer, -1); - String addressOfThisServer = webServer.getAccessAddress(); + String addressOfThisServer = webServer.get().getAccessAddress(); connectionSystem.setSetupAllowed(true); connectionSystem.sendInfoRequest(infoRequestFactory.sendDBSettingsRequest(addressOfThisServer), bungee); diff --git a/Plan/src/main/java/com/djrapitops/plan/system/info/ServerInfoSystem.java b/Plan/src/main/java/com/djrapitops/plan/system/info/ServerInfoSystem.java index 802c35757..528104ea1 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/info/ServerInfoSystem.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/info/ServerInfoSystem.java @@ -14,6 +14,7 @@ import com.djrapitops.plan.system.info.server.ServerInfo; import com.djrapitops.plan.system.webserver.WebServer; import com.djrapitops.plan.utilities.html.HtmlStructure; import com.djrapitops.plugin.logging.console.PluginLogger; +import dagger.Lazy; import javax.inject.Inject; import javax.inject.Singleton; @@ -34,7 +35,7 @@ public class ServerInfoSystem extends InfoSystem { ConnectionSystem connectionSystem, ServerInfo serverInfo, InfoRequestFactory infoRequestFactory, - WebServer webServer, + Lazy webServer, PluginLogger logger ) { super(infoRequestFactory, connectionSystem, serverInfo, webServer, logger); diff --git a/Plan/src/main/java/com/djrapitops/plan/system/info/connection/BungeeConnectionSystem.java b/Plan/src/main/java/com/djrapitops/plan/system/info/connection/BungeeConnectionSystem.java index c2e07c41c..bf58d66de 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/info/connection/BungeeConnectionSystem.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/info/connection/BungeeConnectionSystem.java @@ -30,7 +30,7 @@ import java.util.UUID; public class BungeeConnectionSystem extends ConnectionSystem { private final Database database; - private final WebServer webServer; + private final Lazy webServer; private final ErrorHandler errorHandler; private final WebExceptionLogger webExceptionLogger; @@ -39,7 +39,7 @@ public class BungeeConnectionSystem extends ConnectionSystem { @Inject public BungeeConnectionSystem( Database database, - WebServer webServer, + Lazy webServer, ConnectionLog connectionLog, InfoRequests infoRequests, Lazy infoSystem, @@ -102,11 +102,12 @@ public class BungeeConnectionSystem extends ConnectionSystem { @Override public String getMainAddress() { - return webServer.getAccessAddress(); + return webServer.get().getAccessAddress(); } @Override public void enable() { + super.enable(); refreshServerMap(); } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/info/connection/ConnectionSystem.java b/Plan/src/main/java/com/djrapitops/plan/system/info/connection/ConnectionSystem.java index 3bc3ab9b5..d0daa77ae 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/info/connection/ConnectionSystem.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/info/connection/ConnectionSystem.java @@ -9,6 +9,7 @@ import com.djrapitops.plan.api.exceptions.connection.WebException; import com.djrapitops.plan.system.SubSystem; import com.djrapitops.plan.system.info.InfoSystem; import com.djrapitops.plan.system.info.request.InfoRequest; +import com.djrapitops.plan.system.info.request.InfoRequests; import com.djrapitops.plan.system.info.request.WideRequest; import com.djrapitops.plan.system.info.server.Server; import com.djrapitops.plan.system.info.server.ServerInfo; @@ -26,7 +27,7 @@ import java.util.*; public abstract class ConnectionSystem implements SubSystem { protected final ConnectionLog connectionLog; - protected final Map dataRequests; + protected final InfoRequests infoRequests; protected final Lazy infoSystem; protected final ServerInfo serverInfo; @@ -35,7 +36,7 @@ public abstract class ConnectionSystem implements SubSystem { public ConnectionSystem( ConnectionLog connectionLog, - Map dataRequests, + InfoRequests infoRequests, Lazy infoSystem, ServerInfo serverInfo ) { @@ -44,11 +45,11 @@ public abstract class ConnectionSystem implements SubSystem { this.serverInfo = serverInfo; setupAllowed = false; bukkitServers = new HashMap<>(); - this.dataRequests = dataRequests; + this.infoRequests = infoRequests; } public InfoRequest getInfoRequest(String name) { - return dataRequests.get(name.toLowerCase()); + return infoRequests.get(name.toLowerCase()); } public void setSetupAllowed(boolean setupAllowed) { @@ -89,10 +90,15 @@ public abstract class ConnectionSystem implements SubSystem { return new ArrayList<>(bukkitServers.values()); } + @Override + public void enable() { + infoRequests.initializeRequests(); + } + @Override public void disable() { setupAllowed = false; bukkitServers.clear(); - dataRequests.clear(); + infoRequests.clear(); } } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/info/connection/ServerConnectionSystem.java b/Plan/src/main/java/com/djrapitops/plan/system/info/connection/ServerConnectionSystem.java index 211ae1b7f..a8eeded62 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/info/connection/ServerConnectionSystem.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/info/connection/ServerConnectionSystem.java @@ -39,7 +39,7 @@ public class ServerConnectionSystem extends ConnectionSystem { private final PlanConfig config; private final Processing processing; private final Database database; - private final WebServer webServer; + private final Lazy webServer; private final PluginLogger pluginLogger; private final WebExceptionLogger webExceptionLogger; @@ -53,7 +53,7 @@ public class ServerConnectionSystem extends ConnectionSystem { PlanConfig config, Processing processing, Database database, - WebServer webServer, + Lazy webServer, ConnectionLog connectionLog, InfoRequests infoRequests, Lazy infoSystem, @@ -134,6 +134,7 @@ public class ServerConnectionSystem extends ConnectionSystem { @Override public void enable() { + super.enable(); refreshServerMap(); boolean usingBungeeWebServer = isServerAvailable(); @@ -143,7 +144,7 @@ public class ServerConnectionSystem extends ConnectionSystem { pluginLogger.log(L.INFO_COLOR, "§e" + locale.getString(PluginLang.ENABLE_NOTIFY_EMPTY_IP)); } if (usingBungeeWebServer && usingAlternativeIP) { - String webServerAddress = webServer.getAccessAddress(); + String webServerAddress = webServer.get().getAccessAddress(); pluginLogger.info(locale.getString(PluginLang.ENABLE_NOTIFY_ADDRESS_CONFIRMATION, webServerAddress)); } } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/info/request/InfoRequests.java b/Plan/src/main/java/com/djrapitops/plan/system/info/request/InfoRequests.java index d008bd952..5556249e1 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/info/request/InfoRequests.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/info/request/InfoRequests.java @@ -14,8 +14,14 @@ import java.util.HashMap; @Singleton public class InfoRequests extends HashMap { + private final InfoRequestHandlerFactory handlers; + @Inject public InfoRequests(InfoRequestHandlerFactory handlers) { + this.handlers = handlers; + } + + public void initializeRequests() { putRequest(handlers.cacheAnalysisPageRequest()); putRequest(handlers.cacheInspectPageRequest()); putRequest(handlers.cacheInspectPluginsTabRequest()); diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/ResponseHandler.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/ResponseHandler.java index 2adf93d3b..3504b4315 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/ResponseHandler.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/ResponseHandler.java @@ -18,6 +18,7 @@ import com.djrapitops.plan.system.webserver.response.ResponseFactory; import com.djrapitops.plan.system.webserver.response.errors.*; import com.djrapitops.plugin.logging.L; import com.djrapitops.plugin.logging.error.ErrorHandler; +import dagger.Lazy; import javax.inject.Inject; import javax.inject.Singleton; @@ -36,13 +37,19 @@ public class ResponseHandler extends TreePageHandler { private final ResponseFactory responseFactory; + private final DebugPageHandler debugPageHandler; + private final PlayersPageHandler playersPageHandler; + private final PlayerPageHandler playerPageHandler; + private final ServerPageHandler serverPageHandler; + private final InfoRequestPageHandler infoRequestPageHandler; private final ErrorHandler errorHandler; - private WebServer webServer; + private Lazy webServer; @Inject public ResponseHandler( ResponseFactory responseFactory, + Lazy webServer, DebugPageHandler debugPageHandler, PlayersPageHandler playersPageHandler, @@ -52,9 +59,17 @@ public class ResponseHandler extends TreePageHandler { ErrorHandler errorHandler ) { + this.webServer = webServer; this.responseFactory = responseFactory; + this.debugPageHandler = debugPageHandler; + this.playersPageHandler = playersPageHandler; + this.playerPageHandler = playerPageHandler; + this.serverPageHandler = serverPageHandler; + this.infoRequestPageHandler = infoRequestPageHandler; this.errorHandler = errorHandler; + } + public void registerPages() { registerPage("favicon.ico", responseFactory.redirectResponse("https://puu.sh/tK0KL/6aa2ba141b.ico"), 5); registerPage("debug", debugPageHandler); registerPage("players", playersPageHandler); @@ -63,7 +78,7 @@ public class ResponseHandler extends TreePageHandler { registerPage("network", serverPageHandler); registerPage("server", serverPageHandler); - if (webServer.isAuthRequired()) { + if (webServer.get().isAuthRequired()) { registerPage("", new RootPageHandler()); } else { registerPage("", responseFactory.redirectResponse("/server"), 5); @@ -114,11 +129,11 @@ public class ResponseHandler extends TreePageHandler { return ResponseCache.loadResponse(PageId.JS.of(targetString), () -> responseFactory.javaScriptResponse(targetString)); } boolean isNotInfoRequest = target.isEmpty() || !target.get(0).equals("info"); - boolean isAuthRequired = webServer.isAuthRequired() && isNotInfoRequest; + boolean isAuthRequired = webServer.get().isAuthRequired() && isNotInfoRequest; if (isAuthRequired) { authentication = request.getAuth(); if (!authentication.isPresent()) { - if (webServer.isUsingHTTPS()) { + if (webServer.get().isUsingHTTPS()) { return DefaultResponses.BASIC_AUTH.get(); } else { return DefaultResponses.FORBIDDEN.get(); @@ -136,8 +151,4 @@ public class ResponseHandler extends TreePageHandler { return DefaultResponses.FORBIDDEN.get(); } } - - public void setWebServer(WebServer webServer) { - this.webServer = webServer; - } } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/webserver/WebServer.java b/Plan/src/main/java/com/djrapitops/plan/system/webserver/WebServer.java index d192d807c..35e857d62 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/webserver/WebServer.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/webserver/WebServer.java @@ -68,7 +68,6 @@ public class WebServer implements SubSystem { this.config = config; this.requestHandler = requestHandler; - requestHandler.getResponseHandler().setWebServer(this); this.logger = logger; this.errorHandler = errorHandler; @@ -90,6 +89,8 @@ public class WebServer implements SubSystem { logger.error(locale.getString(PluginLang.WEB_SERVER_FAIL_PORT_BIND, port)); } } + + requestHandler.getResponseHandler().registerPages(); } /**