Sunday, January 30, 2011

Re: Issue 5752: ListEditor.setValue fails once the underlying AutoBean has been frozen

I don't fully understand the interactions between RequestFactory and the editor system, but it seems that there is another issue which is still causing this error to occur, though it seems to be another, unrelated bug, which only affects the HasDataEditor adapter and the editable HasData objects it wires in to the editor system. 

It appears that in AbstractEditorDelegate.initialize(String, T, E, DelegateMap), the object of type T has ensureMutable(T) called on it, and the value is passed then into setObject(T). It seems to be assumed then that the original parameter object is mutable, as it is passed into LeafValueEditor.setValue(T) at line 255. In the case of the CellTable, which is hooked into the editor framework using the HasDataEditor<T> class (whose IndexedEditor class implements LeafValueEditor), this means that the still-frozen instance has been drawn for the user, and so cannot be edited.

I'm still a little ways away from understanding a good fix for this, but it seems that AbstractEditorDelegate:255 could be changed to read leafValueEditor.setValue(getObject());. If that is the case, it seems likely that other similar changes should also be made nearby (lines 180, 182, and 280). 

All these line numbers are from the 2.2-M1 release.

--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To post to this group, send email to google-web-toolkit@googlegroups.com.
To unsubscribe from this group, send email to google-web-toolkit+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.

No comments:

Post a Comment