This tutorial shows you how to migrate your app from atlassian-app-cloud-migration-tracker to the discoverable listener in the
atlassian-app-cloud-migration-listener library.
This section provides a sample app that you can use to verify your implementation. You can clone the repository that contains the source code of the sample app from Bitbucket.
There are two main steps to change your app code to using the discoverable listener in the
atlassian-app-cloud-migration-listener library.
Step 1: Update dependency management
Step 2: Change to the DiscoverableListener interface
Step 3: Atlassian Spring Scanner and atlassian-plugin.xml
These examples are for your pom.xml and maven, but the steps are similar for other dependency management systems.
Remove the package com.atlassian.migration.app from your <DynamicImport-Package> instruction. Remove !com.atlassian.migration.app from
your <Import-Package> instruction.
Change the atlassian-app-cloud-migration-tracker library from pom.xml
1 2<dependency> <groupId>com.atlassian</groupId> <artifactId>atlassian-app-cloud-migration-tracker</artifactId> <version>1.26.1</version> </dependency>
to the atlassian-app-cloud-migration-listener library
1 2<dependency> <groupId>com.atlassian</groupId> <artifactId>atlassian-app-cloud-migration-listener</artifactId> <version>1.2.1</version> </dependency>
It is likely you will not need org.osgi.util.tracker either.
1 2<dependency> <groupId>org.osgi</groupId> <artifactId>org.osgi.util.tracker</artifactId> <version>1.5.1</version> <scope>provided</scope> </dependency>
DiscoverableListener interfaceChange your class to implement only DiscoverableListener. It no longer needs to implement InitializingBean nor DisposableBean so you
do not need to register your class in afterPropertiesSet() nor deregister your class in destroy().
1 2public class MyPluginComponentImpl implements DiscoverableListener { }
You will no longer need an implementation of ApplicationContextAware, and it is not needed in the class constructor.
The first argument of onStartAppMigration() is now AppCloudMigrationGateway. You do not need to store a reference to it.
1 2public void onStartAppMigration(AppCloudMigrationGateway gateway, String transferId, MigrationDetailsV1 migrationDetails) { }
If your app key is different to your OSGi bundle name then you will need to implement getServerAppKey() from DiscoverableListener.
1 2@Override public String getServerAppKey() { return "my-server-app-key"; }
If your app key is the same as your OSGi bundle name, then you don't need to implement getServerAppKey() as we provide a default implementation.
atlassian-plugin.xmlAtlassian Spring Scanner 1.0
If you are using Spring Scanner 1.0, then in your atlassian-plugin.xml add
1 2<component key="myPlugin" class="com.vendor.impl.MyPluginComponentImpl" public="true"> <interface>com.atlassian.migration.app.listener.DiscoverableListener</interface> </component>
Atlassian Spring Scanner 2.0
If you are using Spring Scanner 2.0, then add the @ExportAsService annotation to your class along with Spring's @Component.
1 2@ExportAsService @Component public class MyPluginComponentImpl implements DiscoverableListener { }
Rate this page: