Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/ChangeSupport.java')
-rw-r--r--jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/ChangeSupport.java185
1 files changed, 91 insertions, 94 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/ChangeSupport.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/ChangeSupport.java
index 63409420fd..4015998afa 100644
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/ChangeSupport.java
+++ b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/ChangeSupport.java
@@ -18,6 +18,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import org.eclipse.jpt.utility.internal.ClassTools;
import org.eclipse.jpt.utility.internal.CollectionTools;
import org.eclipse.jpt.utility.internal.StringTools;
import org.eclipse.jpt.utility.internal.model.event.CollectionChangeEvent;
@@ -49,17 +50,17 @@ import org.eclipse.jpt.utility.internal.model.listener.TreeChangeListener;
* and custom "notifiers", with more to come, I'm sure.... ~bjv
*
* NB2: This class will check to see if, during the firing of events, a listener
- * on the original list of listeners has been removed from the mast list of
- * listeners *before* it is notified. If the listener has been removed
+ * on the original, cloned, list of listeners has been removed from the master
+ * list of listeners *before* it is notified. If the listener has been removed
* "concurrently" it will *not* be notified. (See the code that uses the
* 'stillListening' local boolean flag.)
*
* NB3: This class is serializable, but it will only write out listeners that
* are also serializable while silently leaving behind listeners that are not.
*
- * TODO support a dispatcher per listener
- * TODO fire a STATE change event with *every* change?
- * TODO use objects (IDs?) instead of strings to identify aspects
+ * TODO support a dispatcher per listener?
+ * TODO fire a state change event with *every* change?
+ * TODO use objects (IDs?) instead of strings to identify aspects?
*/
public class ChangeSupport
implements Serializable
@@ -68,11 +69,11 @@ public class ChangeSupport
/** The object to be provided as the "source" for any generated events. */
protected final Model source;
- /** Maps a listener class to a collection of "generic" listeners for that class. */
+ /** Associate a listener class to a collection of "generic" listeners for that class. */
transient private GenericListenerList[] genericListeners = EMPTY_GENERIC_LISTENERS;
private static final GenericListenerList[] EMPTY_GENERIC_LISTENERS = new GenericListenerList[0];
- /** Maps aspect names to child change support objects. */
+ /** Associate aspect names to child change support objects. */
private AspectChild[] aspectChildren = EMPTY_ASPECT_CHILDREN;
private static final AspectChild[] EMPTY_ASPECT_CHILDREN = new AspectChild[0];
@@ -97,8 +98,8 @@ public class ChangeSupport
// ********** internal behavior **********
/**
- * Add a listener that listens to all events appropriate to that listener,
- * regardless of the aspect name associated with that event.
+ * Add a "generic" listener that listens to all events appropriate to that
+ * listener, regardless of the aspect name associated with that event.
* The listener cannot be null.
*/
protected <T extends ChangeListener> void addListener(Class<T> listenerClass, T listener) {
@@ -116,7 +117,7 @@ public class ChangeSupport
}
/**
- * Return the generic listener list for the specified listener class.
+ * Return the "generic" listener list for the specified listener class.
* Return null if the list is not present.
*/
protected GenericListenerList genericListenerList(Class<? extends ChangeListener> listenerClass) {
@@ -129,7 +130,7 @@ public class ChangeSupport
}
/**
- * Add the generic listener list for the specified listener class.
+ * Add the "generic" listener list for the specified listener class.
* Return the newly-built generic listener list.
*/
protected <T extends ChangeListener> GenericListenerList addGenericListenerList(Class<T> listenerClass, T listener) {
@@ -166,7 +167,7 @@ public class ChangeSupport
return null;
}
for (AspectChild aspectChild : this.aspectChildren) {
- if (aspectChild.aspectName.equals(aspectName)) {
+ if (aspectChild.aspectName == aspectName) {
return aspectChild.child;
}
}
@@ -191,7 +192,8 @@ public class ChangeSupport
}
/**
- * Removes a listener that has been registered for all events appropriate to that listener.
+ * Removes a "generic" listener that has been registered for all events
+ * appropriate to that listener.
*/
protected <T extends ChangeListener> void removeListener(Class<T> listenerClass, T listener) {
synchronized (this) {
@@ -230,7 +232,7 @@ public class ChangeSupport
}
/**
- * Return the listeners for the specified listener class.
+ * Return the "generic" listeners for the specified listener class.
* Return null if there are no listeners.
*/
protected ChangeListener[] listeners(Class<? extends ChangeListener> listenerClass) {
@@ -248,6 +250,14 @@ public class ChangeSupport
}
/**
+ * Return whether there are no "generic" listeners for the specified
+ * listener class.
+ */
+ protected <T extends ChangeListener> boolean hasNoListeners(Class<T> listenerClass) {
+ return ! this.hasAnyListeners(listenerClass);
+ }
+
+ /**
* Return whether there are any listeners for the specified
* listener class and aspect name.
*/
@@ -260,6 +270,14 @@ public class ChangeSupport
child.hasAnyListeners(listenerClass);
}
+ /**
+ * Return whether there are no "generic" listeners for the specified
+ * listener class and aspect name.
+ */
+ protected <T extends ChangeListener> boolean hasNoListeners(Class<T> listenerClass, String aspectName) {
+ return ! this.hasAnyListeners(listenerClass, aspectName);
+ }
+
// ********** behavior **********
@@ -308,11 +326,10 @@ public class ChangeSupport
*/
public void fireStateChanged(StateChangeEvent event) {
- StateChangeListener[] stateChangeListeners = null;
StateChangeListener[] targets = null;
synchronized (this) {
- stateChangeListeners = this.stateChangeListeners();
+ StateChangeListener[] stateChangeListeners = this.stateChangeListeners();
if (stateChangeListeners != null) {
targets = stateChangeListeners.clone();
}
@@ -334,16 +351,16 @@ public class ChangeSupport
}
/**
- * Report a generic state change event to any registered state change listeners.
+ * Report a generic state change event to any registered state change
+ * listeners.
*/
public void fireStateChanged() {
// this.fireStateChange(new StateChangeEvent(this.source));
- StateChangeListener[] stateChangeListeners = null;
StateChangeListener[] targets = null;
synchronized (this) {
- stateChangeListeners = this.stateChangeListeners();
+ StateChangeListener[] stateChangeListeners = this.stateChangeListeners();
if (stateChangeListeners != null) {
targets = stateChangeListeners.clone();
}
@@ -458,12 +475,11 @@ public class ChangeSupport
String propertyName = event.propertyName();
- PropertyChangeListener[] propertyChangeListeners = null;
PropertyChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- propertyChangeListeners = this.propertyChangeListeners();
+ PropertyChangeListener[] propertyChangeListeners = this.propertyChangeListeners();
if (propertyChangeListeners != null) {
targets = propertyChangeListeners.clone();
}
@@ -500,12 +516,11 @@ public class ChangeSupport
return;
}
- PropertyChangeListener[] propertyChangeListeners = null;
PropertyChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- propertyChangeListeners = this.propertyChangeListeners();
+ PropertyChangeListener[] propertyChangeListeners = this.propertyChangeListeners();
if (propertyChangeListeners != null) {
targets = propertyChangeListeners.clone();
}
@@ -553,12 +568,11 @@ public class ChangeSupport
return;
}
- PropertyChangeListener[] propertyChangeListeners = null;
PropertyChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- propertyChangeListeners = this.propertyChangeListeners();
+ PropertyChangeListener[] propertyChangeListeners = this.propertyChangeListeners();
if (propertyChangeListeners != null) {
targets = propertyChangeListeners.clone();
}
@@ -606,12 +620,11 @@ public class ChangeSupport
return;
}
- PropertyChangeListener[] propertyChangeListeners = null;
PropertyChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- propertyChangeListeners = this.propertyChangeListeners();
+ PropertyChangeListener[] propertyChangeListeners = this.propertyChangeListeners();
if (propertyChangeListeners != null) {
targets = propertyChangeListeners.clone();
}
@@ -710,12 +723,11 @@ public class ChangeSupport
String collectionName = event.collectionName();
- CollectionChangeListener[] collectionChangeListeners = null;
CollectionChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- collectionChangeListeners = this.collectionChangeListeners();
+ CollectionChangeListener[] collectionChangeListeners = this.collectionChangeListeners();
if (collectionChangeListeners != null) {
targets = collectionChangeListeners.clone();
}
@@ -749,12 +761,11 @@ public class ChangeSupport
return;
}
- CollectionChangeListener[] collectionChangeListeners = null;
CollectionChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- collectionChangeListeners = this.collectionChangeListeners();
+ CollectionChangeListener[] collectionChangeListeners = this.collectionChangeListeners();
if (collectionChangeListeners != null) {
targets = collectionChangeListeners.clone();
}
@@ -795,12 +806,11 @@ public class ChangeSupport
public void fireItemAdded(String collectionName, Object addedItem) {
// this.fireItemsAdded(collectionName, Collections.singleton(addedItem));
- CollectionChangeListener[] collectionChangeListeners = null;
CollectionChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- collectionChangeListeners = this.collectionChangeListeners();
+ CollectionChangeListener[] collectionChangeListeners = this.collectionChangeListeners();
if (collectionChangeListeners != null) {
targets = collectionChangeListeners.clone();
}
@@ -845,12 +855,11 @@ public class ChangeSupport
String collectionName = event.collectionName();
- CollectionChangeListener[] collectionChangeListeners = null;
CollectionChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- collectionChangeListeners = this.collectionChangeListeners();
+ CollectionChangeListener[] collectionChangeListeners = this.collectionChangeListeners();
if (collectionChangeListeners != null) {
targets = collectionChangeListeners.clone();
}
@@ -884,12 +893,11 @@ public class ChangeSupport
return;
}
- CollectionChangeListener[] collectionChangeListeners = null;
CollectionChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- collectionChangeListeners = this.collectionChangeListeners();
+ CollectionChangeListener[] collectionChangeListeners = this.collectionChangeListeners();
if (collectionChangeListeners != null) {
targets = collectionChangeListeners.clone();
}
@@ -930,12 +938,11 @@ public class ChangeSupport
public void fireItemRemoved(String collectionName, Object removedItem) {
// this.fireItemsRemoved(collectionName, Collections.singleton(removedItem));
- CollectionChangeListener[] collectionChangeListeners = null;
CollectionChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- collectionChangeListeners = this.collectionChangeListeners();
+ CollectionChangeListener[] collectionChangeListeners = this.collectionChangeListeners();
if (collectionChangeListeners != null) {
targets = collectionChangeListeners.clone();
}
@@ -976,12 +983,11 @@ public class ChangeSupport
public void fireCollectionCleared(CollectionChangeEvent event) {
String collectionName = event.collectionName();
- CollectionChangeListener[] collectionChangeListeners = null;
CollectionChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- collectionChangeListeners = this.collectionChangeListeners();
+ CollectionChangeListener[] collectionChangeListeners = this.collectionChangeListeners();
if (collectionChangeListeners != null) {
targets = collectionChangeListeners.clone();
}
@@ -1012,12 +1018,11 @@ public class ChangeSupport
public void fireCollectionCleared(String collectionName) {
// this.fireCollectionCleared(new CollectionChangeEvent(this.source, collectionName));
- CollectionChangeListener[] collectionChangeListeners = null;
CollectionChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- collectionChangeListeners = this.collectionChangeListeners();
+ CollectionChangeListener[] collectionChangeListeners = this.collectionChangeListeners();
if (collectionChangeListeners != null) {
targets = collectionChangeListeners.clone();
}
@@ -1058,12 +1063,11 @@ public class ChangeSupport
public void fireCollectionChanged(CollectionChangeEvent event) {
String collectionName = event.collectionName();
- CollectionChangeListener[] collectionChangeListeners = null;
CollectionChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- collectionChangeListeners = this.collectionChangeListeners();
+ CollectionChangeListener[] collectionChangeListeners = this.collectionChangeListeners();
if (collectionChangeListeners != null) {
targets = collectionChangeListeners.clone();
}
@@ -1094,12 +1098,11 @@ public class ChangeSupport
public void fireCollectionChanged(String collectionName) {
// this.fireCollectionChanged(new CollectionChangeEvent(this.source, collectionName));
- CollectionChangeListener[] collectionChangeListeners = null;
CollectionChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- collectionChangeListeners = this.collectionChangeListeners();
+ CollectionChangeListener[] collectionChangeListeners = this.collectionChangeListeners();
if (collectionChangeListeners != null) {
targets = collectionChangeListeners.clone();
}
@@ -1198,12 +1201,11 @@ public class ChangeSupport
String listName = event.listName();
- ListChangeListener[] listChangeListeners = null;
ListChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- listChangeListeners = this.listChangeListeners();
+ ListChangeListener[] listChangeListeners = this.listChangeListeners();
if (listChangeListeners != null) {
targets = listChangeListeners.clone();
}
@@ -1237,12 +1239,11 @@ public class ChangeSupport
return;
}
- ListChangeListener[] listChangeListeners = null;
ListChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- listChangeListeners = this.listChangeListeners();
+ ListChangeListener[] listChangeListeners = this.listChangeListeners();
if (listChangeListeners != null) {
targets = listChangeListeners.clone();
}
@@ -1283,12 +1284,11 @@ public class ChangeSupport
public void fireItemAdded(String listName, int index, Object addedItem) {
// this.fireItemsAdded(listName, index, Collections.singletonList(addedItem));
- ListChangeListener[] listChangeListeners = null;
ListChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- listChangeListeners = this.listChangeListeners();
+ ListChangeListener[] listChangeListeners = this.listChangeListeners();
if (listChangeListeners != null) {
targets = listChangeListeners.clone();
}
@@ -1333,12 +1333,11 @@ public class ChangeSupport
String listName = event.listName();
- ListChangeListener[] listChangeListeners = null;
ListChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- listChangeListeners = this.listChangeListeners();
+ ListChangeListener[] listChangeListeners = this.listChangeListeners();
if (listChangeListeners != null) {
targets = listChangeListeners.clone();
}
@@ -1372,12 +1371,11 @@ public class ChangeSupport
return;
}
- ListChangeListener[] listChangeListeners = null;
ListChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- listChangeListeners = this.listChangeListeners();
+ ListChangeListener[] listChangeListeners = this.listChangeListeners();
if (listChangeListeners != null) {
targets = listChangeListeners.clone();
}
@@ -1418,12 +1416,11 @@ public class ChangeSupport
public void fireItemRemoved(String listName, int index, Object removedItem) {
// this.fireItemsRemoved(listName, index, Collections.singletonList(removedItem));
- ListChangeListener[] listChangeListeners = null;
ListChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- listChangeListeners = this.listChangeListeners();
+ ListChangeListener[] listChangeListeners = this.listChangeListeners();
if (listChangeListeners != null) {
targets = listChangeListeners.clone();
}
@@ -1468,12 +1465,11 @@ public class ChangeSupport
String listName = event.listName();
- ListChangeListener[] listChangeListeners = null;
ListChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- listChangeListeners = this.listChangeListeners();
+ ListChangeListener[] listChangeListeners = this.listChangeListeners();
if (listChangeListeners != null) {
targets = listChangeListeners.clone();
}
@@ -1507,12 +1503,11 @@ public class ChangeSupport
return;
}
- ListChangeListener[] listChangeListeners = null;
ListChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- listChangeListeners = this.listChangeListeners();
+ ListChangeListener[] listChangeListeners = this.listChangeListeners();
if (listChangeListeners != null) {
targets = listChangeListeners.clone();
}
@@ -1553,12 +1548,11 @@ public class ChangeSupport
public void fireItemReplaced(String listName, int index, Object newItem, Object replacedItem) {
// this.fireItemsReplaced(listName, index, Collections.singletonList(newItem), Collections.singletonList(replacedItem));
- ListChangeListener[] listChangeListeners = null;
ListChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- listChangeListeners = this.listChangeListeners();
+ ListChangeListener[] listChangeListeners = this.listChangeListeners();
if (listChangeListeners != null) {
targets = listChangeListeners.clone();
}
@@ -1603,12 +1597,11 @@ public class ChangeSupport
String listName = event.listName();
- ListChangeListener[] listChangeListeners = null;
ListChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- listChangeListeners = this.listChangeListeners();
+ ListChangeListener[] listChangeListeners = this.listChangeListeners();
if (listChangeListeners != null) {
targets = listChangeListeners.clone();
}
@@ -1642,12 +1635,11 @@ public class ChangeSupport
return;
}
- ListChangeListener[] listChangeListeners = null;
ListChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- listChangeListeners = this.listChangeListeners();
+ ListChangeListener[] listChangeListeners = this.listChangeListeners();
if (listChangeListeners != null) {
targets = listChangeListeners.clone();
}
@@ -1695,12 +1687,11 @@ public class ChangeSupport
public void fireListCleared(ListChangeEvent event) {
String listName = event.listName();
- ListChangeListener[] listChangeListeners = null;
ListChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- listChangeListeners = this.listChangeListeners();
+ ListChangeListener[] listChangeListeners = this.listChangeListeners();
if (listChangeListeners != null) {
targets = listChangeListeners.clone();
}
@@ -1731,12 +1722,11 @@ public class ChangeSupport
public void fireListCleared(String listName) {
// this.fireListCleared(new ListChangeEvent(this.source, listName));
- ListChangeListener[] listChangeListeners = null;
ListChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- listChangeListeners = this.listChangeListeners();
+ ListChangeListener[] listChangeListeners = this.listChangeListeners();
if (listChangeListeners != null) {
targets = listChangeListeners.clone();
}
@@ -1777,12 +1767,11 @@ public class ChangeSupport
public void fireListChanged(ListChangeEvent event) {
String listName = event.listName();
- ListChangeListener[] listChangeListeners = null;
ListChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- listChangeListeners = this.listChangeListeners();
+ ListChangeListener[] listChangeListeners = this.listChangeListeners();
if (listChangeListeners != null) {
targets = listChangeListeners.clone();
}
@@ -1813,12 +1802,11 @@ public class ChangeSupport
public void fireListChanged(String listName) {
// this.fireListChanged(new ListChangeEvent(this.source, listName));
- ListChangeListener[] listChangeListeners = null;
ListChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- listChangeListeners = this.listChangeListeners();
+ ListChangeListener[] listChangeListeners = this.listChangeListeners();
if (listChangeListeners != null) {
targets = listChangeListeners.clone();
}
@@ -1914,12 +1902,11 @@ public class ChangeSupport
public void fireNodeAdded(TreeChangeEvent event) {
String treeName = event.treeName();
- TreeChangeListener[] treeChangeListeners = null;
TreeChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- treeChangeListeners = this.treeChangeListeners();
+ TreeChangeListener[] treeChangeListeners = this.treeChangeListeners();
if (treeChangeListeners != null) {
targets = treeChangeListeners.clone();
}
@@ -1950,12 +1937,11 @@ public class ChangeSupport
public void fireNodeAdded(String treeName, Object[] path) {
// this.fireNodeAdded(new TreeChangeEvent(this.source, treeName, path));
- TreeChangeListener[] treeChangeListeners = null;
TreeChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- treeChangeListeners = this.treeChangeListeners();
+ TreeChangeListener[] treeChangeListeners = this.treeChangeListeners();
if (treeChangeListeners != null) {
targets = treeChangeListeners.clone();
}
@@ -1996,12 +1982,11 @@ public class ChangeSupport
public void fireNodeRemoved(TreeChangeEvent event) {
String treeName = event.treeName();
- TreeChangeListener[] treeChangeListeners = null;
TreeChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- treeChangeListeners = this.treeChangeListeners();
+ TreeChangeListener[] treeChangeListeners = this.treeChangeListeners();
if (treeChangeListeners != null) {
targets = treeChangeListeners.clone();
}
@@ -2032,12 +2017,11 @@ public class ChangeSupport
public void fireNodeRemoved(String treeName, Object[] path) {
// this.fireNodeRemoved(new TreeChangeEvent(this.source, treeName, path));
- TreeChangeListener[] treeChangeListeners = null;
TreeChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- treeChangeListeners = this.treeChangeListeners();
+ TreeChangeListener[] treeChangeListeners = this.treeChangeListeners();
if (treeChangeListeners != null) {
targets = treeChangeListeners.clone();
}
@@ -2078,12 +2062,11 @@ public class ChangeSupport
public void fireTreeCleared(TreeChangeEvent event) {
String treeName = event.treeName();
- TreeChangeListener[] treeChangeListeners = null;
TreeChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- treeChangeListeners = this.treeChangeListeners();
+ TreeChangeListener[] treeChangeListeners = this.treeChangeListeners();
if (treeChangeListeners != null) {
targets = treeChangeListeners.clone();
}
@@ -2114,12 +2097,11 @@ public class ChangeSupport
public void fireTreeCleared(String treeName, Object[] path) {
// this.fireTreeCleared(new TreeChangeEvent(this.source, treeName, path));
- TreeChangeListener[] treeChangeListeners = null;
TreeChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- treeChangeListeners = this.treeChangeListeners();
+ TreeChangeListener[] treeChangeListeners = this.treeChangeListeners();
if (treeChangeListeners != null) {
targets = treeChangeListeners.clone();
}
@@ -2167,12 +2149,11 @@ public class ChangeSupport
public void fireTreeChanged(TreeChangeEvent event) {
String treeName = event.treeName();
- TreeChangeListener[] treeChangeListeners = null;
TreeChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- treeChangeListeners = this.treeChangeListeners();
+ TreeChangeListener[] treeChangeListeners = this.treeChangeListeners();
if (treeChangeListeners != null) {
targets = treeChangeListeners.clone();
}
@@ -2203,12 +2184,11 @@ public class ChangeSupport
public void fireTreeChanged(String treeName, Object[] path) {
// this.fireTreeChanged(new TreeChangeEvent(this.source, treeName, path));
- TreeChangeListener[] treeChangeListeners = null;
TreeChangeListener[] targets = null;
ChangeSupport child = null;
synchronized (this) {
- treeChangeListeners = this.treeChangeListeners();
+ TreeChangeListener[] treeChangeListeners = this.treeChangeListeners();
if (treeChangeListeners != null) {
targets = treeChangeListeners.clone();
}
@@ -2321,20 +2301,23 @@ public class ChangeSupport
// ********** member classes **********
/**
- * Pair a listener class with its generic listeners.
+ * Pair a listener class with its "generic" listeners.
*/
private static class GenericListenerList {
final Class<? extends ChangeListener> listenerClass;
ChangeListener[] listeners;
+
<T extends ChangeListener> GenericListenerList(Class<T> listenerClass, T listener) {
super();
this.listenerClass = listenerClass;
this.listeners = (ChangeListener[]) Array.newInstance(listenerClass, 1);
this.listeners[0] = listener;
}
+
void addListener(ChangeListener listener) {
this.listeners = CollectionTools.add(this.listeners, listener);
}
+
boolean removeListener(ChangeListener listener) {
int len = this.listeners.length;
if (len == 0) {
@@ -2347,9 +2330,16 @@ public class ChangeSupport
}
return (this.listeners.length + 1) == len;
}
+
boolean hasListeners() {
return this.listeners.length > 0;
}
+
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this, ClassTools.shortNameFor(this.listenerClass));
+ }
+
}
/**
@@ -2360,11 +2350,18 @@ public class ChangeSupport
final String aspectName;
final ChangeSupport child;
private static final long serialVersionUID = 1L;
+
AspectChild(String aspectName, ChangeSupport child) {
super();
this.aspectName = aspectName;
this.child = child;
}
+
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this, this.aspectName);
+ }
+
}
}

Back to the top