summaryrefslogtreecommitdiffstats
path: root/container-core
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-04-12 13:41:05 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-04-12 13:43:45 +0200
commite873762e9d35257e7c684ea3824fb4239561f4cf (patch)
tree833411cf2df189db99d42925b1ec41cf828d6c44 /container-core
parentbfaf3f88b7b0a8fd094aef101e920709ed788731 (diff)
Jetty request is wrapped when filtering on jaxrs resource or servlet
Diffstat (limited to 'container-core')
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscFilterInvokerFilter.java13
1 files changed, 10 insertions, 3 deletions
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscFilterInvokerFilter.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscFilterInvokerFilter.java
index bff300431ce..2904d79ad41 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscFilterInvokerFilter.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/JDiscFilterInvokerFilter.java
@@ -78,7 +78,7 @@ class JDiscFilterInvokerFilter implements Filter {
private void runChainAndResponseFilters(URI uri, HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {
Optional<OneTimeRunnable> responseFilterInvoker =
- jDiscContext.filterResolver.resolveResponseFilter((Request)request, uri)
+ jDiscContext.filterResolver.resolveResponseFilter(toJettyRequest(request), uri)
.map(responseFilter ->
new OneTimeRunnable(() ->
filterInvoker.invokeResponseFilterChain(responseFilter, uri, request, response)));
@@ -108,7 +108,7 @@ class JDiscFilterInvokerFilter implements Filter {
private HttpServletRequest runRequestFilterWithMatchingBinding(AtomicReference<Boolean> responseReturned, URI uri, HttpServletRequest request, HttpServletResponse response) throws IOException {
try {
- RequestFilter requestFilter = jDiscContext.filterResolver.resolveRequestFilter((Request)request, uri).orElse(null);
+ RequestFilter requestFilter = jDiscContext.filterResolver.resolveRequestFilter(toJettyRequest(request), uri).orElse(null);
if (requestFilter == null)
return request;
@@ -135,13 +135,20 @@ class JDiscFilterInvokerFilter implements Filter {
final AccessLogEntry accessLogEntry = null; // Not used in this context.
return new HttpRequestDispatch(jDiscContext,
accessLogEntry,
- getConnector((Request)request).createRequestMetricContext(request, Map.of()),
+ getConnector(toJettyRequest(request)).createRequestMetricContext(request, Map.of()),
request, response);
} catch (IOException e) {
throw throwUnchecked(e);
}
}
+ private static Request toJettyRequest(HttpServletRequest request) {
+ if (request instanceof com.yahoo.jdisc.http.servlet.ServletRequest) {
+ return (Request) ((com.yahoo.jdisc.http.servlet.ServletRequest)request).getRequest();
+ }
+ return (Request) request;
+ }
+
@Override
public void destroy() {}