From: Matthieu S. (JIRA) <no...@sp...> - 2010-03-31 14:00:37
|
[ https://jira.springsource.org/browse/RCP-631?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Matthieu Steyt updated RCP-631: ------------------------------- Attachment: AbstractFormModelTests.java.patch It seems that this test case has been lucky for a long time... After switching the role of the two properties in this test case, it fails. This because simpleProperty is always cleared after singleSelectListProperty (this as a side effect of the used Map implementation used to hold the mediatingValueModels). See attachment for a patch containing such a switch. So, as it seems that the behaviour as tested in testSetFormObjectUpdatesDirtyState has never worked correctly, the question is : what should be the correct behaviour? The javadoc states "Disconnect view from data in MediatingValueModels, possibly clearing them afterwards.", so I expect all valuemodels to be cleared after calling this method with clearValueModels = 'true' The use case is simple, after calling setFormObject() on the formmodel I expect the formmodel to be 'not dirty'. > Clearing the valuemodels in AbstractFormModel#setDeliverValueChangeEvents(boolean,boolean) should occur after all ValueChangeEvents are delivered. > -------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: RCP-631 > URL: https://jira.springsource.org/browse/RCP-631 > Project: Spring Rich Client Project > Issue Type: Bug > Components: Core > Affects Versions: 1.1.0 > Reporter: Matthieu Steyt > Assignee: Geoffrey De Smet > Priority: Major > Fix For: 1.1.1 > > Attachments: AbstractFormModelTests.java.patch > > > Consider the following example: > A formmodel containing two valuemodels A and B. B has a changelistener registered in which A gets a new value. The current implementation of the setDeliverValueChangeEvents(boolean,boolean) method uses the following sequence: > 1. valueChangeEvents of A are delivered > 2. A is cleared (dirty = false) > 3. valueChangeEvents of B are delivered, as a consequence A is adapted (back to dirty) > 4. B is cleared (dirty = false) > Result: > A is dirty, while it is the intention of the method that A is cleared. > Solution: > Two for-loops instead of one. One for firing the events and one for clearing the value models. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: https://jira.springsource.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira |