Aggregation api used by Coins

Bill la Forge (b.laforge@jxml.com)
Sun, 11 Oct 1998 20:55:06 -0400


The aggrigation code used by Coins is available
without commercial restriction:
http://www.jxml.com/coins/download.html
(Slect the services981011.zip file)

In Coins, Aggregation builds on a cactus stack of services. CoinsDocument
is an interface which extends org.w3c.dom.Document and
com.jxml.services.ServiceItem, which allows it to participate in an Aggregate.

Bill

>From: Peter Murray-Rust <peter@ursus.demon.co.uk>
>>Question in return, what exactly is delegation and can you give an example.
>>[It's been mentioned both in the context of Java classes and link-catalogs].
>
>
>I think it has to do with aggregation. A client of the aggregate requests a
>delegate of the aggregate which supports a particular interface. At least, this
>is what I've been assuming...
>
>This is the heart of COM and was to be a part of JavaBeans. It is also the
>key to advanced Coin applications, as the CoinsDocument class is part of
>an aggregate.
>
>It is important in Java, to get arround single-inheritence. I believe the problem
>with the JavaSoft aggregation was that the client specified a Class object,
>requiring that the tree of classes ('cause you must include interfaces) had
>to be searched for each object in the aggregate collection of objects.
>
>Coins uses a filter object to select the appropriate delegate. This means that
>(1) you can simply use the instanceof operator in the filter match method instead
>of having to do the class tree search and (2) you can select based on any
>criteria, allowing for selection based on role.
>
>(I need to make this package accessable again on the Coins web page. Its freeware.)
>
>Now since there is no standard api (for Java), its kinda hard to give a
>simple example, code wise. But lets say that we have a Juggler with two listener
>registration interfaces, one for start and one for stop. If the Juggler were a single class,
>you would simply cast the Juggler object to the appropriate interface. Unfortunately, that
>means that the two interfaces can not have any common methods.
>
>If the registration interfaces for start and stop were seperate objects, but were different
>interface types, then you could ask the Juggler aggregate object for, say, an instance of
>the startListenerRegistration object.
>
>If role were supported, then the objects supporting the ActionListenerRegistration
>interface could be requested as the "start" object or the "stop" object.