Error when trying to uses classes of GreenHopper plugin

Hi,

I am trying to create a report accessing information of sprints. I am adding the greenhopper plugin in the pom.xml file:

 

<dependency>
<groupId>com.atlassian.jira.plugins</groupId>
<artifactId>jira-greenhopper-plugin</artifactId>
<version>${jira.greenhoper.version}</version>
<scope>provided</scope>
</dependency>

 However when I try to use some classes in the constructor class:

private final RapidViewService rapidViewService;
private final VelocityChartModelFactory velocityChartModelFactory;



public BugPieReport(JiraAuthenticationContext authenticationContext, ApplicationProperties applicationProperties,
ProjectManager projectManager, SearchRequestService searchRequestService, ChartUtils chartUtils,
ChartFactory chartFactory,RapidViewService rapidViewService, VelocityChartModelFactory velocityChartModelFactory) {
super(authenticationContext, applicationProperties, projectManager, searchRequestService, chartUtils);
this.chartFactory = chartFactory;
this.jiraAuthenticationContext = authenticationContext;
this.rapidViewService = rapidViewService;
this.velocityChartModelFactory = velocityChartModelFactory;
}

I get the following error:
1 plugin failed to load during JIRA startup.

'com.atlassian.plugins.tutorial.jira.jira-report-plugin' - 'jira-report-plugin' failed to load.
Unexpected exception parsing XML document from URL [bundle://153.0:0/META-INF/spring/plugin-context.xml]; nested exception is java.lang.NullPointerException
null

It was loaded from E:\QSCPC880_EHM_Backup\Reports\Plugins\Version2\jira-report-plugin\target\jira\home\plugins\installed-plugins\jira-report-plugin-2.10-SNAPSHOT.jar


I then tried, adding the @ComponentImport in greenhopper classes:


public BugPieReport(JiraAuthenticationContext authenticationContext, ApplicationProperties applicationProperties,
ProjectManager projectManager, SearchRequestService searchRequestService, ChartUtils chartUtils,
ChartFactory chartFactory,@ComponentImport RapidViewService rapidViewService, @ComponentImport VelocityChartModelFactory velocityChartModelFactory) {
super(authenticationContext, applicationProperties, projectManager, searchRequestService, chartUtils);
this.chartFactory = chartFactory;
this.jiraAuthenticationContext = authenticationContext;
this.rapidViewService = rapidViewService;
this.velocityChartModelFactory = velocityChartModelFactory;
}

But get this error:

[c.atlassian.ozymandias.SafePluginPointAccess] Unable to run plugin code because of 'org.springframework.beans.factory.UnsatisfiedDependencyException - Error creating bean with name 'com.atlassian.plugins.tutorial.jira.reports.BugPieReport': Unsatisfied dependency expressed through constructor argument with index 6 of type [com.atlassian.greenhopper.service.rapid.view.RapidViewService]: No qualifying bean of type [com.atlassian.greenhopper.service.rapid.view.RapidViewService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport(value=)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.atlassian.greenhopper.service.rapid.view.RapidViewService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport(value=)}'.


What am I missing?, what is the correct way to use classes of the GreenHopper Plugin in a custom plugin?. Thanks.

Regards,

Edgar

 

1 answer

I realized that in order to import components from other plugins i need to use also the @Scanned and @Autowired annotations, besides the @ComponentImport. I added these and could make it work:

 

@Scanned
public class BugPieReport extends AbstractChartReport {

private final ChartFactory chartFactory;
private final JiraAuthenticationContext jiraAuthenticationContext;

private final RapidViewService rapidViewService;
//private final VelocityChartModelFactory velocityChartModelFactory;

@Autowired
public BugPieReport(JiraAuthenticationContext authenticationContext, ApplicationProperties applicationProperties,
ProjectManager projectManager, SearchRequestService searchRequestService, ChartUtils chartUtils,
ChartFactory chartFactory, @ComponentImport RapidViewService rapidViewService/*, @ComponentImport VelocityChartModelFactory velocityChartModelFactory*/) {
super(authenticationContext, applicationProperties, projectManager, searchRequestService, chartUtils);
this.chartFactory = chartFactory;
this.jiraAuthenticationContext = authenticationContext;
this.rapidViewService = rapidViewService;
//this.velocityChartModelFactory = velocityChartModelFactory;
}

But only for the RapidViewService class. I took a look at code of GreenHopper plugin and noticed that this class is exposed in the atlassian-plugin.xml file:

<component key="greenhopper-rapidview-service" name="Rapid View Service" class="com.atlassian.greenhopper.service.rapid.view.RapidViewServiceImpl" public="true"><interface>com.atlassian.greenhopper.service.rapid.view.RapidViewService</interface></component>

But unfortunately not the VelocityChartModelFactory class. That's why I am getting this error in the log:


'com.atlassian.plugins.tutorial.jira.jira-report-plugin' - 'jira-report-plugin' failed to load.
The plugin has been disabled. A likely cause is that it timed out during initialisation

It has the following missing service dependencies :
&velocityChartModelFactory of type (&(objectClass=com.atlassian.greenhopper.web.rapid.chart.VelocityChartModelFactory)(objectClass=com.atlassian.greenhopper.web.rapid.chart.VelocityChartModelFactory))

So I am looking how to include that class. I see that only the javascript controllers are exposed for that class in the atlassian-plugin.xml file.

If someone has a clue how to avoid the above error, would be appreciated.

Regards,

Edgar

Suggest an answer

Log in or Join to answer
Community showcase
Sarah Schuster
Posted Jan 29, 2018 in Jira

What are common themes you've seen across successful & failed Jira Software implementations?

Hey everyone! My name is Sarah Schuster, and I'm a Customer Success Manager in Atlassian specializing in Jira Software Cloud. Over the next few weeks I will be posting discussion topics (8 total) to ...

3,146 views 13 19
Join discussion

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
Atlassian Team Tour

Join us on the Team Tour

We're bringing product updates and pro tips on teamwork to ten cities around the world.

Save your spot