We have found it useful to add getConnection() accessors to Roster, RosterEntry and RosterGroup. This allows our client to deal in lower level Smack objects but still be able to map them back to our higher level objects.
For example, we wrapper XMPPConnections in a Session object that can exist without being connected. When we want to open the session we open create/open the underlying connection. The UI on top of this is written in terms of Sessions. At various points we get events and what not from Smack and they point us at Rosters, RosterGroups etc. Unfortunately, there is no way of us navigating the object structure from a Roster to the associated Session without going through the connection object and in 1.4.1 there is no way of getting the connection.
So, is this reasonable and what is the process for making it happen? (the changes are trivial)