Smack 3.4.0 is released

The Ignite Realtime community is happy to announce the latest release of Smack (version 3.4.0). It is now available for download. This release has a number of noteworthy changes.

  • Deployment structure - Changes reflect the idea of only keeping code that matches specifications that have gone at least as far as the Draft state in the smack or smackx jars.
    • **Workgroups **- This has been pulled out of the main jars and placed on it’s own due to the fact that the spec it is based on hasn’t reached the Draft status of the XEP process. It was in fact moved to the Deferred state in 2005, and is not likely to ever move forward.
    • **Experimental **- New artifact to hold code that has not reached the Draft status of the XEP process. It currently contains the new contribution for XEP-0280 - Message Carbons. Due to the expectation that the specifications that this code is base on will be in a state of flux until being moved forward to a Draft state, this jar will have it’s own versioning scheme. Users should be aware that this code is apt to have API changes and such outside what can be expected of changes to the major version of Smack. It may be more volatile to major changes and should be used with caution. Code deemed experimental will be ‘promoted’ once the specification has reached the Draft state.
  • **Logging **- Smack now uses Java util logging. Prior to this release, what little logging was done consisted of dumping to the system console via System.out/err calls and the infamous printStackTrace calls. Although it is not the most popular of logging libraries, it does not create any external dependencies and can be used in conjunction with either Log4j or Slf4j.
  • Configuration
    • Provider Management - Fixed the long standing issue (SMACK-286) of not being able to change how and where providers are loaded from. The loading of providers from a specific file location has been pulled out of the ProviderManager. The manager is now only responsible for managing the providers, not loading them as well. The API has been augmented to allow for users to provide any means they wish to load providers. A file based one which loads the current file format is provided, so any existing files can be easily added. This can be utilized via the API or a VM argument. The documentation has been updated to reflect these changes, please read for more details.
    • Initialization - System initialization can now be accomplished programmatically via additions to the SmackConfiguration API or by using the new a VM argument. The default behaviour remains the same though, so you don’t have to actually do anything unless you want to change the initialization process or the default system properties. This easily enables developers to only initialize the functionality they want to use. Please read the documentation for more details, and a sample configuration file is now provided in the *samples *directory of the deployment archive.

Here is a partial list of some of the fixes beyond the ones related to the aforementioned items.

  • SMACK-387 - Allow configuration of ChatManager for handling incoming messages.
  • SMACK-403 - Add support for XEP-0297 Stanza Forwarding.
  • SMACK-343 - Fixed OSGi manifests. All jars are fragments of smack.jar.
  • SMACK-339 - Allow ConnectionListeners to be added before Connection is connected.

In addition to these changes, there have been many bugs fixed and a variety of other tasks done, the complete listing can be viewed here.

1 Like

I will file a ticket for Spark to update to 3.4.0, but i wonder if any of these structural changes can have affect on Spark? Maybe i should push it to Spark 2.8.0 and leave 2.7.0 to use the 3.3.1

Sorry to hear you’re stepping down, many (many) thanks for all your hard work!

The only changes you should see is requiring the new workgroups jar if Spark currently supports that functionality. The only thing in the experimental jar is new code.

Out of the box, everything still works the way it did before.

The download link for 3.4.0 seems to be broken.

Someone will take a look at downloads. Meanwhile you can take the nightly build, which seems the same as 3.4.0 release d/Project-binary-files/

My fault, I forgot to sync the file to S3. it is syncing now

Could someone put it into maven central? The last version available through maven is 3.2.1.

Thanks for the release!

Unfortunately the link to the sources is broken:

Unfortunately, these artifacts are no longer produced by the build system. I am not sure how this will be repaired.

Hm ok. Another issue. 3.4.0 seems to have a lot of memory leaks. See this post: