Thursday, August 11, 2016

Babbler 0.7.1 (Bugfix) Released

A bugfix version of the XMPP client library has been released to Maven Central: 0.7.1

Here's the changelog:

  • Discovering services should not fail immediately if one sub-query fails.
  • Make sure abnormal WebSocket disconnections trigger the reconnection.
  • Make sure RECONNECTION_SUCCEEDED event is triggered for external components.
  • Add listeners to listen for successful or failed send operations.
  • Add public constructor for the SASL challenge class.
  • Add public constructors to SASL Failure class.
  • Make sure to not write XMLConstants.XML_NS_URI to XML elements (FasterXML Aalto’s XMLStreamWriter implementation writes it)
  • Add DataForm.Field#getValue() and implement toString() method.
  • Add convenient API to compare two MUC affiliations and roles (i.e. Affiliation.OWNER.isHigherThan(Affiliation.ADMIN))
  • Compare presences of MUC occupants in the Occupant’s Comparable implementation.
  • Minor performance improvement by using a ListIterator in collection based result sets.
  • Discover PubSub services by identity, not by feature name (it’s more reliable)
  • Add nextPage() and previousPage() method and refine the naming of other methods in result set management (e.g. having forCount() and forItemCount() was confusing)

8 comments:

  1. Hi,
    I am not able to import XmppClient class. I tried with version 0.7.1 as well as 0.8.0 Snapshot.

    ReplyDelete
    Replies
    1. Hi, it's in xmpp-core-client.jar:


      rocks.xmpp
      xmpp-core-client
      0.7.1

      Delete
    2. Thanks for your reply. I tried with the consolidated jar after maven build babbler.jar. Won't it suffice? Will I still need to include xmpp-core, xmpp-core-client etc manually?

      Delete
    3. The assembled babbler.jar has XmppClient as well. In fact it has all classes. You don't need any other jars then.

      Delete
    4. Thanks. I got it working. Turns out that I had to upgrade Myeclipse version with jdk 8 support.

      Delete
  2. Hi, first thanks for your effort. I'm using the library with some success. However I'm experiencing a weird issue using BOSH.

    When running in JVM I can get BOSH to work, however when I build a JAR and run it in terminal or bash, i can succesfully login, however when i try to send an IQ, the library instead sends a "terminate" to the server. This happens everytime and I can't debug this issue because running inside a debugger it works just fine...any ideas?

    ReplyDelete
    Replies
    1. upon further investigation i got this.

      DISCONNECTED (old status: AUTHENTICATED)
      Status change caused by:
      javax.xml.bind.MarshalException
      - with linked exception:
      [com.sun.istack.internal.SAXException2: class rocks.xmpp.extensions.version.model.SoftwareVersion nor any of its super class is known to this context.
      javax.xml.bind.JAXBException: class rocks.xmpp.extensions.version.model.SoftwareVersion nor any of its super class is known to this context.]

      So I think my JAX Context isn't loading all of the possible known types.

      Delete
    2. Hi,

      it's possible that you are missing xmpp-extensions.jar from the classpath, when running from terminal!?
      Extensions are loaded and located by java.util.ServiceLoader. So it scans the classpath for possible modules and then builds up the JAXBContext. The module which contains SoftwareVersion is in xmpp-extensions.jar.
      On the other hand I would have expected a ClassNotFoundException then, too, during runtime.

      Delete