|
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
|