Bug 167204 [DataBinding] Ensure that getterCalled() is invoked correctly in WritableList
We need to clean up WritableList as its getterCalled() invocation is somewhat sporatic. Changes that need to be made: * setters should not invoke getterCalled(); this means all add(..) and remove(...) methods. * iterator() should invoke getterCalled() (ObservableList) * next() and hasNext() on the iterator should not invoke getterCalled() (ObservableList) The idea was previously that because add*(...) and remove*(...) returned a value then the state was retrieved thus getterCalled() should be invoked. But for the sake of simplicity these will be removed; we can always add them back later. But in removing the calls to getterCalled() we need to ensure that the current realm is still checked.
bundles/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/list/AbstractObservableList.java
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.AssertionFailedException;
/**
 * Subclasses should override at least get(int index) and size().
 * 
 * <p>
 * This class is thread safe. All state accessing methods must be invoked from
 * the {@link Realm#isCurrent() current realm}. Methods for adding and removing
 * listeners may be invoked from any thread.
 * </p>
 * 
 * @since 1.0
 * 
 */
public abstract class AbstractObservableList extends AbstractList implements
		IObservableList {
	/**
	 * Points to an instance of IListChangeListener or a Collection of
	 * IListChangeListener.  Access must be synchronized.
	 */
	private Object listChangeListeners;
	/**
	 * Points to an instance of IChangeListener or a Collection of
	 * IChangeListener.  Access must be synchronized.
	 */
	private Object changeListeners = null;
	/**
	 * Points to an instance of IChangeListener or a Collection of
	 * IStaleListener.  Access must be synchronized.
	 */