You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "John Wagenleitner (JIRA)" <ji...@apache.org> on 2016/04/15 18:33:25 UTC
[jira] [Created] (GROOVY-7816) ObservableList addAll method
property change event index off by one
John Wagenleitner created GROOVY-7816:
-----------------------------------------
Summary: ObservableList addAll method property change event index off by one
Key: GROOVY-7816
URL: https://issues.apache.org/jira/browse/GROOVY-7816
Project: Groovy
Issue Type: Bug
Components: groovy-jdk
Affects Versions: 2.4.6
Reporter: John Wagenleitner
Priority: Minor
The {{ObservableList#addAll()}} method incorrectly calculates the index of the added elements. The elements are correctly appended to the list, but the property change event index value does not point to the start of the appended elements but to the element just prior.
{code}
import java.beans.*
class MyListener implements PropertyChangeListener {
PropertyChangeEvent event
public void propertyChange(PropertyChangeEvent evt) {
event = evt
}
}
ObservableList olist = new ObservableList()
def listener = new MyListener()
olist.addPropertyChangeListener(ObservableList.CONTENT_PROPERTY, listener)
olist.add('one')
assert listener.event.index == 0
olist.add('two')
assert listener.event.index == 1
olist.add('three')
assert listener.event.index == 2
listener.event = null //clear event to make sure one fires for addAll
olist.addAll(['four','five'])
assert olist == ['one','two','three','four','five']
assert olist.get(3) == 'four'
assert listener.event.index == 3 // fails == 2
olist.remove('four')
assert listener.event.index == 3 // passes
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)