A client implementation for the OpenSource jabber im protocol (see http://jabber.org).
The implementation consists of three parts: a simple IM Client framework, the non-UI JabberClient model and a very simple first UI for the Jabber client.
The IM Client Framework includes a few abstract classes for building IM clients. For now only the JabberClient makes use of it. The mechanisms are close to the ones already used for the IRC client, so porting IRC over to this framework should be easy.
The current version of the JabberClient code includes contribution from different sources, among them Duane Maxwell, Andres Valloud/exobox, Niko Schwarz, Avi Bryant.
The current version handles most of the (un-)subscribe protocol, messages and buddy status changes. Registration is untested and will probably not work as is.
Documentation is non existing right now.
The basic functionality is that the JabberProtocolEntities are parsed from the SocketStream and then dispatch themselves to the client.
The client has a registry with handlers for the different event but also includes some default handling of buddy subscription and status changes.
Marshaling and unmarshaling of entities to/from XML is done in a semi-automatic fashion. It is usually enough for new entities to overwrite the messages marshalingAttributes, marshalingElements, marshalingStringElements and umarshalFromDOM;. Some of this code might be general enough to move it into Object as a class extension at some point.