Sylvain Wallez wrote:
<snip/>
In Cocoon 2.0, there was not so much difference between internal and external processing on the Processor interface. Things have changed in 2.1 due to changes in the cache system, which now require to build the pipeline to get its validity (Carsten, tell me if I'm wrong).
So the current situation in the sitemap engine (inherited from the 2.0 architecture), is that a call to process() is considered as external while a call to processInternal() is considered as... internal.
Now we see that tying internal/external to the called method is not the way to go, since we the flow calls process(), and such calls should be considered as internal.
So my suggestion is to strongly separate these two different notions. The results are that :
- internal/external should be a property of the environment object : add a new Environment.isInternal() method.
- Processor.processInternal() should be renamed to buildPipeline().
This separation can then allow any kind of combination.
What do you think ?
After some more thoughts, I think the best place for isInternal() isn't Environment, but Request, because the Environment is hidden from normal components, while the request is visible, and this information may be needed for some components to use. For examples, some component add headers to the response, which may not make sense for internal requests, and could thus adapt their behaviour depending on the request type.
Also, we we always speak of "internal requests", and not of "internal environment" !
I started diving in the code, but will be out of office tomorrow. Expect this problem to be fixed by the end of this week.
Done. You can now have flow views in internal-only pipelines !
Sylvain
-- Sylvain Wallez Anyware Technologies http://www.apache.org/~sylvain http://www.anyware-tech.com { XML, Java, Cocoon, OpenSource }*{ Training, Consulting, Projects } Orixo, the opensource XML business alliance - http://www.orixo.com
