Roger Whitcomb created PIVOT-1011:
-------------------------------------

             Summary: Move ListenerList implementations of interfaces into the 
interface itself
                 Key: PIVOT-1011
                 URL: https://issues.apache.org/jira/browse/PIVOT-1011
             Project: Pivot
          Issue Type: Improvement
          Components: core-collections, core-util, web, wtk, wtk-terra
         Environment: All
            Reporter: Roger Whitcomb
            Assignee: Roger Whitcomb
            Priority: Minor


A universal paradigm in Pivot is to have a "listener" interface for a class or 
data structure that is used to notify listeners of changes in the class/data.  
There is then an "Adapter" static class in the interface file that implements 
the interface with default implementations.  Then there is a very separate 
enclosed static class that implements the "ListenerList" interface of that 
listener interface.  And usually (or always) this "listener list" class is 
defined/used only in the class that needs to notify the listeners.  However, 
this class must be very parallel to not only the interface itself, but also the 
"Adapter" class, and yet it is in a different place.

So, it seems somewhat reasonable to move all these "listener list" classes into 
the interfaces themselves, so all three related things are located in the same 
file.  A preliminary POC of this concept was done with "Query.java", and 
"QueryListener.java" and it looks good.

This doesn't seem to require changes to client code, because the accessor 
methods only refer to "ListenerList<....>" and not to the listener list class 
itself (in order to be more general, of course), but which helps us to hide the 
implementing class away inside the interface.

I will attach the diff of the POC, to hopefully make this more clear.  It may 
seem a somewhat nebulous concept, but the idea is to keep "like things" 
together for clarity.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to