Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

How to make Component Plugin Module dependency-injected.

Akira Tsuchiya
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 21, 2012

1. Write the below in the atlassian-plugin.xml.


<component key="helloWorldService" public="true" class="com.akira.MyHelloWorldServiceImpl">
<interface>com.akira.MyHelloWorldService</interface>
</component>

2. MyHelloWorldService

package com.akira;

public interface MyHelloWorldService {
String getMessage();
}

3. MyHelloWorldServiceImpl

package com.akira;

public class MyHelloWorldServiceImpl implements MyHelloWorldService {

public String getMessage() {
return "Hello World";
}
}

4. Use the Component Plugin Module in an ActionSupport class.

public class AkiraActionSupport extends JiraWebActionSupport {

private MyHelloWorldService _myHelloWorldService;

public String doExecute() {
System.out.println(_myHelloWorldService.getMessage());
return SUCCESS;
}
}

5. A NullPointerException occurs because the dependency-injection fails.

6. What other steps are required to make Componet Module available.

1 answer

1 accepted

0 votes
Answer accepted
Jobin Kuruvilla [Adaptavist]
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 21, 2012

Inject it in constructor.

public class AkiraActionSupport extends JiraWebActionSupport {

    private MyHelloWorldService _myHelloWorldService;

    public AkiraActionSupport(MyHelloWorldService _myHelloWorldService){
        this.myHelloWorldService = myHelloWorldService;
    }
   
    public String doExecute() {
        System.out.println(_myHelloWorldService.getMessage());
        return SUCCESS;
    }
}

You will need component-import if you are using it in a different plugin.

Akira Tsuchiya
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 21, 2012

Thank you very much.

I forgot how to use Springframework's dependency injection.

But I am wondering if I can inject it using Annotation Qualifier in JIRA like below.

@Autowired

@Qualifier("MyHelloWorldService")

private MyHelloWorldService _myHelloWorldService;

Higashi
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
May 9, 2015

it seems you can. Just create custom spring-only xml definition in resource/META-INF/spring/*.xml. You can read more about it in: https://developer.atlassian.com/display/PLUGINFRAMEWORK/Advanced+Configuration+with+Spring+XML+Files Don't forget <context:annotation-config /> (as in: https://answers.atlassian.com/questions/29872/why-is-spring-autowire-not-working-for-my-jira-plugin-classes)

Suggest an answer

Log in or Sign up to answer
TAGS
atlassian, jira cloud certification, managing jira projects, jira project administration, jira cloud exam, atlassian certification, agile project management, jira workflows, jira permissions, jira training, jira cloud skills, atlassian learning

Become a Certified Jira Service Project Expert 🦸🏻‍♂️

Validate your expertise in managing Jira Service Projects for Cloud. Master configuration, optimize workflows, and manage users seamlessly. Earn global 🗺️ recognition and advance your career as a trusted Jira Service management expert.

Get Certified! ✍️
AUG Leaders

Atlassian Community Events