Fixes some things broken earlier:

- Fixed local InfoRequest handling
- Fixed /player/xxx pages causing internal exception
- Fixed /server/ pages remaining as "refreshing" page (Caused by Analysis being run before returning the info page, essentially overriding the finished analysis page)
- Fixed /folder/xxx pages not having javascript or css.
This commit is contained in:
Rsl1122 2018-01-26 11:56:29 +02:00
parent 311be89b03
commit a8b4caf58b
22 changed files with 51 additions and 34 deletions

View File

@ -59,7 +59,7 @@ public class AnalyzeCommand extends SubCommand {
Server server = getServer(args).orElseGet(ServerInfo::getServer);
UUID serverUUID = server.getUuid();
if (!ServerInfo.getServerUUID().equals(serverUUID) || !Analysis.isAnalysisBeingRun()) {
InfoSystem.getInstance().sendRequest(new GenerateAnalysisPageRequest(serverUUID));
InfoSystem.getInstance().generateAnalysisPage(serverUUID);
}
sendWebUserNotificationIfNecessary(sender);
sendLink(server, sender);

View File

@ -14,7 +14,9 @@ public class SQLErrorUtil {
String message = e.getMessage();
if (message.contains("Communications link failure")) {
return new FatalDBException("MySQL-connection failed", e);
} else if (message.contains("syntax")) {
} else if (message.contains("syntax")
|| message.contains("SQL Error or missing database")
|| message.contains("no such column")) {
return new FatalDBException("There is an error in SQL syntax", e);
} else if (message.contains("duplicate key")) {
return new FatalDBException("An SQL save method attempts to save duplicates.", e);

View File

@ -56,7 +56,7 @@ public class TransferTable extends Table {
columnContent +
") VALUES (" +
serverTable.statementSelectServerID + ", " +
"?, ?, ?, ?, ?)";
"?, ?, ?, ?)";
selectStatement = "SELECT * FROM " + tableName +
" WHERE " + columnInfoType + "= ?" +
@ -241,7 +241,7 @@ public class TransferTable extends Table {
@Override
public Optional<UUID> processResults(ResultSet set) throws SQLException {
if (set.next()) {
return Optional.of(UUID.fromString(set.getString(columnExtraVariables)));
return Optional.of(UUID.fromString(set.getString("s_uuid")));
}
return Optional.empty();
}

View File

@ -30,6 +30,7 @@ public class BukkitInfoSystem extends InfoSystem {
if (infoRequest instanceof CacheNetworkPageContentRequest) {
return;
}
infoRequest.placeDataToDatabase();
if (infoRequest instanceof InfoRequestWithVariables) {
infoRequest.handleRequest(((InfoRequestWithVariables) infoRequest).getVariables());
} else {

View File

@ -36,7 +36,7 @@ public class ConnectionIn {
private void checkAuthentication(Map<String, String> variables) throws WebException {
String sender = variables.get("sender");
NullCheck.check(sender, new BadRequestException("Sender ('sender') was not included."));
NullCheck.check(sender, new BadRequestException("Sender ('sender') variable not supplied in the request."));
UUID serverUUID = UUID.fromString(sender);
try {
@ -44,7 +44,7 @@ public class ConnectionIn {
if (infoRequest instanceof RequestSetupRequest) {
return;
}
throw new UnauthorizedServerException(sender + "Sender was not found from database");
throw new UnauthorizedServerException(sender + " (Sender) was not found from database");
}
} catch (DBException e) {
throw new TransferDatabaseException(e);

View File

@ -10,7 +10,7 @@ import com.djrapitops.plan.api.exceptions.database.DBException;
import com.djrapitops.plan.system.database.databases.Database;
import com.djrapitops.plan.system.processing.Processor;
import com.djrapitops.plan.system.settings.Settings;
import com.djrapitops.plan.system.webserver.pages.DefaultResponses;
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
import com.djrapitops.plan.system.webserver.response.Response;
import com.djrapitops.plan.system.webserver.response.cache.PageId;
import com.djrapitops.plan.system.webserver.response.cache.ResponseCache;

View File

@ -10,7 +10,7 @@ import com.djrapitops.plan.api.exceptions.database.DBException;
import com.djrapitops.plan.system.database.databases.Database;
import com.djrapitops.plan.system.processing.Processor;
import com.djrapitops.plan.system.settings.Settings;
import com.djrapitops.plan.system.webserver.pages.DefaultResponses;
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
import com.djrapitops.plan.system.webserver.response.Response;
import com.djrapitops.plan.system.webserver.response.cache.PageId;
import com.djrapitops.plan.system.webserver.response.cache.ResponseCache;

View File

@ -9,7 +9,7 @@ import com.djrapitops.plan.api.exceptions.connection.TransferDatabaseException;
import com.djrapitops.plan.api.exceptions.connection.WebException;
import com.djrapitops.plan.api.exceptions.database.DBException;
import com.djrapitops.plan.system.database.databases.Database;
import com.djrapitops.plan.system.webserver.pages.DefaultResponses;
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
import com.djrapitops.plan.system.webserver.response.Response;
import com.djrapitops.plan.system.webserver.response.cache.PageId;
import com.djrapitops.plan.system.webserver.response.cache.ResponseCache;
@ -65,7 +65,7 @@ public class CacheInspectPluginsTabRequest extends InfoRequestWithVariables impl
// Available variables: sender, player
String player = variables.get("player");
NullCheck.check(player, new BadRequestException("Player UUID 'player' variable not supplied."));
NullCheck.check(player, new BadRequestException("Player UUID 'player' variable not supplied in the request."));
UUID uuid = UUID.fromString(player);

View File

@ -9,7 +9,7 @@ import com.djrapitops.plan.api.exceptions.connection.WebException;
import com.djrapitops.plan.api.exceptions.database.DBException;
import com.djrapitops.plan.system.database.databases.Database;
import com.djrapitops.plan.system.info.InfoSystem;
import com.djrapitops.plan.system.webserver.pages.DefaultResponses;
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
import com.djrapitops.plan.system.webserver.response.Response;
import com.djrapitops.plan.system.webserver.response.cache.PageId;
import com.djrapitops.plan.system.webserver.response.cache.ResponseCache;

View File

@ -12,7 +12,7 @@ import com.djrapitops.plan.system.cache.DataCache;
import com.djrapitops.plan.system.database.databases.Database;
import com.djrapitops.plan.system.info.InfoSystem;
import com.djrapitops.plan.system.info.server.ServerInfo;
import com.djrapitops.plan.system.webserver.pages.DefaultResponses;
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
import com.djrapitops.plan.system.webserver.pages.parsing.AnalysisPage;
import com.djrapitops.plan.system.webserver.response.Response;
import com.djrapitops.plan.system.webserver.response.pages.AnalysisPageResponse;
@ -53,7 +53,7 @@ public class GenerateAnalysisPageRequest extends InfoRequestWithVariables implem
// Variables available: sender, server
String server = variables.get("server");
NullCheck.check(server, new BadRequestException("Server UUID 'server' variable not supplied."));
NullCheck.check(server, new BadRequestException("Server UUID 'server' variable not supplied in the request."));
UUID serverUUID = UUID.fromString(server);
if (!ServerInfo.getServerUUID().equals(serverUUID)) {

View File

@ -11,7 +11,7 @@ import com.djrapitops.plan.api.exceptions.connection.WebException;
import com.djrapitops.plan.api.exceptions.connection.WebFailException;
import com.djrapitops.plan.api.exceptions.database.DBException;
import com.djrapitops.plan.system.info.InfoSystem;
import com.djrapitops.plan.system.webserver.pages.DefaultResponses;
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
import com.djrapitops.plan.system.webserver.pages.parsing.InspectPage;
import com.djrapitops.plan.system.webserver.response.Response;
import com.djrapitops.plan.utilities.NullCheck;
@ -53,7 +53,7 @@ public class GenerateInspectPageRequest extends InfoRequestWithVariables impleme
// Available variables: sender, player
String player = variables.get("player");
NullCheck.check(player, new BadRequestException("Player UUID 'player' variable not supplied."));
NullCheck.check(player, new BadRequestException("Player UUID 'player' variable not supplied in the request."));
UUID uuid = UUID.fromString(player);
String html = getHtml(uuid);

View File

@ -7,7 +7,7 @@ package com.djrapitops.plan.system.info.request;
import com.djrapitops.plan.api.exceptions.connection.BadRequestException;
import com.djrapitops.plan.api.exceptions.connection.WebException;
import com.djrapitops.plan.system.info.InfoSystem;
import com.djrapitops.plan.system.webserver.pages.DefaultResponses;
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
import com.djrapitops.plan.system.webserver.response.Response;
import com.djrapitops.plan.system.webserver.response.cache.PageId;
import com.djrapitops.plan.system.webserver.response.cache.ResponseCache;
@ -51,7 +51,7 @@ public class GenerateInspectPluginsTabRequest extends InfoRequestWithVariables i
// Available variables: sender, player
String player = variables.get("player");
NullCheck.check(player, new BadRequestException("Player UUID 'player' variable not supplied."));
NullCheck.check(player, new BadRequestException("Player UUID 'player' variable not supplied in the request."));
UUID uuid = UUID.fromString(player);
String[] navAndhtml = getNavAndHtml(uuid);

View File

@ -120,15 +120,14 @@ public class ResponseHandler extends TreePageHandler {
}
}
}
if (targetString.endsWith(".css")) {
return ResponseCache.loadResponse(PageId.CSS.of(targetString), () -> new CSSResponse(targetString));
}
if (targetString.endsWith(".js")) {
return ResponseCache.loadResponse(PageId.JS.of(targetString), () -> new JavaScriptResponse(targetString));
}
PageHandler pageHandler = getPageHandler(target);
if (pageHandler == null) {
if (targetString.endsWith(".css")) {
return ResponseCache.loadResponse(PageId.CSS.of(targetString), () -> new CSSResponse(targetString));
}
if (targetString.endsWith(".js")) {
return ResponseCache.loadResponse(PageId.JS.of(targetString), () -> new JavaScriptResponse(targetString));
}
return DefaultResponses.NOT_FOUND.get();
} else {
if (authentication.isPresent() && pageHandler.isAuthorized(authentication.get(), target)) {

View File

@ -10,6 +10,7 @@ import com.djrapitops.plan.system.info.connection.ConnectionIn;
import com.djrapitops.plan.system.info.connection.ConnectionSystem;
import com.djrapitops.plan.system.info.request.InfoRequest;
import com.djrapitops.plan.system.webserver.Request;
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
import com.djrapitops.plan.system.webserver.response.Response;
import com.djrapitops.plan.utilities.NullCheck;

View File

@ -5,6 +5,7 @@
package com.djrapitops.plan.system.webserver.pages;
import com.djrapitops.plan.api.exceptions.WebUserAuthException;
import com.djrapitops.plan.api.exceptions.connection.InternalErrorException;
import com.djrapitops.plan.api.exceptions.connection.WebException;
import com.djrapitops.plan.api.exceptions.database.DBException;
import com.djrapitops.plan.data.WebUser;
@ -12,6 +13,7 @@ import com.djrapitops.plan.system.database.databases.Database;
import com.djrapitops.plan.system.info.InfoSystem;
import com.djrapitops.plan.system.webserver.Request;
import com.djrapitops.plan.system.webserver.auth.Authentication;
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
import com.djrapitops.plan.system.webserver.response.Response;
import com.djrapitops.plan.system.webserver.response.cache.PageId;
import com.djrapitops.plan.system.webserver.response.cache.ResponseCache;
@ -54,6 +56,7 @@ public class PlayerPageHandler extends PageHandler {
}
} catch (DBException e) {
Log.toLog(this.getClass().getName(), e);
throw new InternalErrorException("Analysis", e);
}
return notFound("Player has not played on this server.");
}

View File

@ -10,6 +10,7 @@ import com.djrapitops.plan.data.WebUser;
import com.djrapitops.plan.system.webserver.Request;
import com.djrapitops.plan.system.webserver.ResponseHandler;
import com.djrapitops.plan.system.webserver.auth.Authentication;
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
import com.djrapitops.plan.system.webserver.response.Response;
import com.djrapitops.plan.system.webserver.response.errors.InternalErrorResponse;
import com.djrapitops.plugin.api.utility.log.Log;

View File

@ -30,7 +30,12 @@ public class ServerPageHandler extends PageHandler {
@Override
public Response getResponse(Request request, List<String> target) {
UUID serverUUID = getServerUUID(target);
return ResponseCache.loadResponse(PageId.SERVER.of(serverUUID), AnalysisPageResponse::refreshNow);
Response response = ResponseCache.loadResponse(PageId.SERVER.of(serverUUID));
if (response != null) {
return response;
} else {
return AnalysisPageResponse.refreshNow();
}
}
private UUID getServerUUID(List<String> target) {

View File

@ -8,6 +8,7 @@ import com.djrapitops.plan.api.exceptions.WebUserAuthException;
import com.djrapitops.plan.api.exceptions.connection.WebException;
import com.djrapitops.plan.system.webserver.Request;
import com.djrapitops.plan.system.webserver.auth.Authentication;
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
import com.djrapitops.plan.system.webserver.response.Response;
import java.util.HashMap;

View File

@ -2,7 +2,7 @@
* 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.system.webserver.pages;
package com.djrapitops.plan.system.webserver.response;
import com.djrapitops.plan.system.webserver.response.PromptAuthorizationResponse;
import com.djrapitops.plan.system.webserver.response.Response;

View File

@ -16,7 +16,8 @@ public class NotFoundResponse extends ErrorResponse {
}
public NotFoundResponse(String msg) {
this();
super.setHeader("HTTP/1.1 404 Not Found");
super.setTitle(Html.FONT_AWESOME_ICON.parse("map-signs") + " 404 Not Found");
super.setParagraph(msg);
super.replacePlaceholders();
}

View File

@ -2,6 +2,7 @@ package com.djrapitops.plan.system.webserver.response.pages;
import com.djrapitops.plan.api.exceptions.connection.WebException;
import com.djrapitops.plan.system.info.InfoSystem;
import com.djrapitops.plan.system.processing.Processor;
import com.djrapitops.plan.system.webserver.response.Response;
import com.djrapitops.plan.system.webserver.response.errors.ErrorResponse;
import com.djrapitops.plugin.api.utility.log.Log;
@ -13,12 +14,14 @@ import com.djrapitops.plugin.api.utility.log.Log;
public class AnalysisPageResponse extends Response {
public static AnalysisPageResponse refreshNow() {
try {
InfoSystem.getInstance().generateAnalysisPageOfThisServer();
} catch (WebException e) {
// TODO Exception handling
Log.toLog(AnalysisPageResponse.class, e);
}
Processor.queue(() -> {
try {
InfoSystem.getInstance().generateAnalysisPageOfThisServer();
} catch (WebException e) {
// TODO Exception handling
Log.toLog(AnalysisPageResponse.class, e);
}
});
return new AnalysisPageResponse(getRefreshingHtml());
}

View File

@ -10,7 +10,7 @@ import com.djrapitops.plan.system.info.InfoSystem;
import com.djrapitops.plan.system.info.connection.WebExceptionLogger;
import com.djrapitops.plan.system.info.request.GenerateAnalysisPageRequest;
import com.djrapitops.plan.system.info.server.ServerInfo;
import com.djrapitops.plan.system.webserver.pages.DefaultResponses;
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
import com.djrapitops.plan.system.webserver.response.cache.PageId;
import com.djrapitops.plan.system.webserver.response.cache.ResponseCache;
import com.djrapitops.plan.system.webserver.response.pages.AnalysisPageResponse;