IoC registration for decorator pattern - Jira Server

Jakob Jónasson August 3, 2017

Currently we are using "atlassian-plugin.xml" to register services to be wired with Spring for a JIRA server plugin.

For example:

<component key="periodAOService" class="com.theplugin.period.ao.PeriodAOServiceImpl"
interface="com.theplugin.period.ao.PeriodAOService" public="false"/>

I want to add caching externally by decorating the interface above.

public class PeriodConfigurationAOServiceCache implements PeriodConfigurationAOService {

private final PeriodConfigurationAOService periodConfigurationAOService;

public
PeriodConfigurationAOServiceLogger(PeriodConfigurationAOService periodConfigurationAOService) {
this.periodConfigurationAOService = periodConfigurationAOService;
}

@Override
public Collection<PeriodConfiguration> getPeriodConfigurations() {
//TODO: ADD caching
return periodConfigurationAOService.getPeriodConfigurations();
}

Then I would like to register the decorated class PeriodConfigurationAOServiceCache so that when a services requires a PeriodConfigurationAOService it receives a PeriodConfigurationAOServiceCache decorating PeriodConfigurationAOServiceImpl.

I have tried various things like:
META-INF.spring/plugin-context.xml but fail to see how I can register beans that depend on services registred in atlassian-plugin.xml.

Has anyone done this and could share his code or provide me with tips on how to solve this?

0 answers

Suggest an answer

Log in or Sign up to answer