I have a small correction for the javadoc under RosterEntry#getType() it says:
When the type is RosterPacket.ItemType.NONE, the subscription request is pending.
This is not necessarily the case, there may just be no subscription request whatsoever. Maybe it should refer to the new #getStatus method?
When the type is RosterPacket.ItemType.NONE or RosterPacket.ItemType.FROM, refer to RosterEntry#getStatus() to see if you have a subscription request pending.