[Biojava-l] Proposal: ChangeType hierarchies

Matthew Pocock mrp@sanger.ac.uk
Thu, 22 Feb 2001 12:48:49 +0000

Thomas Down wrote:

> Now that we're comfortable working with ChangeEvents, I'd
> like to propose a really simple enhancement to the
> ChangeType objects:
>   - Add two methods to ChangeType:
>      public ChangeType getParent();
>      public boolean isSubType(ChangeType t);
>   - Add extra constructors to ChangeType objects which allow
>     a parent to be specified.  If the current (no-parent)
>     constructors are used, we default to ChangeType.UNKNOWN
>     (which becomes the root of the type hierarchy).
>     [Open issue: what is the value of ChangeType.UNKNOWN.getParent()?]

null, I think. Alternatively, it is its own parent (uck).

>   - ChangeEvent sources use isSubType() to check if a listener
>     is interested in a given ChangeType, rather than simple
>     object equality.  Right  now, I can't think of any event sources
>     which don't use ChangeSupport, so that's the only  place
>     we would have to make this change.
>   - Once nice side effect of this is that registering a listener
>     with no specified type becomes exactly equivalent to listening
>     for ChangeType.UNKNOWN
> This change would make it easy for specific implementations of
> an interface to fire specialized sub-types of some common change
> types.  Client code can then listen either to one or more of
> the specialized types, OR to the common base type.
> Impact on current code would be minimal -- The only
> place I can think of where any changes will be needed
> is ChangeSupport.

We should also remove the add/removeChangeListener(listener) methods, 
requiring add/removeChangeListener(listener, UNKNOWN) to be used instead.

> What do people think of this one?
>    Thomas.
> _______________________________________________
> Biojava-l mailing list  -  Biojava-l@biojava.org
> http://biojava.org/mailman/listinfo/biojava-l

Do we have the ChangeEvent -> bean property event bridge? This should be 
an early priority for 1.2