Re: [ecf-dev] Re: Notes on ECF meeting 8/16/05
I wanted to let everyone know that I made some significant API changes
in response to Boris' comments. Specifically:
1) IContainer.joinGroup/leaveGroup are now IContainer.connect/disconnect.
2) Associated exception and param classes (e.g. ContainerJoinException,
IJoinPolicy) renamed to be appropriate with connect/disconnect (e.g.
3) I vastly simplified the ECF namespace extension point. There is no
long an IDInstantiator (interfaces and classes removed), there is just a
namespace class, which must be a subclass of Namespace. The Namespace
abstract superclass declares a method makeInstance, which is responsible
for creating ID instances within that namespace. I made a number of
associated changes to the schema docs, but I need to make another pass
at those docs to check to make sure I've got the right name method/class
name changes all made, etc.
4) I updated the javadocs for IContainer and associated classes.
5) I added a method to IContainer.getConnectNamespace(). This allows a
client to query the container to get a hold of the Namespace that is
appropriate for creating an ID to pass into the 'connect' method. This
way client code can expect containers to provide information sufficient
for a) creating an ID (from a URI, for example) that the container can
use to connect with a remote server or group.
Any comments would be appreciated. I think these API changes make
things both simpler for the API user and simpler for the provider
implementer (which was the goal). Thanks to Boris for proposing these
Boris Bokowski wrote:
Boris questioned the use of joinGroup/leaveGroup rather than
**After discussing with Boris at call I (Scott) and
subsequently thinking about the various arguments for/against
joinGroup/leaveGroup vs. connect/disconnect am inclined to
*change* joinGroup/leaveGroup to connect/disconnect. What do
other people think about this? If we make this API change, I
would like to do it soon, so that we don't have to do it
again, so please let you opinions be known about this as soon as
For the record, here are my arguments for changing
joinGroup/leaveGroup to connect/disconnect:
1. Under the hood, joinGroup in most cases means to connect to a
server that hosts some kind of networked service.
2. The method joinGroup could be misunderstood as being the API to
start a group chat session. Since one of our use-cases is to be able
to connect to an instant-messaging service, we should try to minimize
the chances of confusion.
3. For an example where the IContainer implements some kind of
FTP-based file transfer, joinGroup just seems to be the wrong name.
ecf-dev mailing list