First of all thanks to all of you who contributed to this release (reported bugs, tested stuff, made suggestions for improvements, etc.).
There were three main requests you asked for:
- More configuration options, especially for the connections (e.g. to set a custom SocketFactory, to set custom keep-alive intervals, etc.)
- Maven Central integration
The good news is, that this release accounts for everything of it! The bad news is that it's incomptible with the previous version, but hey, that's why it's still in development status.
More Configuration Options
The old connections only had very limited configuration options, which were passed to the constructor. Of course this didn't scale very well when the demand for more configuration options increases. Therefore there's now a configuration object, which let's you configure the connection.
Instead of passing a connection to the
XmppSession, you now pass the configuration object to it. This allows you to reuse a configuration for multiple sessions. The session then creates a new connection based on the configuration.
There's also a configuration object for the whole
XmppSession, e.g. to set a debugger. It also takes responsibility to create the
JAXBContext, which was previously done in the
XmppSession. This has the advantage that it doesn't need to be recreated for each new session (because it is quite expensive to create it).
The previous version did a bad job on modularization, in fact you weren't able to only use XMPP core functionality without having to include all extensions. This version now improves on this situation. There's a better separation between core and extensions, so that you only need to include a small jar file, if you only want XMPP core functionality.
Maven Central Integration
Some people asked for it and it has always been a long-term goal: Maven Central integration. Well, it now happened earlier than I thought, this is the first version to be available on Maven Central!
They made me register a domain, so that they could assign a unique groupId: xmpp.rocks.
The new domain also made me feel like changing the package name, in order to fit the groupId and generally it's the convention to use the domain you control for the package name. Given that the API wouldn't be compatible anyway (due to the mentioned new configuration objects and also due to the modularization) I changed the package name to "rocks.xmpp" and also took the opportunity to refactor some other package names. So, if you are migrating from a previous version, you have to refresh your import statements.Here are the coordinates:
<dependency> <groupId>rocks.xmpp</groupId> <artifactId>xmpp-core-client</artifactId> <version>0.4.0</version> </dependency> <dependency> <groupId>rocks.xmpp</groupId> <artifactId>xmpp-extensions-client</artifactId> <version>0.4.0</version> </dependency>
One cool new feature is the visual XMPP viever/debugger (written in JavaFX). I've already blogged about it in my last post, but here's a small glimpse, how it looks like:
There have also been other new features, improvements and bug fixes, which are listed in the changelog.As always: I am happy about feedback!