Java API Documentation (v 2.6)
- 1 Quick Start Guide
- 1.1 Jira Plugin
- 1.2 Scriptrunner
- 2 Internal structure and basic usage
Quick Start Guide
Jira Plugin
Download the following files
Â
Add the files to your Maven repository
There are two possibilities to install the library files. Either install them in a local Maven repository or deploy them to a hosted Maven repository.
Install in the local Maven repository
mvn install:install-file -Dfile=user-profiles-external-api-1.1.0.jar -DgroupId=de.communardo.atlassian.plugins.userprofile.external.api -DartifactId=user-profiles-external-api -Dversion=1.1.0 -Dpackaging=jar -Djavadoc=user-profiles-external-api-1.1.0-javadoc.jar
Deploy to a hosted Maven repository
mvn deploy:deploy-file -Dfile=user-profiles-external-api-1.1.0.jar -DgroupId=de.communardo.atlassian.plugins.userprofile.external.api -DartifactId=user-profiles-external-api -Dversion=1.1.0 -Dpackaging=jar -Djavadoc=user-profiles-external-api-1.1.0-javadoc.jar -DrepositoryId=<id-to-map-on-server-section-of-settings.xml> -Durl=<url-of-the-repository-to-deploy>
Include the UPJ Java API in your Add-On pom.xml
<dependency>
<groupId>de.communardo.atlassian.plugins.userprofile.external.api</groupId>
<artifactId>user-profiles-external-api</artifactId>
<version>1.1.0</version>
<scope>provided</scope>
</dependency>
Usage in our own classes (e.g. your components)
To import the services provided by our API as components, using Atlassian Spring Scanner as an example:
Make sure the User Profiles for Jira Add-on is already installed on your Jira system.
Check https://communardo-products.atlassian.net/wiki/spaces/UPJ/pages/572195081 for further information.
Scriptrunner
General
Our Java API may also be accessed via Scriptrunner. To be able to do that you have to follow the steps which are described in the official Scriptrunner documentation, which can be found here: https://docs.adaptavist.com/sr4js/latest/integrations/other-apps
Make sure the User Profiles for Jira Add-on is already installed on your Jira system.
Check https://communardo-products.atlassian.net/wiki/spaces/UPJ/pages/572195081 for further information.
Examples
To provide you a more easy way to start developing scripts with Scriptrunner, we prepared a minimal example, which provides you our API managers with whom you can access profile elements and their data:
Example 1
Example that prints all profile elements and the available element data for the current user in the log (log-level INFO, which may prevent you from seeing anything per default, so maybe use log-level ERROR instead if you want to directly see something in the log).
Example 2
Example that shows the data in a given profile element for a given user:
Internal structure and basic usage
The UPJ Java API consists out of two basic elements: the profile element and the profile element data. Profile elements can be added and removed in the UPJ administration (check https://communardo-products.atlassian.net/wiki/spaces/UPJ/pages/572195104 for further information). Values may afterwards be added for every user via an LDAP sync or by manually editing user profiles (in the administration or the user does it on his own) or even by using our new Java API.
To interact with profile elements, just inject and use the provided UppProfileElementManager. With this manager you will be able to load the available profile elements. Afterwards you may want to access some data which is related to a user. To achieve that, just inject and use the provided UppProfileElementDataManager.
Profile element and data types
There are several profile element and data types which are used to work with the API. To provide you a better start, we are going to list all currently available profile elements and their matching data models in the following table:
Profile Element Models | Profile Element Data Models | getter Method | setter Method(s) |
---|---|---|---|
MultiSelectProfileElement | MultiSelectProfileElementData | Set<OptionedProfileElement.Option> getOptions() | setOptions(Set<OptionedProfileElement.Option> options) addOption(OptionedProfileElement.Option option) |
SingleSelectProfileElement | SingleSelectProfileElementData | OptionedProfileElement.Option getOption() | setOption(OptionedProfileElement.Option option) removeOption() |
TextBasedProfileElement | TextBasedProfileElementData | String getText() | setText(String text) |
UserProfileElement | UserProfileElementData | UserKey getUserKey() | setUserKey(UserKey userKey) |
You have to use matching profile element and data types to be able to interact with the API. Furthermore, the specialized data objects make an interaction with a specific data type more easy.
Event publication
ProfileElementDataChangedEvent
The User Profiles for Jira App publishes events every minute, which contain all changes that are taken since the last publication. One event contains a maximum of 1000 changes as a collection of updates. Each update contains a key of an user, a profile element and the new data. The following table shows the models of the change sets:
Profile Element Change Set Models | Profile Element Models | Data Models |
---|---|---|
AutocompleteProfileElementDataUpdate | AutocompleteProfileElement | Set<String> |
MultiSelectProfileElementDataUpdate | MultiSelectProfileElement | Set<OptionedProfileElement.Option> |
SingleSelectProfileElementDataUpdate | SingleSelectProfileElement | OptionedProfileElement.Option |
TextBasedProfileElementDataUpdate | TextBasedProfileElement | String |
UserProfileElementDataUpdate | UserProfileElement | UserKey |
ProfileElementNameChangedEvent
This event is published when the default name of a profile element is changed. It contains the updated profile element.
ProfileElementRemovedEvent
This event is published when a profile element is removed. It contains the removed profile element.
ProfileElementOptionNameChangedEvent
This event is published when the default name of an option of a profile element is changed. It contains the updated profile element and the updated option.
ProfileElementOptionRemovedEvent
This event is published when an option of a profile element is removed. It contains the updated profile element and the removed option.
Examples
To kickstart you a little bit more, we want to provide you with a few examples on what you can currently do with our Java API:
UppProfileElementManager
Loading all profile elements
Loading a specific profile element with a specific id (for example 1)
UppProfileElementDataManager
Loading profile element data for a profile element and an user
Loading all profile elements for an user
Storing profile element data for a profile element and an user
To be able to store data, the type of the profile Element must match the type of the data.
ProfileElementDataChangedEvent
Event Listener example
You can also follow the instructions on https://developer.atlassian.com/server/jira/platform/writing-jira-event-listeners-with-the-atlassian-event-library/ .