cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Carsten Ziegeler <>
Subject Re: Scoped Request Attributes
Date Fri, 13 May 2005 11:54:19 GMT
Daniel Fagerstrom wrote:
> I missed that discussion. Anyway, IMO global request scope is nearly 
> never a good idea. As discussed in that thread, people are into an 
> unplesant suprise if they use global request scope for e.g. aggregation. 
> Furthermore one introduce quite strange dependencies in the code if 
> internal requests affects global request attributes. IMO, one should in 
> most cases avoid letting internal requests having global side effects.
This is a difficult topic. You can use global attributes to pass
information from the global request to the sub requests and vice versa.
This can be very useful sometimes.

> In the thread you seemed to agree about that it was best, due to 
> compability reasons, to keep the old global scope as default for request 
> attributes, and make local request scope available through an extra 
> parameter. IMO this is one of thoose cases where it is better to be 
> brave and introduce back incompabilities than to keep an obscure 
> behaviour. I think we should have request scope as default in 2.2, it 
> will break some code, but there is a good workaround with the scoped 
> attributes. And we will save most users from unpleasant suprises by 
> having the more sensible behaviour as default.
> If we go this way, the Map getRequestAttributes(), will have local 
> request scope, and we could have a Map getGlobalRequestAtributes() for 
> giving access to the global ones. But as using global request parameters 
> is a rather uncommon use case, I don't think we need to have POJOfied 
> support for it.
I don't agree here. My number one concern is compatibility. Users might
not notice that we changed this behaviour and will spend days in finding
these problems. So, either we leave it compatible or we provide an
update tool, that rewrites every old use "getAttribute(name)" to
getAttribute(name, global scope)" etc. But without such a tool, I'm -1
on changing the behaviour.

In addition, I think it's not that uncommon to pass information between
the main and the sub requests using global attributes.

I think we should leave it the way it is and provide three maps:
- getLocalRequestAttributes()
- getGlobalRequestAttributes()
- getAllRequestAttributes() - combines the two

(We can use different names, but I think we should have this functionality).

Carsten Ziegeler - Open Source Group, S&N AG

View raw message