Rice Yeh skrev:
The following is my understanding about the current and would-be functions of servlet-serivce:

Servlet-serivce is to have a web application divided into many blocks but each of them behaves like a web application; It has its own context, request, response and session. When a block s1 calls another block s2, it is like that s1 is calling another web application; it creates another request, have another response, even have another session in s2. Attribute values (here attribute refers to the general meaning, it includes the parameters, headers and attributes in request and the attributes in session and context) in s2 can override values in s1. For example the value of an attribute a1 is vs1 in s1, when s1 call s2, s2 might have attribute a1 with value vs2 because a1 is overridden (here, I am not sure whether it is correct to use the word 'override'). However, for another block s3 called by s1 which does not override a1, the value of a1 is still vs1. Repeat again, attributes here refers to general meaning. Such overriding mechanism is not implemented yet.

Great summary of how things works and what needs to be done next! As Grek wrote, we have recently found a way to make the request object of the caller available in the request object of the callee, so now it is possible to start to implement what you describe above.

Then in servlet-service, it is allowed to have a block extend another block. Lets say s3 extends s0. When s1 calls s3 with request r1 for a function f1 which is implemented in s0. Is it still needed to create another request for s3 to call s0 for f1? For present implementation, there is no difference in calling a super and no-super block. However, in object-oriented thinking, just directly passing r1 is more reasonable. Since servlet-service is not like a OO language to have a complier, to judge whether f1 exists in s3 or s0 might not be an easy way. Bug cocoon-2038 approaches this issue.

We haven't discussed this before, but I think you are completely right, we need to differ between ordinary servlet service calls and super calls. And super calls should probably be considered as an internal redirection where the request object of the caller is kept (including its session and request attributes). The URI probably needs to be overidden, but not much more.

Anyone, please comments. I like to know whether my understanding is correct?

Your understanding is right on the spot, as far as I can tell.

/Daniel

Reply via email to