Hi,
As previously discussed, I've prepared a patch including:
* splitting the Request interface in two, with a new WebRequest interface.
* dispatch, include, setContentType moved into WebRequest.
* getHeader split into two maps, one immutable as documented, the other
write-only for response headers.
* getRequestObjects removed entirely.
Not including:
* isResponseCommitted stays in the Request interface as discussed.
* getOutputStream stays in the Request interface, I've found a use for
it after all (I'm rendering PDF and PNG).
* the implementations of forward and include are still in
ServletRequest/PortletRequest. I still want to think about it
(specifically I find the RequestDispatcher concept similar to
DispatchRenderer, and perhaps the best solution should involve
servlet/portlet specific DispatchRenderers, rather than ApplicationContext).
Also there are a couple of additional changes I'd like to make:
* After implementing and using a number of renderers, I find the method
"isRenderable" so useful it should be mandatory. Besides, it's really
easy to implement. I'd like to merge TypeDetectingRenderer into Renderer.
* I'd like to add a method "checkNotModified" to the Request interface.
It would take an timestamp as a parameter, repesenting the actual last
modification time of the model. For servlet/portlet, it would handle the
HTTP headers "Last-Modified" and "If-Modified-Since" (as well as return
code 304) accordingly. The method would returns "true" if the actual
rendering is not needed, allowing the controller to skip calling the
renderer.
What do you think?
Nick.