OF-210: Additional work. (#923)
* Support for Roster Versioning (without send the modifications via roster pushes) * Roster versioning comparison clearing * Implementation Note: This empty IQ-result is different from an empty <query/> element, thus disambiguating this usage from an empty roster. * Avoid cache miss while updating roster When the roster is updated via group renaming, group user adding or removing, the roster pushes only happen if there is a cache hit. If there is a cache miss (what can happen if the cache is full or if the admin cleaned up the cache) the user is not properly notified about the roster update. Thus only update rosters in memory can lead to this undesired behavior. This commit avoids the use of the cache directly (where there can be a cache miss or a cache hit). It is using the method getRoster(username) that instantiante a new Roster in the case of a cache miss. * Clarify the code * OF-210: Base roster version on its hashCode. This commit removes all fields from the Roster class that do not relate to its state (replacing them with method variables - which seems harmless, as they're all final singletons). This allows for an easy override of Object#hashCode() and equals(). These, in turn, are used to calculate the roster version from. * Simplified loop * Prevent potential NPEs. * Log exceptions for exceptions that cannot happen. If they cannot happen, we should scream murder if they do... * OF-210: Roster versioning enabled by default.
Showing
This diff is collapsed.
Please register or sign in to comment