From 1053a47e42555e4ebe7582b8fc4e06c3a88a8613 Mon Sep 17 00:00:00 2001 From: Ehren Kret Date: Thu, 4 Nov 2021 19:12:31 -0500 Subject: [PATCH] Add an exception mapper for CompletionExceptions --- .../textsecuregcm/WhisperServerService.java | 2 ++ .../mappers/CompletionExceptionMapper.java | 32 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 service/src/main/java/org/whispersystems/textsecuregcm/mappers/CompletionExceptionMapper.java diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java index 23ed1a5bb..fa3eb7aec 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java @@ -114,6 +114,7 @@ import org.whispersystems.textsecuregcm.limits.RateLimitResetMetricsManager; import org.whispersystems.textsecuregcm.limits.RateLimiters; import org.whispersystems.textsecuregcm.limits.UnsealedSenderRateLimiter; import org.whispersystems.textsecuregcm.liquibase.NameableMigrationsBundle; +import org.whispersystems.textsecuregcm.mappers.CompletionExceptionMapper; import org.whispersystems.textsecuregcm.mappers.DeviceLimitExceededExceptionMapper; import org.whispersystems.textsecuregcm.mappers.IOExceptionMapper; import org.whispersystems.textsecuregcm.mappers.ImpossiblePhoneNumberExceptionMapper; @@ -743,6 +744,7 @@ public class WhisperServerService extends Application { + + @Context + private Providers providers; + + @Override + public Response toResponse(final CompletionException exception) { + final Throwable cause = exception.getCause(); + + if (cause != null) { + final Class type = cause.getClass(); + return providers.getExceptionMapper(type).toResponse(cause); + } + + return Response.serverError().build(); + } +}