On 2012-08-21, at 1:59 PM, WebObjects TORAcom wrote:

> Thanks Chuck and Jesse.
> 
> I think I understand the term lazy synchronization and it makes totally sense.
> 
> But, how to handle a case like this:
> 
> Three entities and their relationships:
> 
> User  <-----> Address
> Client <-----> Address
> 
> I create a reusable component named EditAddress and use it inside two other 
> components: EditUser and EditClient. I would pass the Address object via a 
> binding.
> 
> In the EditAddress I would use WOTextFields connected to the address' 
> parameters: address.country, address.state, etc.
> 
> How could I do that with lazy synchronization?

The same way.  Just put this in EditAddress:

private Address address;

public void awake() {
        super.awake();
        address = null;
}

public Address exampleValue() {
        if (address == null) {
                address = (Address) valueForBinding("address");
        }
        return address;
}

public void setAddress(Address newValue) {
        if (ERXExtensions.saveDifferent(address(), newValue) {
                setValueForBinding(newValue, "address");
                address = newValue;
        }
}

Then use WOTextFields connected to address.country, address.state, etc.


Chuck



> 
> On 21/08/2012, at 14:22, Chuck Hill <[email protected]> wrote:
> 
>> Hi Miguel,
>> 
>> On 2012-08-21, at 11:19 AM, WebObjects TORAcom wrote:
>> 
>>> Hi List,
>>> 
>>> I am trying to implement best practices in our applications, we want to 
>>> take control of component's  binding syncrhonization.
>>> 
>>> First of all I understand that we should override the 
>>> synchronizesVariablesWithBindings function like this:
>>> 
>>> 
>>> public boolean synchronizesVariablesWithBindings() {
>>>             return false;
>>>     }
>>> 
>>> 
>>> 
>>> But where in the request - response loop should be the better place to 
>>> synchronize our bindings, a lot of time ago (years) somewhere in the 
>>> internet I found info that recommends Pull binding's values in the 
>>> takeValuesFromRequest(WORequest r, WOContext c) method and Push binding's 
>>> values in the appendToResponse(WOResponse r, WOContext c).
>>> 
>>> I am not sure about that, so we have been working with the automatic 
>>> synchronization of our bindings.
>> 
>> I usually do lazy synchronization, and only do what I need.  Something like 
>> this:
>> 
>> 
>> private String exampleValue;
>> 
>> public void awake() {
>>      super.awake();
>>      exampleValue = null;
>> }
>> 
>> public String exampleValue() {
>>      if (exampleValue == null) {
>>              exampleValue = stringValueForBinding("exampleValue");
>>      }
>>      return exampleValue;
>> }
>> 
>> public void setExampleValue(String newValue) {
>>      if (ERXExtensions.saveDifferent(exampleValue, newValue) {
>>              setValueForBinding(newValue, "exampleValue");
>>              exampleValue = newValue;
>>      }
>> }
>> 
>> 
>> Chuck
>> 
>> -- 
>> Chuck Hill             Senior Consultant / VP Development
>> 
>> Practical WebObjects - for developers who want to increase their overall 
>> knowledge of WebObjects or who are trying to solve specific problems.    
>> http://www.global-village.net/gvc/practical_webobjects
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
> 
> 
> 
> 

-- 
Chuck Hill             Senior Consultant / VP Development

Practical WebObjects - for developers who want to increase their overall 
knowledge of WebObjects or who are trying to solve specific problems.    
http://www.global-village.net/gvc/practical_webobjects









 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to