MockServletSetup servlet = ctx.findServlet(path);
List<Filter> filters = ctx.getFilters(servlet, path);
WebApplicationServletContext wrapper = new WebApplicationServletContext(ctx, ctx.application);
MockHttpServletRequest httpRequest = new MockHttpServletRequest(wrapper, ctx.getSessionManager(), path);
for (String name : request.getCookies().keySet()) {
httpRequest.addCookie(request.getCookies().get(name));
}
if (request.getUrl().getQuery() != null) {
String[] vars = request.getUrl().getQuery().split("&");
for (String var : vars) {
String[] kv = var.split("=");
httpRequest.addParameter(kv[0], kv.length == 1 ? "" : kv[1]);
}
}
MockHttpServletResponse httpResponse = new MockHttpServletResponse(httpRequest, wrapper);
httpRequest.setResponse(httpResponse);
MockFilterChain chain = new MockFilterChain(filters, servlet);
MockServerValve valve = new MockServerValve(server, deployment, httpRequest, httpResponse);
WebServerHostValve[] valves = CollectionUtil.insert(this.valves.toArray(new WebServerHostValve[this.valves.size()]), 0, valve);
MockServerValveContext valveContext = new MockServerValveContext(deployment, httpRequest, httpResponse, chain, valves);