You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by Cedric Dumoulin <ce...@apache.org> on 2003/02/22 12:10:03 UTC
Re: Should this be called a bug ?
This is a known behavior ;-).
It is not a bug, it is an implementation choice (for efficiency, this
reduce the number of objects created ).
In the normal usage, you should only consult, add or remove attributes
from ComponentContext. You should not modify the attributes obtained
from the ComponentContext !
A componentContext is created for each inserted tile. This
componentContext is populated from the corresponding definition: the
attributes are initialized. Instead of creating a new value for each
attribute, we reference the value stored in the definition. If you get
it and modify it, the modification will be reflected by all subsequent
calls.
An attribute value can be any kind of object, even a user defined one.
So, it is hard to enforce a read-only API on the attribute value. The
only solution is to copy the attribute value each time we use it. This
will lead to several object creations. More than 99.9% of the
application doesn't need to modify the attributes. So, I don't want to
let them pay the price for the 0.01% remaining. These remaining
applications can do the attribute copy themselves when needed ;-).
An improvement can be done by changing the current attribute
definition objects and let them disallow modifications. This can be an
improvement request in bugzilla.
Cedric
Pankaj Dhoolia wrote:
>Hi,
>
>Current implementation of ComponentContext is such that you can make
>changes to it in such a manner that the base definition cached with the
>DefinitionFactory will reflect those changes. In effect it is possible
>to
>cause global changes for all subsequent requests thru the
>ComponentContext API. Was this intended or is it a bug, because for the
>List type attributes ComponentContext lands up having a reference point
>right in the definition cached in the DefinitionFactory?
>
>cheers,
>pdhoolia
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: struts-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-dev-help@jakarta.apache.org