You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "Ulrich Stärk (JIRA)" <ji...@apache.org> on 2009/01/22 11:43:59 UTC
[jira] Issue Comment Edited: (TAP5-456) NPE in
HttpServletRequestFilter if ApplicationStateManager is used
[ https://issues.apache.org/jira/browse/TAP5-456?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12666117#action_12666117 ]
ulrich.staerk edited comment on TAP5-456 at 1/22/09 2:43 AM:
------------------------------------------------------------
A workaround is to write a HttpServletRequestFilter that stores these objects into the RequestGlobals service and place it at the very beginning of the pipeline:
public static HttpServletRequestFilter buildSetHttpServletRequestResponse(
final RequestGlobals requestGlobals,
@Inject @Symbol(SymbolConstants.CHARSET) final String applicationCharset)
{
return new HttpServletRequestFilter()
{
public boolean service(HttpServletRequest servletRequest,
HttpServletResponse servletResponse, HttpServletRequestHandler handler)
throws IOException
{
requestGlobals.storeServletRequestResponse(servletRequest, servletResponse);
Request request = new RequestImpl(servletRequest, applicationCharset);
Response response = new ResponseImpl(servletResponse);
requestGlobals.storeRequestResponse(request, response);
return handler.service(servletRequest, servletResponse);
}
};
}
public static void contributeHttpServletRequestHandler(
OrderedConfiguration<HttpServletRequestFilter> configuration,
@InjectService("setHttpServletRequestResponse") HttpServletRequestFilter setRequestResponse)
{
configuration.add("setHttpServletRequestResponse", setRequestResponse, "before:*");
}
was (Author: ulrich.staerk):
A workaround is to write a HttpServletRequestFilter that stores these objects into the RequestGlobals service and place it at the very beginning of the pipeline:
{{
public static HttpServletRequestFilter buildSetHttpServletRequestResponse(
final RequestGlobals requestGlobals,
@Inject @Symbol(SymbolConstants.CHARSET) final String applicationCharset)
{
return new HttpServletRequestFilter()
{
public boolean service(HttpServletRequest servletRequest,
HttpServletResponse servletResponse, HttpServletRequestHandler handler)
throws IOException
{
requestGlobals.storeServletRequestResponse(servletRequest, servletResponse);
Request request = new RequestImpl(servletRequest, applicationCharset);
Response response = new ResponseImpl(servletResponse);
requestGlobals.storeRequestResponse(request, response);
return handler.service(servletRequest, servletResponse);
}
};
}
}}
{{
public static void contributeHttpServletRequestHandler(
OrderedConfiguration<HttpServletRequestFilter> configuration,
@InjectService("setHttpServletRequestResponse") HttpServletRequestFilter setRequestResponse)
{
configuration.add("setHttpServletRequestResponse", setRequestResponse, "before:*");
}
}}
> NPE in HttpServletRequestFilter if ApplicationStateManager is used
> ------------------------------------------------------------------
>
> Key: TAP5-456
> URL: https://issues.apache.org/jira/browse/TAP5-456
> Project: Tapestry 5
> Issue Type: Bug
> Components: tapestry-core
> Affects Versions: 5.0.18
> Reporter: Ulrich Stärk
>
> The same problem as described in TAP5-257 holds true for the HttpServletRequestHandler pipeline. If a filter wants to store or retrieve something from the ApplicationStateManager, a NPE is thrown because HttpServletRequest, HttpServletResponse, Request and Response are not stored in the RequestGlobals yet. A workaround is to write a HttpServletRequestFilter that stores these objects into the RequestGlobals service and place it at the very beginning of the pipeline.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.