Skip to content

Commit

Permalink
refactor: avoid logging on WebApplicationException (#4555)
Browse files Browse the repository at this point in the history
  • Loading branch information
ndr-brt authored Oct 17, 2024
1 parent c79e11c commit 6e78b8b
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@ public UnexpectedExceptionMapper(Monitor monitor) {

@Override
public Response toResponse(Throwable exception) {
monitor.severe("JerseyExtension: Unexpected exception caught", exception);
if (exception instanceof WebApplicationException) {
return ((WebApplicationException) exception).getResponse();
if (exception instanceof WebApplicationException webApplicationException) {
return webApplicationException.getResponse();
}

monitor.severe("JerseyExtension: Unexpected exception caught", exception);
var status = exceptionMap.getOrDefault(exception.getClass(), INTERNAL_SERVER_ERROR);

return Response.status(status).build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,20 +28,36 @@
import java.util.stream.Stream;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoInteractions;

class UnexpectedExceptionMapperTest {

private final Monitor monitor = mock(Monitor.class);
private final UnexpectedExceptionMapper mapper = new UnexpectedExceptionMapper(monitor);

@ParameterizedTest
@ArgumentsSource(JakartaApiExceptions.class)
void toResponse_jakartaExceptions(Throwable throwable, int expectedCode) {
try (var response = mapper.toResponse(throwable)) {
assertThat(response.getStatus()).isEqualTo(expectedCode);
assertThat(response.getStatusInfo().getReasonPhrase()).isNotBlank();
assertThat(response.getEntity()).isNull();
verifyNoInteractions(monitor);
}
}

@ParameterizedTest
@ArgumentsSource(JavaExceptions.class)
void toResponse_unexpectedExceptions(Throwable throwable, int expectedCode) {
var mapper = new UnexpectedExceptionMapper(mock(Monitor.class));

try (var response = mapper.toResponse(throwable)) {
assertThat(response.getStatus()).isEqualTo(expectedCode);
assertThat(response.getStatusInfo().getReasonPhrase()).isNotBlank();
assertThat(response.getEntity()).isNull();
verify(monitor).severe(anyString(), same(throwable));
}
}

Expand Down

0 comments on commit 6e78b8b

Please sign in to comment.