Bug 15844 [Exception Handling] SelectionChange events and NPE
Build 20020508 Due to new global actions there are now more objects listening to selection changes send out by a JFace viewer. We now had the case that one of the listener generated a NPE. As a result all listeners registered after that one didn't receive the selection change event. StructuredViewers should be more fault tolorant to exceptions when informing listeners.
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/Viewer.java
* Sets the value of the property with the given name to the
 * given value, or to <code>null</code> if the property is to be
 * removed. If this viewer has such a property, its value is
 * replaced; otherwise a new property is added.
 * <p>
 * The default implementation records properties in an internal
 * table which is searched linearly. Overriding this method is generally not
 * required if the number of different keys is small. If a more
 * efficient representation of a viewer's properties is required,
 * override both <code>getData</code> and <code>setData</code>.
 * </p>
 *
 * @param key the property name
 * @param value the property value, or <code>null</code> if
 *    the property is not found
 */
public void setData (String key, Object value) {
	Assert.isNotNull(key);
	
	if (value == null) {
		if (keys == null) return;
		int index = 0;
		while (index < keys.length && !keys[index].equals (key)) index++;
		if (index == keys.length) return;
		if (keys.length == 1) {
			keys = null;
			values = null;
		} else {
			String [] newKeys = new String[keys.length - 1];
			Object [] newValues = new Object[values.length - 1];