[jsr-314-open-mirror] [jsr-314-open] [2.1 Spec Review] Transient State [Was: Fix UIData state saving model]

Martin Marinschek mmarinschek at apache.org
Fri Oct 22 16:26:03 EDT 2010


Hi,

my concern that stateful and transient component getters/setters look
different is not relevant to you?

I am just thinking that users might be confused.

best regards,

Martin

On 10/22/10, Blake Sullivan <blake.sullivan at oracle.com> wrote:
>   Since we can always add the TransientStateHelper later if we need it,
> we shouldn't have it in the specification for this release.
>
> -- Blake Sullivan
>
> On 10/22/10 4:25 AM, Andy Schwartz wrote:
>> Hey Martin -
>>
>> Here is how I was thinking about this...
>>
>> With transient properties, we have two types of use cases:
>>
>> 1.  Components storing transient attributes on themselves.
>> 2.  External classes storing transient attributes on components.
>>
>> The use case you mention below falls under #1.
>>
>> In earlier threads there were a references to use cases that fall
>> under #2 (eg. a renderer setting a transient property on a component).
>>
>> If we go with the original API proposal of adding public methods to
>> UIComponent, ie:
>>
>> - public Object getTransient(Object key)
>> - public Object putTransient(Object key, Object value)
>>
>> We have everything we need to address #1 and #2.  Your sample below
>> can be rewritten as:
>>
>> Double getCalculatedWeight() {
>>  return (Double) getTransient(PropertyKeys.weight, false);
>> }
>> void setCalculatedWeight(Double weight) {
>>  putTransient(PropertyKeys.weight, weight);
>> }
>>
>> I don't see how adding a new TransientStateHelper contract improves
>> this situation.  That's not to say that we cannot do this.  The first
>> patch that I provided leaves TransientStateHelper in place.  Just
>> seems like added conceptual overhead that might not be necessary.
>>
>> Andy
>>
>>
>> On 10/22/10 7:02 AM, Martin Marinschek wrote:
>>> Hi Andy,
>>>
>>> maybe I am missing something here, but isn't the normal use-case for
>>> this a new component which adds a transient attribute?
>>>
>>> something like: calculatedWeight. This should of course be exposed via
>>> the API of the component - so there should be a:
>>>
>>> Double getCalculatedWeight();
>>> void setCalculatedWeight(Double weight);
>>>
>>> And my point was that the implementation of these stateless getters
>>> and setters should look similar to the stateful version.
>>>
>>> What I would do:
>>>
>>> Double getCalculatedWeight() {
>>>   return (Double) getTransientStateHelper().get(PropertyKeys.weight,
>>> false);
>>> }
>>> void setCalculatedWeight(Double weight) {
>>>   getTransientStateHelper().put(PropertyKeys.weight, weight);
>>> }
>>>
>>> Could TransientStateHelper not be an alternative implementation of the
>>> StateHelper interface?
>>>
>>> best regards,
>>>
>>> Martin
>>>
>>
>
>


-- 

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces



More information about the jsr-314-open-mirror mailing list