From 0ee82b11f87d450a7db85dbb8478f55ea0bb333b Mon Sep 17 00:00:00 2001 From: rfresh2 <89827146+rfresh2@users.noreply.github.com> Date: Sun, 27 Oct 2024 18:24:16 -0700 Subject: [PATCH] handle jackson exception on no content --- src/main/java/vc/commands/ChatSearchCommand.java | 6 +++++- src/main/java/vc/commands/ChatsCommand.java | 6 +++++- src/main/java/vc/commands/ConnectionsCommand.java | 6 +++++- src/main/java/vc/commands/DataCommand.java | 6 +++++- src/main/java/vc/commands/DeathsCommand.java | 6 +++++- src/main/java/vc/commands/KillsCommand.java | 6 +++++- src/main/java/vc/commands/PlayerStatsCommand.java | 6 +++++- src/main/java/vc/commands/PlaytimeCommand.java | 6 +++++- src/main/java/vc/commands/SeenCommand.java | 6 +++++- src/main/java/vc/commands/WordCountCommand.java | 6 +++++- 10 files changed, 50 insertions(+), 10 deletions(-) diff --git a/src/main/java/vc/commands/ChatSearchCommand.java b/src/main/java/vc/commands/ChatSearchCommand.java index ffbe459..6c0e83b 100644 --- a/src/main/java/vc/commands/ChatSearchCommand.java +++ b/src/main/java/vc/commands/ChatSearchCommand.java @@ -1,6 +1,7 @@ package vc.commands; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.exc.MismatchedInputException; import discord4j.core.event.domain.interaction.ButtonInteractionEvent; import discord4j.core.event.domain.interaction.ChatInputInteractionEvent; import discord4j.core.event.domain.interaction.DeferrableInteractionEvent; @@ -72,7 +73,10 @@ public Mono resolve(DeferrableInteractionEvent event, String word, int try { response = chatsApi.chatSearch(word, startDate, endDate, 25, page); } catch (final Exception e) { - if (!(e instanceof ApiException apiException) || apiException.getCode() != 204) { + if (e instanceof ApiException apiException + && (apiException.getCause() instanceof MismatchedInputException || apiException.getCode() == 204)) { + // fall through + } else { LOGGER.error("Error searching for word: {}", word, e); } } diff --git a/src/main/java/vc/commands/ChatsCommand.java b/src/main/java/vc/commands/ChatsCommand.java index e332637..8253146 100644 --- a/src/main/java/vc/commands/ChatsCommand.java +++ b/src/main/java/vc/commands/ChatsCommand.java @@ -1,6 +1,7 @@ package vc.commands; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.exc.MismatchedInputException; import discord4j.core.event.domain.interaction.ButtonInteractionEvent; import discord4j.core.event.domain.interaction.ChatInputInteractionEvent; import discord4j.core.event.domain.interaction.DeferrableInteractionEvent; @@ -49,7 +50,10 @@ private Mono resolveChats(final DeferrableInteractionEvent event, final try { chatsResponse = chatsApi.chats(identity.uuid(), null, startDate, endDate, 25, page); } catch (final Exception e) { - if (!(e instanceof ApiException apiException) || apiException.getCode() != 204) { + if (e instanceof ApiException apiException + && (apiException.getCause() instanceof MismatchedInputException || apiException.getCode() == 204)) { + // fall through + } else { LOGGER.error("Error processing chats response", e); } } diff --git a/src/main/java/vc/commands/ConnectionsCommand.java b/src/main/java/vc/commands/ConnectionsCommand.java index 98949f0..6aa3cbd 100644 --- a/src/main/java/vc/commands/ConnectionsCommand.java +++ b/src/main/java/vc/commands/ConnectionsCommand.java @@ -1,6 +1,7 @@ package vc.commands; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.exc.MismatchedInputException; import discord4j.core.event.domain.interaction.ButtonInteractionEvent; import discord4j.core.event.domain.interaction.ChatInputInteractionEvent; import discord4j.core.event.domain.interaction.DeferrableInteractionEvent; @@ -49,7 +50,10 @@ private Mono resolveConnections(final DeferrableInteractionEvent event, try { connectionsResponse = connectionsApi.connections(identity.uuid(), null, startDate, endDate, 25, page); } catch (final Exception e) { - if (!(e instanceof ApiException apiException) || apiException.getCode() != 204) { + if (e instanceof ApiException apiException + && (apiException.getCause() instanceof MismatchedInputException || apiException.getCode() == 204)) { + // fall through + } else { LOGGER.error("Error processing connections response", e); } } diff --git a/src/main/java/vc/commands/DataCommand.java b/src/main/java/vc/commands/DataCommand.java index e2fbda5..ea82c45 100644 --- a/src/main/java/vc/commands/DataCommand.java +++ b/src/main/java/vc/commands/DataCommand.java @@ -1,5 +1,6 @@ package vc.commands; +import com.fasterxml.jackson.databind.exc.MismatchedInputException; import discord4j.core.event.domain.interaction.ChatInputInteractionEvent; import discord4j.core.object.entity.Message; import discord4j.core.spec.EmbedCreateSpec; @@ -42,7 +43,10 @@ public Mono resolvePlayerDataDump(ChatInputInteractionEvent event, Prof try { playerDataDump = vcDataDumpApi.getPlayerDataDump(playerIdentity.uuid(), null); } catch (final Exception e){ - if (!(e instanceof ApiException apiException) || apiException.getCode() != 204) { + if (e instanceof ApiException apiException + && (apiException.getCause() instanceof MismatchedInputException || apiException.getCode() == 204)) { + // fall through + } else { LOGGER.error("Failed to get player data dump", e); } } diff --git a/src/main/java/vc/commands/DeathsCommand.java b/src/main/java/vc/commands/DeathsCommand.java index 5f79edb..f6a52bf 100644 --- a/src/main/java/vc/commands/DeathsCommand.java +++ b/src/main/java/vc/commands/DeathsCommand.java @@ -1,6 +1,7 @@ package vc.commands; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.exc.MismatchedInputException; import discord4j.core.event.domain.interaction.ButtonInteractionEvent; import discord4j.core.event.domain.interaction.ChatInputInteractionEvent; import discord4j.core.event.domain.interaction.DeferrableInteractionEvent; @@ -49,7 +50,10 @@ private Mono resolveDeaths(final DeferrableInteractionEvent event, fina try { deathsResponse = deathsApi.deaths(identity.uuid(), null, startDate, endDate, 25, page); } catch (final Exception e) { - if (!(e instanceof ApiException apiException) || apiException.getCode() != 204) { + if (e instanceof ApiException apiException + && (apiException.getCause() instanceof MismatchedInputException || apiException.getCode() == 204)) { + // fall through + } else { LOGGER.error("Failed to get deaths", e); } } diff --git a/src/main/java/vc/commands/KillsCommand.java b/src/main/java/vc/commands/KillsCommand.java index 7cf603c..4d84f36 100644 --- a/src/main/java/vc/commands/KillsCommand.java +++ b/src/main/java/vc/commands/KillsCommand.java @@ -1,6 +1,7 @@ package vc.commands; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.exc.MismatchedInputException; import discord4j.core.event.domain.interaction.ButtonInteractionEvent; import discord4j.core.event.domain.interaction.ChatInputInteractionEvent; import discord4j.core.event.domain.interaction.DeferrableInteractionEvent; @@ -49,7 +50,10 @@ private Mono resolveKills(final DeferrableInteractionEvent event, final try { killsResponse = deathsApi.kills(identity.uuid(), null, startDate, endDate, 25, page); } catch (final Exception e) { - if (!(e instanceof ApiException apiException) || apiException.getCode() != 204) { + if (e instanceof ApiException apiException + && (apiException.getCause() instanceof MismatchedInputException || apiException.getCode() == 204)) { + // fall through + } else { LOGGER.error("Error resolving kills", e); } } diff --git a/src/main/java/vc/commands/PlayerStatsCommand.java b/src/main/java/vc/commands/PlayerStatsCommand.java index af88462..62329f2 100644 --- a/src/main/java/vc/commands/PlayerStatsCommand.java +++ b/src/main/java/vc/commands/PlayerStatsCommand.java @@ -1,5 +1,6 @@ package vc.commands; +import com.fasterxml.jackson.databind.exc.MismatchedInputException; import discord4j.core.event.domain.interaction.ChatInputInteractionEvent; import discord4j.core.object.entity.Message; import discord4j.core.spec.EmbedCreateSpec; @@ -47,7 +48,10 @@ public Mono handle(final ChatInputInteractionEvent event) { try { playerStats = statsApi.playerStats(playerIdentityOptional.get().uuid(), null); } catch (final Exception e) { - if (!(e instanceof ApiException apiException) || apiException.getCode() != 204) { + if (e instanceof ApiException apiException + && (apiException.getCause() instanceof MismatchedInputException || apiException.getCode() == 204)) { + // fall through + } else { LOGGER.error("Failed to get stats for player: {}", playerIdentityOptional.get().uuid(), e); } } diff --git a/src/main/java/vc/commands/PlaytimeCommand.java b/src/main/java/vc/commands/PlaytimeCommand.java index 1d6b087..82a741c 100644 --- a/src/main/java/vc/commands/PlaytimeCommand.java +++ b/src/main/java/vc/commands/PlaytimeCommand.java @@ -1,5 +1,6 @@ package vc.commands; +import com.fasterxml.jackson.databind.exc.MismatchedInputException; import discord4j.core.event.domain.interaction.ChatInputInteractionEvent; import discord4j.core.object.entity.Message; import discord4j.core.spec.EmbedCreateSpec; @@ -44,7 +45,10 @@ private Mono resolvePlaytime(ChatInputInteractionEvent event, final Pro try { playtime = playtimeApi.playtime(profileUUID, null); } catch (final Exception e) { - if (!(e instanceof ApiException apiException) || apiException.getCode() != 204) { + if (e instanceof ApiException apiException + && (apiException.getCause() instanceof MismatchedInputException || apiException.getCode() == 204)) { + // fall through + } else { LOGGER.error("Failed to get playtime for player: {}", profileUUID, e); } } diff --git a/src/main/java/vc/commands/SeenCommand.java b/src/main/java/vc/commands/SeenCommand.java index 6039397..85fba85 100644 --- a/src/main/java/vc/commands/SeenCommand.java +++ b/src/main/java/vc/commands/SeenCommand.java @@ -1,5 +1,6 @@ package vc.commands; +import com.fasterxml.jackson.databind.exc.MismatchedInputException; import discord4j.core.event.domain.interaction.ChatInputInteractionEvent; import discord4j.core.object.entity.Message; import discord4j.core.spec.EmbedCreateSpec; @@ -47,7 +48,10 @@ private Mono resolveSeen(final ChatInputInteractionEvent event, final P try { seenResponse = seenApi.seen(uuid, null); } catch (final Exception e) { - if (!(e instanceof ApiException apiException) || apiException.getCode() != 204) { + if (e instanceof ApiException apiException + && (apiException.getCause() instanceof MismatchedInputException || apiException.getCode() == 204)) { + // fall through + } else { LOGGER.error("Failed to get seen for player: {}", uuid, e); } } diff --git a/src/main/java/vc/commands/WordCountCommand.java b/src/main/java/vc/commands/WordCountCommand.java index ba9337a..04c8de2 100644 --- a/src/main/java/vc/commands/WordCountCommand.java +++ b/src/main/java/vc/commands/WordCountCommand.java @@ -1,5 +1,6 @@ package vc.commands; +import com.fasterxml.jackson.databind.exc.MismatchedInputException; import discord4j.core.event.domain.interaction.ChatInputInteractionEvent; import discord4j.core.object.entity.Message; import discord4j.core.spec.EmbedCreateSpec; @@ -41,7 +42,10 @@ public Mono handle(final ChatInputInteractionEvent event) { try { count = chatsApi.wordCount(word).getCount(); } catch (final Exception e) { - if (!(e instanceof ApiException apiException) || apiException.getCode() != 204) { + if (e instanceof ApiException apiException + && (apiException.getCause() instanceof MismatchedInputException || apiException.getCode() == 204)) { + // fall through + } else { LOGGER.error("Error getting word count: {}", word, e); } }