With Confluence 5.2, we are introducing schema and API changes necessary to support the ability to change usernames. To make that possible, users will have a new, unique, permanent key as well as the already-existing, unique, changeable username. See Renamable Users in Confluence 5.2.
This page tells you how to create an upgrade task for your plugin, to migrate existing user data from older versions of Confluence, on upgrade to Confluence 5.2 and later.
The complete rename user functionality will be delivered in 5.3. However the schema and API changes necessary will be released in 5.2 and recommend developers begin updating their add-ons now.
SAL (the Atlassian Shared Access Layer) provides a plugin upgrade manager that listens for the 'Framework started' event and looks for plugin upgrade tasks to run. As a plugin developer, you can provide a plugin upgrade task component, and SAL will guarantee that the upgrade task is run on Confluence startup.
Your plugin needs to use version 2 of the Atlassian Plugin Framework. Check that you have the plugins-version="2"
attribute in atlassian-plugins.xml
:
1 2<atlassian-plugin key="${atlassian.plugin.key}" name="${project.name}" system="true" plugins-version="2"> ...
Your plugin project needs access to the SAL API and Confluence User Compatibility library. Add the following dependencies to the plugin's pom.xml
:
1 2... <dependency> <groupId>com.atlassian.sal</groupId> <artifactId>sal-api</artifactId> <version>2.10.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.atlassian.usercompatibility</groupId> <artifactId>usercompatibility-confluence</artifactId> <version>2.1</version> </dependency> ...
Write a class that implements the PluginUpgradeTask
interface provided by SAL. Here is an example implementation:
1 2package com.atlassian.example; import com.atlassian.confluence.usercompatibility.UserCompatibilityHelper; import com.atlassian.sal.api.message.Message; import com.atlassian.sal.api.pluginsettings.PluginSettings; import com.atlassian.sal.api.pluginsettings.PluginSettingsFactory; import com.atlassian.sal.api.upgrade.PluginUpgradeTask; import com.atlassian.sal.usercompatibility.UserKey; import java.util.Collection; import java.util.Collections; public class UserUpgradeTask implements PluginUpgradeTask { PluginSettings settings; public UserUpgradeTask(PluginSettingsFactory pluginSettingsFactory) { settings = pluginSettingsFactory.createGlobalSettings(); } @Override public int getBuildNumber() { return UserCompatibilityHelper.isRenameUserImplemented() ? 1 : 0; } @Override public String getShortDescription() { return "Migrates username property to userKey property"; } @Override public Collection<Message> doUpgrade() throws Exception { String username = (String) settings.get("com.atlassian.example:username"); UserKey userKey = UserCompatibilityHelper.getKeyForUsername(username); settings.put("com.atlassian.example:userKey", userKey.getStringValue()); settings.remove("com.atlassian.example:username"); return Collections.emptySet(); } @Override public String getPluginKey() { return "com.atlassian.example"; } }
Add the upgrade task as a component in the plugin:
1 2... <component key="userUpgradeTask" name="User Upgrade Task" class="com.atlassian.example.UserUpgradeTask" public="true"> <interface>com.atlassian.sal.api.upgrade.PluginUpgradeTask</interface> </component> ...
The PluginUpgradeManager in SAL will automatically scan for components that implement the PluginUpgradeTask
interface. Please note that they have to be declared as public="true"
.
Repackage the plugin, deploy it to the instance of Confluence that you want to upgrade and restart the Confluence instance. The plugin upgrade task should be executed when Confluence starts up.
Rate this page: