From 8e0d833f3f9d4887c9434e1bebc6d91ba28990af Mon Sep 17 00:00:00 2001 From: Risto Lahtela <24460436+AuroraLS3@users.noreply.github.com> Date: Sun, 21 Mar 2021 13:43:41 +0200 Subject: [PATCH] Made filters more error-resilient for the future --- .../resolver/json/FiltersJSONResolver.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/resolver/json/FiltersJSONResolver.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/resolver/json/FiltersJSONResolver.java index bef7819a2..9abde9d0a 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/resolver/json/FiltersJSONResolver.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/resolver/json/FiltersJSONResolver.java @@ -34,6 +34,8 @@ import com.djrapitops.plan.storage.database.queries.filter.QueryFilters; import com.djrapitops.plan.storage.database.queries.objects.SessionQueries; import com.djrapitops.plan.storage.database.queries.objects.TPSQueries; import com.djrapitops.plan.utilities.java.Lists; +import com.djrapitops.plan.utilities.logging.ErrorContext; +import com.djrapitops.plan.utilities.logging.ErrorLogger; import org.apache.commons.lang3.StringUtils; import javax.inject.Inject; @@ -50,6 +52,7 @@ public class FiltersJSONResolver implements Resolver { private final QueryFilters filters; private final Graphs graphs; private final Formatters formatters; + private final ErrorLogger errorLogger; @Inject public FiltersJSONResolver( @@ -57,13 +60,15 @@ public class FiltersJSONResolver implements Resolver { DBSystem dbSystem, QueryFilters filters, Graphs graphs, - Formatters formatters + Formatters formatters, + ErrorLogger errorLogger ) { this.serverInfo = serverInfo; this.dbSystem = dbSystem; this.filters = filters; this.graphs = graphs; this.formatters = formatters; + this.errorLogger = errorLogger; } @Override @@ -106,7 +111,7 @@ public class FiltersJSONResolver implements Resolver { /** * JSON serialization class. */ - static class FilterResponseJSON { + class FilterResponseJSON { final List filters; final ViewJSON view; final List viewPoints; @@ -115,7 +120,14 @@ public class FiltersJSONResolver implements Resolver { this.viewPoints = viewPoints; this.filters = new ArrayList<>(); for (Map.Entry entry : filtersByKind.entrySet()) { - filters.add(new FilterJSON(entry.getKey(), entry.getValue())); + try { + filters.add(new FilterJSON(entry.getKey(), entry.getValue())); + } catch (Exception e) { + errorLogger.error(e, ErrorContext.builder() + .whatToDo("Report this, filter '" + entry.getKey() + "' has implementation error.") + .related(entry.getValue()) + .build()); + } } Collections.sort(filters); this.view = view;