assertEquals("login", v.value);
assertTrue(resp.isCommitted());
}
String url = resp.renderURL("/", null, null);
return new InvokeGetResponse(url);
}
else if (getRequestCount() == 2)
{
// Counter to keep an eye on includes
final Map<String, String> rets = new HashMap<String, String>();
// Set some session state in this context
req.getSession().setAttribute(CROSS_CTX_TEST_ATTR, "1");
// Set some session state in another context
ServletContext appContext = testServlet.getServletContext().getContext("/test-spi-app");
ServletContextDispatcher dispatcher = new ServletContextDispatcher(req, resp, container);
NormalCallback cb = new NormalCallback(appContext, registry.getWebApp("/test-spi-app").getClassLoader())
{
public Object doCallback(ServletContext dispatchedServletContext, HttpServletRequest dispatchedRequest, HttpServletResponse dispatchedResponse, Object handback) throws ServletException, IOException
{
dispatchedRequest.getSession().setAttribute(CROSS_CTX_TEST_ATTR, "2");
rets.put(COUNT_KEY, "1");
return super.doCallback(dispatchedServletContext, dispatchedRequest, dispatchedResponse, handback);
}
};
DriverResponse response = cb.test(null, dispatcher);
if (response != null)
return response;
// Check that the callback was invoked and the other context really was used with another session
assertEquals("1", req.getSession().getAttribute(CROSS_CTX_TEST_ATTR));
assertEquals("1", rets.get(COUNT_KEY));
String url = resp.renderURL("/", null, null);
return new InvokeGetResponse(url);
}
else if (getRequestCount() == 3)
{
// Check that the sessions retained values between requests
// test-spi-server context