Hi Tim,

It did the trick, 
We will test it deeply.

Thanks.  


On 29/10/2012, at 11:52, Tim Worman <li...@thetimmy.com> wrote:

> Also, I have sometimes used this pattern for sub-components like the two you 
> described (instead of assigning a synchronized EO to a class variable).
> 
> 1. editMember with "member" binding
> 
> public Member member() {
>       return (Member)valueForBinding("member");
> }
> public void setMember(Member newMember) {
>       //do nothing
> }
> 
> 2. editAddress component with "address" binding
> 
> public Address address() {
>       return (Address)valueForBinding("address");
> }
> public void setAddress(Address newAddress) {
>       //do nothing
> }
> 
> Tim
> UCLA GSE&IS
> 
> 
> On Oct 29, 2012, at 8:50 AM, Miguel Torres <w...@toracom.net> wrote:
> 
>> Hi Tim,
>> 
>> I will double check the code today, there is something in it that is calling 
>> the address() method after the awake() method, before the end of the 
>> request. I think that's the key of my problem.
>> 
>> Thanks.
>> 
>> 
>> On 26/10/2012, at 21:28, Tim Worman <li...@thetimmy.com> wrote:
>> 
>>> Miguel:
>>> 
>>> I often use lazy synchronization and I haven't typically needed any kind of 
>>> component initialization to correct problems. Can you give us a code 
>>> snippet for the lazy synchronization looks for your subcomponents?
>>> 
>>> Tim
>>> UCLA GSE&IS
>>> 
>>> 
>>> On Oct 26, 2012, at 4:16 PM, Miguel Torres <w...@toracom.net> wrote:
>>> 
>>>> Hi List,
>>>> I recently begun using lazy synchronization. Chuck Hill solved some doubts 
>>>> that I had.
>>>> 
>>>> It works fine in cases Component -- > subcomponent.
>>>> 
>>>> But in cases Component --> subcomponent --> subcomponent is not working 
>>>> properly.
>>>> 
>>>> I have this scenario:
>>>> 
>>>> 1. A memberCatalog component. (A grid with the member's information).
>>>> 2. An editMember sub component with a "member" binding.
>>>> 3. An editAddress sub component inside editMenber with an "address" 
>>>> binding.
>>>> 
>>>> Sub components 2 and 3 use lazy synchronization.
>>>> We have a navigation bar in editMember component with a Next Record button 
>>>> that calls a function that gets the next member and sets it to the object 
>>>> connected to the edit form.
>>>> 
>>>> This is the case where lazy synchronization is not working properly:
>>>> I have 2 members in my catalog.
>>>> I select the first one.
>>>> 
>>>> Both, editMember and editAddress loads properly. I see the correct 
>>>> information of the member and its address.
>>>> 
>>>> I click on Next Record button and this sequence occurs:
>>>> 
>>>> 1.  The request begins. The awake method of editAddress is called and all 
>>>> objects related to the bindings are set to null.
>>>> 
>>>> 2. The awake method of editMember is called and all objects related to the 
>>>> bindings are set to null.
>>>> 
>>>> 3. The address() method of editAddress is called several times (I do not 
>>>> know why) and because the address object was set to null previously, the 
>>>> address object is pull from the parent component. The problem is that the 
>>>> address that is set is the address of the actual member not the next 
>>>> member.
>>>> 
>>>> 4. The nextRecord method is called and it gets the new member.
>>>> 
>>>> 5. The request ends.
>>>> 
>>>> 6. The response  begins.
>>>> 
>>>> 7. The member() method is called several times and it returns the correct 
>>>> member because it was set by the nextRecord method previously.
>>>> 
>>>> 8. The address() method is called several times. The problem is that the 
>>>> address object is not null because of the call of the address() method 
>>>> (step 3) after the call of the awake method (step 2).
>>>> 
>>>> 
>>>> I solved it this way:
>>>> 
>>>> Each sub component has an initComponent object of the class Boolean that 
>>>> is set via bindings.
>>>> 
>>>> Each sub component has an initialize() method that is called by the 
>>>> appendToResponse method.
>>>> 
>>>> Inside the initialize() method we do task like filling NSArrays connected 
>>>> to popUpButtons, etc. The basic structure of the method is as follows:
>>>> 
>>>> private void initialize(){
>>>> if(initComponent){
>>>>      //// Do my stuff
>>>>      initComponent = false;   // If the user submits the form but the 
>>>> record does not change initialize does nothing.
>>>> }
>>>> }
>>>> 
>>>> The change I made is that inside the initialize method I set to null the 
>>>> objects related to the bindings. That way every time I go to the next 
>>>> record I set the initComponent's objects to true and it forces the 
>>>> subcomponents to reset the objects related to the bindings and next time 
>>>> the address() method is called it pulls the correct address from the 
>>>> parent component.
>>>> 
>>>> I am not sure if I am solving a problem that was caused by a bad 
>>>> implementation of lazy synchronization. I have reviewed serveral times the 
>>>> documentation and my code and I can't find errors (But maybe I see what I 
>>>> want to see, I am kind of tired). 
>>>> 
>>>> So, I will appreciated any comment.
>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> Do not post admin requests to the list. They will be ignored.
>>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>>> Help/Unsubscribe/Update your Subscription:
>>>> https://lists.apple.com/mailman/options/webobjects-dev/lists%40thetimmy.com
>>>> 
>>>> This email sent to li...@thetimmy.com
>>> 
>>> 
>> 
> 
> 


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

This email sent to arch...@mail-archive.com

Reply via email to