From 37358be00cdc82ff5aaa9bd882e35291603008d4 Mon Sep 17 00:00:00 2001 From: NovaFox161 Date: Wed, 12 Aug 2020 04:10:34 -0500 Subject: [PATCH] This should fix NPE due to WebCalendar chain being empty With Mono.zip, it will skip the zip if one of the values is an empty Mono. So this should fix that by adding a default value in the event the guild does not have a calendar while building the WebGUild object --- .../org/dreamexposure/discal/core/object/web/WebCalendar.java | 4 ++++ .../org/dreamexposure/discal/core/object/web/WebGuild.java | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/dreamexposure/discal/core/object/web/WebCalendar.java b/core/src/main/java/org/dreamexposure/discal/core/object/web/WebCalendar.java index b32a25e0..6dbb1de5 100644 --- a/core/src/main/java/org/dreamexposure/discal/core/object/web/WebCalendar.java +++ b/core/src/main/java/org/dreamexposure/discal/core/object/web/WebCalendar.java @@ -14,6 +14,10 @@ import reactor.core.publisher.Mono; */ public class WebCalendar { + public static WebCalendar empty() { + return new WebCalendar("primary", "primary", "N/a", "N/a", "N/a", "N/a", false); + } + //TODO: Make a reactive version of this method... public static Mono fromCalendar(final CalendarData cd, final GuildSettings gs) { if ("primary".equalsIgnoreCase(cd.getCalendarAddress())) { diff --git a/core/src/main/java/org/dreamexposure/discal/core/object/web/WebGuild.java b/core/src/main/java/org/dreamexposure/discal/core/object/web/WebGuild.java index ae283c95..35821144 100644 --- a/core/src/main/java/org/dreamexposure/discal/core/object/web/WebGuild.java +++ b/core/src/main/java/org/dreamexposure/discal/core/object/web/WebGuild.java @@ -68,7 +68,8 @@ public class WebGuild { final Mono calendar = settings.flatMap(s -> DatabaseManager.getMainCalendar(id) .flatMap(d -> WebCalendar.fromCalendar(d, s)) - ); + ) + .defaultIfEmpty(WebCalendar.empty()); return Mono.zip(botNick, settings, roles, webChannels, announcements, calendar) .map(TupleUtils.function((bn, s, r, wc, a, c) -> {