Refactor processResponseError in ServerRuntime
Signed-off-by: Maxim Nesen <maxim.nesen@oracle.com>
diff --git a/core-server/src/main/java/org/glassfish/jersey/server/ServerRuntime.java b/core-server/src/main/java/org/glassfish/jersey/server/ServerRuntime.java
index 0797653..981514c 100644
--- a/core-server/src/main/java/org/glassfish/jersey/server/ServerRuntime.java
+++ b/core-server/src/main/java/org/glassfish/jersey/server/ServerRuntime.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -460,6 +460,8 @@
final Iterable<ResponseErrorMapper> mappers = Providers.getAllProviders(runtime.injectionManager,
ResponseErrorMapper.class);
+ ContainerResponse processedResponse = null;
+
try {
Response processedError = null;
for (final ResponseErrorMapper mapper : mappers) {
@@ -470,11 +472,16 @@
}
if (processedError != null) {
- processResponse(new ContainerResponse(processingContext.request(), processedError));
+ processedResponse =
+ processResponse(new ContainerResponse(processingContext.request(), processedError));
processed = true;
}
} catch (final Throwable throwable) {
LOGGER.log(Level.FINE, LocalizationMessages.ERROR_EXCEPTION_MAPPING_PROCESSED_RESPONSE_ERROR(), throwable);
+ } finally {
+ if (processedResponse != null) {
+ release(processedResponse);
+ }
}
}