Create a Bamboo Event Listener Edited

I'm trying to create a Bamboo event listener for DeploymentFinishedEvent (https://docs.atlassian.com/bamboo/5.15.7/com/atlassian/bamboo/deployments/execution/events/DeploymentFinishedEvent.html) 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 (https://docs.atlassian.com/bamboo/5.15.7/com/atlassian/bamboo/event/HibernateEventListener.html) 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 ");
}
}

 

 

Cross-posted this to https://community.developer.atlassian.com/t/how-to-create-a-bamboo-event-listener/8726

1 answer

Hi Jared,


Allow me to summarize the developer community post here so the entire answer is located in one place.

 

Alexey listed 2 possible options for creating an event listener in his post:

 

Option 1: Add the following line to the atlassian-plugin.xml

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

 

Option 2: Have the code register itself

private final EventPublisher eventPublisher;

@PostConstruct
private void postConstruct() {
eventPublisher.register(this);
}

@PreDestroy
private void preDestroy() {
eventPublisher.unregister(this);
}

@EventListener
public void onChainRemoved(@NotNull ChainDeletedEvent chainDeletedEvent) {
System.out.println(chainDeletedEvent.getPlanKey());
}

 

Ollitech then offered the following explanation in their post:

You can find more information on the event framework and @EventListener1 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 Scanner2 (which I certainly recommend), you may not need to declare <bambooEventListener> at all, and just annottate the class with @Component.

 

If you have any additional questions or insights please don’t hesitate to reach out.

 

Regards,

Bill

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Published May 18, 2017 in Bamboo

FAQ: How to Upgrade Bamboo Server

Bamboo 5.9 will no longer be supported after June 12, 2017. What does this mean? As part of our End of Life policy, Atlassian supports major versions for two years after the first major iteratio...

1,811 views 0 6
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you