On Tue, 18 Dec 2001, Marcus Crafter wrote: > Hi Berin, > > On Tue, Dec 18, 2001 at 11:20:18AM -0500, Berin Loritsch wrote: > > > > In what way are the same set of parameters used by different threads in > > Cocoon? > > > > We never addressed ThreadSafety as one of the Contracts for either > > Parameters > > or Configuration. > > Have a look at this snippet from a generated sitemap: > > ---------------------- > public class sitemap_xmap extends AbstractSitemap { > static final String LOCATION = "org.apache.cocoon.www.sitemap_xmap"; > > static { > dateCreated = 1007984808622L; > } > > /** An empty <code>Parameter</code> used to pass to the sitemap components > */ > private Parameters emptyParam = new Parameters(); > > /** HashMap relating labels to view names */ > private HashMap view_label_map = new HashMap(1); > > <snip>... > > if (isSelected("userstatus", "permitted", listOfMaps, > emptyParam, objectModel)) { > ---------------------- > > The 'emptyParam' is passed into several cocoon components. If a > developer sets a parameter in a selector for example, then 2 > threads can overwrite each other with different results (the current > problem we have here). > > In Cocoon I think the problem is more fundamental in that the > parameters object is actually an instance level reference in the > sitemap object (I'm not sure if that was intended ? ie. to share > parameters between pipelines), but I think even a thread safe > parameters object would not fix thread safety there - there > needs to be a local Parameters object per thread passing through > the sitemap, or a read-only Parameters object if the developer > shouldn't be doing this at all.
I see what you mean. I've obviously never really looked at the Parameters interface but now I've realized that there isn't similarity with the Configuration class which *is* an interface whereas Parameters is *not*. I don't know the intention why Parameters are not designed like Configuration. Any comments from core Avalonians why Parameters isn't an interface? Giacomo > > If the Parameters object remains thread unsafe, perhaps it should be > documented in it's class level javadocs like the Collection > classes so it's obvious to the developer (I'll submit a patch if > you like ?). > > Cheers, > > Marcus > > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>