diff options
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.java | 185 |
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); + } + } } |