I have been trying to develop a plugin which implements the Bamboo CustomBuildCompleteAction module.
I wish to trace my plugin code using IDEA and have started the Bamboo instance from the command line - atlas-debug --product bamboo. Running IDEA in debug mode informs me that it has successfully connected the debug port.
Having placed a breakpoint at the first line of code in my override of the CustomBuildCompleteAction.run() method, I would expect to see it triggered upon successful completion of a manually triggered build. However I do not. Instead, I see in the Bamboo .log the following:
ERROR [AtlassianEvent::0-BAM::EVENTS:pool-2-thread-13] [NamedThreadFactory] Uncaught exception in thread AtlassianEvent::0-BAM::EVENTS:pool-2-thread-13
java.lang.ClassCastException: co.nz.xxxxx.bamboo.plugins.PostBuildCompleteNotifier cannot be cast to com.atlassian.bamboo.build.CustomPostBuildCompletedAction
Can anyone assist me to resolve this? What do I need to add/modify to ensure that my implementation of the CustomPostBuildCompletedAction is cast-able?
The cause of my problem was right there in the exception message and was staring me in the face:
"PostBuildCompleteNotifier cannot be cast to com.atlassian.bamboo.build.CustomPostBuildCompletedAction".
I had implemented the CustomPostBuildComplete interface...
public PostBuildCompleteNotifier implements CustomPostBuildCompleteAction
..but had declared the postBuildCompletedAction module in atlassian-plugin.xml:
<postBuildCompletedAction .../>
Silly boy - RTFM!
Investigating this a bit further, I have added a constructor to my plugin to confirm that debugging is actually working. Here is the code, and the constructor definitely does get hit.
public class TestCompleteBuildAction implements CustomBuildCompleteAction
{
public TestCompleteBuildAction()
{
String _text = "constructor got hit";// <-- breakpoint here definitely fires
}
@Override
public void run(Buildable buildable, BuildResults buildResults)
{
String _text = buildable.getBuildKey();// <--breakpoint here does not.
}
}
The stack trace in the ERROR shows that the PostBuildCompletedEventsListener appears to be the class that is trying to cast my class (complete log entry follows):
ERROR [AtlassianEvent::0-BAM::EVENTS:pool-2-thread-12] [NamedThreadFactory] Uncaught exception in thread AtlassianEvent::0-BAM::EVENTS:pool-2-thread-12
java.lang.ClassCastException: co.nz.xxxxxx.bamboo.plugins.TestCompleteBuildAction cannot be cast to com.atlassian.bamboo.build.CustomPostBuildCompletedAction
at com.atlassian.bamboo.v2.build.events.PostBuildCompletedEventListener$1.run(PostBuildCompletedEventListener.java:67)
at com.atlassian.bamboo.variable.CustomVariableContextRunnerImpl.execute(CustomVariableContextRunnerImpl.java:27)
at com.atlassian.bamboo.v2.build.events.PostBuildCompletedEventListener.performAction(PostBuildCompletedEventListener.java:54)
...
Unfortunately, still no closer to understanding why ClassCastException is being thrown. Any assistance gratefully received.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.