Changes are afoot in the Confluence codebase. And there are a few things that are important for you, as plugin developers, to know. You may need to make some modifications to your plugins to ensure that they will be compatible with the next version of Confluence (2.1).
Atlassian developer Nick Faiz has been hard at work designing and building the next generation of user management for Atlassian’s products. The new library, AtlassianUser, is currently being integrated into Confluence and will follow in JIRA soon thereafter.
Starting with Confluence 2.1 DR1, the user system in Confluence will have changed from OSUser to AtlassianUser.

What will AtlassianUser do for me?

  1. AtlassianUser improves the LDAP integration for Confluence and will, eventually, do so for JIRA. Users and Groups are read on demand from the LDAP system.
  2. You can set up delegations in AtlassianUser, to call on several different kinds of backend systems for storing users and groups. You can add your own implementation of the Atlassian User libraries to a delegation (to meet a specialized case) or use one of the pre-bundled implementations. Besides the OSUser, LDAP, and Hibernate implementations we also have caching, delegation, and memory layers, to improve performance, run the delegation, and speed up testing.
  3. The Hibernate implementation uses a new, normalized database structure for users and groups.
  4. AtlassianUser will improve performance when dealing with large numbers of users.

What will I need to do for AtlassianUser?

If your plugin makes use of the OSUser API you’ll need to refactor it to use the new AtlassianUser Library.
We’ve done our best to make sure that the required changes are minimal. The new interface is almost identical, so in many cases the only code which needs to altered is the import statement. For example:

import com.opensymphony.user.*;

becomes

import com.atlassian.user.*;

However, do note that when you check group-to-user relationships (i.e., group memberships) you should now query using the userAccessor facade, rather than using the user object directly. For example:

osuserObj.getGroups();

becomes

userAccessor.getGroups(atlassianUserObj)

Where are we now?

AtlassianUser has recently been merged in the main source tree of Confluence and will eventually appear as a production-ready version as Confluence 2.1 . We have made early version available in .war form on http://confluence.atlassian.com. If you think your plugin may be effected, you should use this version to prepare your plugins for the upgrade to AtlassianUser.
Importantly, this version is a beta. It is a chance for you to have a ‘first look’, run tests in your environment, test your plugins, etc. We cannot supported this version in a production environment, though bug reports are welcome.

By the way, we’d like to give a quick shout-out to all the folks that have helped us get this far. The ‘early adopters’ have provided great ideas, criticisms and have shared a wealth of experience. Thanks 🙂
We’d also like to acknowedge the work of the Apache Directory Server team. AtlassianUser uses Apache Directory Server extensively in its tests. We’re looking forward to seeing Apache Directory Server 1.0 appear in the first half of next year!
Cheers!

Fresh ideas, announcements, and inspiration for your team, delivered weekly.

Subscribe now