Fixed RunnableFactory calls, Fixed StackUtils not finding WebServer thread calls, Removed Restart trigger after 10 connection fails

This commit is contained in:
Rsl1122 2017-11-07 20:18:22 +02:00
parent 3c8ec7c8f3
commit 0c93bd847c
27 changed files with 56 additions and 64 deletions

View File

@ -169,7 +169,7 @@ public class PlanBungee extends BungeePlugin implements IPlan {
@Override
public String getVersion() {
return null;
return super.getDescription().getVersion();
}
@Override

View File

@ -6,6 +6,7 @@ import com.djrapitops.plugin.command.CommandUtils;
import com.djrapitops.plugin.command.ISender;
import com.djrapitops.plugin.command.SubCommand;
import com.djrapitops.plugin.task.AbsRunnable;
import com.djrapitops.plugin.task.RunnableFactory;
import com.djrapitops.plugin.utilities.Verify;
import main.java.com.djrapitops.plan.Permissions;
import main.java.com.djrapitops.plan.Plan;
@ -110,7 +111,7 @@ public class AnalyzeCommand extends SubCommand {
sender.sendMessage(Locale.get(Msg.CMD_INFO_FETCH_DATA).toString());
if (plugin.getInfoManager().isAuthRequired() && CommandUtils.isPlayer(sender)) {
plugin.getRunnableFactory().createNew(new AbsRunnable("WebUser exist check task") {
RunnableFactory.createNew(new AbsRunnable("WebUser exist check task") {
@Override
public void run() {
try {

View File

@ -6,6 +6,7 @@ import com.djrapitops.plugin.command.CommandUtils;
import com.djrapitops.plugin.command.ISender;
import com.djrapitops.plugin.command.SubCommand;
import com.djrapitops.plugin.task.AbsRunnable;
import com.djrapitops.plugin.task.RunnableFactory;
import com.djrapitops.plugin.utilities.Verify;
import main.java.com.djrapitops.plan.Permissions;
import main.java.com.djrapitops.plan.Plan;
@ -61,7 +62,7 @@ public class InspectCommand extends SubCommand {
}
private void runInspectTask(String playerName, ISender sender) {
plugin.getRunnableFactory().createNew(new AbsRunnable("InspectTask") {
RunnableFactory.createNew(new AbsRunnable("InspectTask") {
@Override
public void run() {
try {

View File

@ -25,8 +25,6 @@ import java.util.List;
*/
public class SearchCommand extends SubCommand {
private final Plan plugin;
/**
* Class Constructor.
*
@ -38,7 +36,6 @@ public class SearchCommand extends SubCommand {
Permissions.SEARCH.getPermission(),
Locale.get(Msg.CMD_USG_SEARCH).toString(),
"<part of playername>");
this.plugin = plugin;
}

View File

@ -5,6 +5,7 @@ import com.djrapitops.plugin.command.CommandType;
import com.djrapitops.plugin.command.ISender;
import com.djrapitops.plugin.command.SubCommand;
import com.djrapitops.plugin.task.AbsRunnable;
import com.djrapitops.plugin.task.RunnableFactory;
import com.djrapitops.plugin.utilities.Verify;
import main.java.com.djrapitops.plan.Permissions;
import main.java.com.djrapitops.plan.Plan;
@ -71,7 +72,7 @@ public class ManageBackupCommand extends SubCommand {
}
private void runBackupTask(ISender sender, String[] args, final Database database) {
plugin.getRunnableFactory().createNew(new AbsRunnable("BackupTask") {
RunnableFactory.createNew(new AbsRunnable("BackupTask") {
@Override
public void run() {
try {

View File

@ -5,6 +5,7 @@ import com.djrapitops.plugin.command.CommandType;
import com.djrapitops.plugin.command.ISender;
import com.djrapitops.plugin.command.SubCommand;
import com.djrapitops.plugin.task.AbsRunnable;
import com.djrapitops.plugin.task.RunnableFactory;
import com.djrapitops.plugin.utilities.Verify;
import main.java.com.djrapitops.plan.Permissions;
import main.java.com.djrapitops.plan.Plan;
@ -79,7 +80,7 @@ public class ManageClearCommand extends SubCommand {
}
private void runClearTask(ISender sender, Database database) {
plugin.getRunnableFactory().createNew(new AbsRunnable("DBClearTask") {
RunnableFactory.createNew(new AbsRunnable("DBClearTask") {
@Override
public void run() {
try {

View File

@ -4,6 +4,7 @@ import com.djrapitops.plugin.command.CommandType;
import com.djrapitops.plugin.command.ISender;
import com.djrapitops.plugin.command.SubCommand;
import com.djrapitops.plugin.task.AbsRunnable;
import com.djrapitops.plugin.task.RunnableFactory;
import main.java.com.djrapitops.plan.Permissions;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.locale.Locale;
@ -47,7 +48,7 @@ public class ManageDumpCommand extends SubCommand {
}
private void dump(ISender sender) {
plugin.getRunnableFactory().createNew(new AbsRunnable("DumpTask") {
RunnableFactory.createNew(new AbsRunnable("DumpTask") {
@Override
public void run() {
try {

View File

@ -1,10 +1,10 @@
package main.java.com.djrapitops.plan.command.commands.manage;
import com.djrapitops.plugin.api.utility.log.Log;
import com.djrapitops.plugin.command.CommandType;
import com.djrapitops.plugin.command.ISender;
import com.djrapitops.plugin.command.SubCommand;
import com.djrapitops.plugin.task.AbsRunnable;
import com.djrapitops.plugin.task.RunnableFactory;
import main.java.com.djrapitops.plan.Permissions;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.locale.Locale;
@ -12,8 +12,6 @@ import main.java.com.djrapitops.plan.locale.Msg;
import main.java.com.djrapitops.plan.systems.info.ImporterManager;
import main.java.com.djrapitops.plan.utilities.Condition;
import java.sql.SQLException;
/**
* This manage subcommand is used to import data from 3rd party plugins.
* <p>
@ -58,13 +56,11 @@ public class ManageImportCommand extends SubCommand {
}
private void runImport(String importer) {
plugin.getRunnableFactory().createNew("Import", new AbsRunnable() {
RunnableFactory.createNew("Import", new AbsRunnable() {
@Override
public void run() {
try {
ImporterManager.getImporter(importer).processImport();
} catch (SQLException e) {
Log.toLog(this.getClass().getName(), e);
} finally {
this.cancel();
}

View File

@ -5,6 +5,7 @@ import com.djrapitops.plugin.command.CommandType;
import com.djrapitops.plugin.command.ISender;
import com.djrapitops.plugin.command.SubCommand;
import com.djrapitops.plugin.task.AbsRunnable;
import com.djrapitops.plugin.task.RunnableFactory;
import com.djrapitops.plugin.utilities.Verify;
import main.java.com.djrapitops.plan.Permissions;
import main.java.com.djrapitops.plan.Plan;
@ -81,7 +82,7 @@ public class ManageMoveCommand extends SubCommand {
}
private void runMoveTask(final Database fromDatabase, final Database toDatabase, ISender sender) {
plugin.getRunnableFactory().createNew(new AbsRunnable("DBMoveTask") {
RunnableFactory.createNew(new AbsRunnable("DBMoveTask") {
@Override
public void run() {
try {

View File

@ -5,6 +5,7 @@ import com.djrapitops.plugin.command.CommandType;
import com.djrapitops.plugin.command.ISender;
import com.djrapitops.plugin.command.SubCommand;
import com.djrapitops.plugin.task.AbsRunnable;
import com.djrapitops.plugin.task.RunnableFactory;
import com.djrapitops.plugin.utilities.Verify;
import main.java.com.djrapitops.plan.Permissions;
import main.java.com.djrapitops.plan.Plan;
@ -67,7 +68,7 @@ public class ManageRemoveCommand extends SubCommand {
}
private void runRemoveTask(String playerName, ISender sender, String[] args) {
plugin.getRunnableFactory().createNew(new AbsRunnable("DBRemoveTask " + playerName) {
RunnableFactory.createNew(new AbsRunnable("DBRemoveTask " + playerName) {
@Override
public void run() {
try {

View File

@ -5,6 +5,7 @@ import com.djrapitops.plugin.command.CommandType;
import com.djrapitops.plugin.command.ISender;
import com.djrapitops.plugin.command.SubCommand;
import com.djrapitops.plugin.task.AbsRunnable;
import com.djrapitops.plugin.task.RunnableFactory;
import com.djrapitops.plugin.utilities.Verify;
import main.java.com.djrapitops.plan.Permissions;
import main.java.com.djrapitops.plan.Plan;
@ -70,7 +71,7 @@ public class ManageRestoreCommand extends SubCommand {
}
private void runRestoreTask(String[] args, ISender sender, final Database database) {
plugin.getRunnableFactory().createNew(new AbsRunnable("RestoreTask") {
RunnableFactory.createNew(new AbsRunnable("RestoreTask") {
@Override
public void run() {
try {

View File

@ -74,7 +74,7 @@ public class ActionsTable extends UserIDTable {
.toString());
}
public void alterTableV12() throws SQLException {
public void alterTableV12() {
if (usingMySQL) {
executeUnsafe("ALTER TABLE " + tableName + " MODIFY " + columnAdditionalInfo + " VARCHAR(300)");
}

View File

@ -50,7 +50,7 @@ public class IPsTable extends UserIDTable {
);
}
public void alterTableV12() throws SQLException {
public void alterTableV12() {
if (usingMySQL) {
executeUnsafe("ALTER TABLE " + tableName + " MODIFY " + columnIP + " VARCHAR(39) NOT NULL");
}

View File

@ -184,7 +184,7 @@ public abstract class Table {
}
protected boolean execute(ExecStatement statement) throws SQLException {
boolean updatedSomething = false;
boolean updatedSomething;
Connection connection = null;
try {
connection = getConnection();

View File

@ -134,21 +134,7 @@ public class BukkitServerInfoManager {
}
public void markConnectionFail() {
int timesFailed = serverInfoFile.markConnectionFail();
if (timesFailed == -1) {
return;
}
if (timesFailed >= 10) {
try {
serverInfoFile.saveInfo(serverInfo, new ServerInfo(-1, null, "Bungee", "", -1));
Log.info("----------------------------------");
Log.info("Bungee connection has failed 10 times in a row, assuming Bungee uninstalled - Restarting Plan..");
Log.info("----------------------------------");
plugin.reloadPlugin(true);
} catch (IOException e) {
Log.toLog(this.getClass().getName(), e);
}
}
serverInfoFile.markConnectionFail();
}
public void resetConnectionFails() {

View File

@ -7,6 +7,7 @@ package main.java.com.djrapitops.plan.systems.info.server;
import com.djrapitops.plugin.api.TimeAmount;
import com.djrapitops.plugin.api.utility.log.Log;
import com.djrapitops.plugin.task.AbsRunnable;
import com.djrapitops.plugin.task.RunnableFactory;
import main.java.com.djrapitops.plan.PlanBungee;
import main.java.com.djrapitops.plan.ServerVariableHolder;
import main.java.com.djrapitops.plan.api.exceptions.PlanEnableException;
@ -35,7 +36,7 @@ public class BungeeServerInfoManager {
private final Set<UUID> onlineServers;
private ServerTable serverTable;
public BungeeServerInfoManager(PlanBungee plugin) throws PlanEnableException {
public BungeeServerInfoManager(PlanBungee plugin) {
this.plugin = plugin;
this.db = plugin.getDB();
serverTable = db.getServerTable();
@ -148,7 +149,7 @@ public class BungeeServerInfoManager {
Optional<ServerInfo> serverInfo = db.getServerTable().getServerInfo(serverUUID);
serverInfo.ifPresent(server -> {
Log.info("Server Info found from DB: " + server.getName());
plugin.getRunnableFactory().createNew("BukkitConnectionTask: " + server.getName(), new AbsRunnable() {
RunnableFactory.createNew("BukkitConnectionTask: " + server.getName(), new AbsRunnable() {
@Override
public void run() {
attemptConnection(server);

View File

@ -37,7 +37,7 @@ public abstract class Importer {
public abstract List<UserImportData> getUserImportData();
public final void processImport() throws SQLException {
public final void processImport() {
String benchmarkName = "Import processing";
String serverBenchmarkName = "Server Data processing";
String userDataBenchmarkName = "User Data processing";
@ -75,7 +75,7 @@ public abstract class Importer {
Benchmark.stop(benchmarkName);
}
private void processServerData() throws SQLException {
private void processServerData() {
String benchmarkName = "Processing Server Data";
String getDataBenchmarkName = "Getting Server Data";
String insertDataIntoDatabaseBenchmarkName = "Insert Server Data into Database";

View File

@ -1,9 +1,6 @@
package main.java.com.djrapitops.plan.systems.queue;
import com.djrapitops.plugin.api.Check;
import com.djrapitops.plugin.task.RunnableFactory;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.PlanBungee;
/**
* Abstract representation of a queue setup.
@ -36,12 +33,4 @@ public abstract class Setup<T> {
consumer.stop();
}
}
private RunnableFactory getRunnableFactory() {
if (Check.isBukkitAvailable()) {
return Plan.getInstance().getRunnableFactory();
} else {
return PlanBungee.getInstance().getRunnableFactory();
}
}
}

View File

@ -8,6 +8,7 @@ import com.djrapitops.plugin.api.utility.log.Log;
import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import main.java.com.djrapitops.plan.Settings;
import main.java.com.djrapitops.plan.systems.webserver.response.Response;
import main.java.com.djrapitops.plan.systems.webserver.webapi.WebAPIManager;
@ -32,6 +33,9 @@ public class APIRequestHandler implements HttpHandler {
Request request = new Request(exchange);
try {
Response response = responseHandler.getAPIResponse(request);
if (Settings.DEV_MODE.isTrue()) {
Log.debug(request.toString(), response.toString());
}
response.setResponseHeaders(responseHeaders);
response.send(exchange);
} catch (Exception e) {

View File

@ -4,9 +4,11 @@
*/
package main.java.com.djrapitops.plan.systems.webserver;
import com.djrapitops.plugin.api.utility.log.Log;
import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import main.java.com.djrapitops.plan.Settings;
import main.java.com.djrapitops.plan.api.IPlan;
import main.java.com.djrapitops.plan.systems.webserver.response.PromptAuthorizationResponse;
import main.java.com.djrapitops.plan.systems.webserver.response.Response;
@ -14,13 +16,12 @@ import main.java.com.djrapitops.plan.systems.webserver.response.Response;
import java.io.IOException;
/**
* HttpHandler for webserver request management.
* HttpHandler for WebServer request management.
*
* @author Rsl1122
*/
public class RequestHandler implements HttpHandler {
private final ResponseHandler responseHandler;
RequestHandler(IPlan plugin, WebServer webServer) {
@ -34,11 +35,18 @@ public class RequestHandler implements HttpHandler {
try {
Response response = responseHandler.getResponse(request);
if (Settings.DEV_MODE.isTrue()) {
Log.debug(request.toString(), response.toString());
}
if (response instanceof PromptAuthorizationResponse) {
responseHeaders.set("WWW-Authenticate", "Basic realm=\"/\";");
}
response.setResponseHeaders(responseHeaders);
response.send(exchange);
} catch (IOException e) {
if (Settings.DEV_MODE.isTrue()) {
Log.toLog(this.getClass().getName(), e);
}
} finally {
exchange.close();
}

View File

@ -115,7 +115,7 @@ public class ResponseHandler extends APIResponseHandler {
+ "This user has permission level of " + permLevel));
}
private boolean isAuthorized(int requiredPermLevel, int permLevel) throws Exception {
private boolean isAuthorized(int requiredPermLevel, int permLevel) {
return permLevel <= requiredPermLevel;
}

View File

@ -1,5 +1,6 @@
package main.java.com.djrapitops.plan.systems.webserver;
import com.djrapitops.plugin.StaticHolder;
import com.djrapitops.plugin.api.utility.log.Log;
import com.sun.net.httpserver.HttpServer;
import com.sun.net.httpserver.HttpsConfigurator;
@ -48,6 +49,9 @@ public class WebServer {
this.port = Settings.WEBSERVER_PORT.getNumber();
webAPI = new WebAPIManager();
registerWebAPIs();
StaticHolder.saveInstance(APIRequestHandler.class, plugin.getClass());
StaticHolder.saveInstance(RequestHandler.class, plugin.getClass());
}
private void registerWebAPIs() {

View File

@ -1,6 +1,7 @@
package main.java.com.djrapitops.plan.systems.webserver.response;
import com.djrapitops.plugin.task.AbsRunnable;
import com.djrapitops.plugin.task.RunnableFactory;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.AnalysisData;
import main.java.com.djrapitops.plan.systems.info.BukkitInformationManager;
@ -24,7 +25,7 @@ public class AnalysisPageResponse extends Response {
if (informationManager instanceof BukkitInformationManager) {
AnalysisData analysisData = ((BukkitInformationManager) informationManager).getAnalysisData();
if (analysisData == null) {
Plan.getInstance().getRunnableFactory().createNew("OnRequestAnalysisRefreshTask", new AbsRunnable() {
RunnableFactory.createNew("OnRequestAnalysisRefreshTask", new AbsRunnable() {
@Override
public void run() {
informationManager.refreshAnalysis(Plan.getServerUUID());

View File

@ -6,6 +6,7 @@ package main.java.com.djrapitops.plan.systems.webserver.webapi;
import com.djrapitops.plugin.api.utility.log.Log;
import com.djrapitops.plugin.utilities.Verify;
import main.java.com.djrapitops.plan.Settings;
import main.java.com.djrapitops.plan.api.IPlan;
import main.java.com.djrapitops.plan.api.exceptions.WebAPIConnectionFailException;
import main.java.com.djrapitops.plan.api.exceptions.WebAPIException;
@ -103,9 +104,6 @@ public abstract class WebAPI {
connection.setRequestProperty("Content-Length", Integer.toString(parameters.length()));
byte[] toSend = parameters.getBytes();
int length = toSend.length;
// connection.setRequestProperty("Content-Length", Integer.toString(length));
connection.setUseCaches(false);
Log.debug("Sending WebAPI Request: " + this.getClass().getSimpleName() + " to " + address);
@ -129,6 +127,9 @@ public abstract class WebAPI {
} catch (SocketTimeoutException e) {
throw new WebAPIConnectionFailException("Connection timed out after 10 seconds.", e);
} catch (NoSuchAlgorithmException | KeyManagementException | IOException e) {
if (Settings.DEV_MODE.isTrue()) {
Log.toLog(this.getClass().getName(), e);
}
throw new WebAPIConnectionFailException("API connection failed. address: " + address, e);
}
}

View File

@ -111,7 +111,7 @@ public class ExportUtility {
// }
}
public static void writeAnalysisHtml(AnalysisData analysisData, File serverFolder) throws IOException {
public static void writeAnalysisHtml(AnalysisData analysisData, File serverFolder) {
if (!Settings.ANALYSIS_EXPORT.isTrue()) {
return;
}

View File

@ -27,9 +27,7 @@ public class FileUtil {
StringBuilder html = new StringBuilder();
IPlan plugin = MiscUtils.getIPlan();
lines(MiscUtils.getIPlan(), new File(plugin.getDataFolder(), fileName), fileName)
.forEach(line -> {
html.append(line).append("\r\n");
});
.forEach(line -> html.append(line).append("\r\n"));
return html.toString();
}

View File

@ -16,7 +16,6 @@ import main.java.com.djrapitops.plan.utilities.html.structure.SessionTabStructur
import main.java.com.djrapitops.plan.utilities.html.tables.SessionsTableCreator;
import org.apache.commons.lang3.text.StrSubstitutor;
import java.io.FileNotFoundException;
import java.io.Serializable;
import java.util.*;
@ -92,7 +91,7 @@ public class HtmlStructure {
return builder.toString();
}
public static String[] createSessionsTabContentInspectPage(Map<String, List<Session>> sessions, List<Session> allSessions, UUID uuid) throws FileNotFoundException {
public static String[] createSessionsTabContentInspectPage(Map<String, List<Session>> sessions, List<Session> allSessions, UUID uuid) {
Map<UUID, Map<String, List<Session>>> map = new HashMap<>();
map.put(uuid, sessions);
return SessionTabStructureCreator.creteStructure(map, allSessions, false);