How to create a Bamboo Event Listener

This is a cross post from community.atlassian.com with some links removed because of the link restriction on new users: https://community.atlassian.com/t5/Questions/Create-a-Bamboo-Event-Listener/qaq-p/640193

I’m trying to create a Bamboo event listener for DeploymentFinishedEvent with the Atlassian SDK. Unfortunately, the documentation for creating a Bamboo event listener seems to be out of date, as HibernateEventListener is deprecated as of Bamboo 5.6 and the alternative that is recommended by the Java Docs is an Annotation.

What is the correct approach for creating an event listener for Bamboo? I see that Alexey Chystoprudov posted this block of code yesterday (https://community.atlassian.com/t5/Bamboo-questions/How-do-I-register-an-event-listener-in-Bamboo/qaq-p/638995) but the technique used doesn’t appear to be documented anywhere.

<bambooEventListener key="environmentDependencyListener" 
class="com.test.MyListener"/>
public class MyListener {
 @EventListener
  public void onChainCompleted(final ChainCompletedEvent event) {
    System.out.println("chain complete ");
  }
}

You can find more information on the event framework and @EventListener annotation.

UNfortunately bamboo docs for the listener module are outdated, and half right (you need to register the listener class) and half wrong (you don’t extend any classes). To find events in addition to the ones listed on the docs, you’ll need to explore the javadocs to find actual events. I use the full class index for bamboo and just filter for “Event” docs.atlassian.com/bamboo/5.7.3/allclasses-noframe.html to see what possible events to listen to.

YOu only need to register 1 event listener in your atlassian-plugin.xml which specifies a class with annotated methods (as seen in the example you shared). You may decide to use multiple classes for clear isolation of responsibility however.

So in short, Alexey was right, and it not fits the more general pattern used across atlassian tools. I have not confirmed, but if using Spring Scanner (which I certainly recommend), you may not need to declare <bambooEventListener> at all, and just annottate the class with @Component

1 Like