Carsten Ziegeler wrote:
Ralph Goers wrote:
Daniel Fagerstrom wrote:


The servlet set of apis is allready an abstraction, we have due to historical circumstances another abstraction of the same concepts. To me the abstractions look fairly similar, except for the Cocoon aditions that have been mentioned. What am I missing more specifically?
What exactly are the sevlet apis an abstraction of?

We could have compablity wrapper. Question is do we want to simplify or not?
What, exactly are we simplifying? There is no way that we won't always have a "real" HttpServletRequest. AFAICS there is no way that we can just use it. So what would replace the existing Request object? In order to understand this I really need to know exactly what the new object would be.

Hmm, now, one possible way of simplifying could be to extend the
HttpServletRequest/Response objects, so if you need an
HttpServletRequest somewhere you directly have it. But for example our
Response object does not provide access to the outputstream, and I'm
sure even if we extend the HttpServletResponse interface, we want to
block direct access to the output stream (by throwing an exception).

We _need_ direct access to the output stream. Ajax applications require to move away from the request/page-response paradigm that prevailed up to now. The controller must be able to send a direct response to the client for empty control responses or raw data.

CForms required this for to handle the end of the form interaction in Ajax mode, and I directly accessed the HttpServletRequest for this, how heretic it might seem :-)

And there might be other examples for this - so in the end if you need a
real servlet response object you can't use our response object as we
block some operations.
Currently, we store the original http servlet request/response objects
in the object map next to our own versions of it. So if you really need
the original objects, you can look them up.

Which makes actually two different abstractions for the same purpose, and makes blocking the outputstream on our own abstraction useless, as people can access it anyway.

It would be better IMO to have a single abstraction, but _control_ how the outputstream is used, e.g. by allowing it to be fetched only once.

I have the feeling that changing this does not buy us something and that
does it not make life easier - I might be wrong though. Now, I still
think we should make the request/response objects more easily accessible
somehow.

Yup. Now changing these abstractions aren't for Cocoon 2.2 IMO.

Sylvain

--
Sylvain Wallez                        Anyware Technologies
http://bluxte.net                     http://www.anyware-tech.com
Apache Software Foundation Member     Research & Technology Director

Reply via email to