I am trying to access a Component from another plugin.
The plugin's atlassian-plugin.xml contains the following definition:
<component key="xxx-dao-service" name="DAO Service" class="com.xxx.jira.plugins.xxx.service.xxxDAOServiceImpl" public="true"> <interface>com.xxx.jira.plugins.xxx.service.xxxDAOService</interface> </component>
It is a third-party, published plugin that was bought from the Atlassian Marketplace.
ComponentManager componentManager = ComponentManager.getInstance(); PluginAccessor pluginAccessor = componentManager.getPluginAccessor(); Class daoSvcClass = pluginAccessor.getClassLoader().findClass("com.xxx.jira.plugins.xxx.service.xxxDAOService"); def serviceDao = componentManager.getOSGiComponentInstanceOfType(daoSvcClass); log.debug(serviceDao.method(xxx,xxx,xxx))
So how do you access another plugins' components and use the methods therein?
You don't have to include it in your plugin - in fact doing so is not going to work if there are components etc. As Ash said, you should be able to use @WithPlugin and @PluginModule to get access to the services.
If you need to use third-party component you shoul include it into your plugin jar. To do this you should to spesify this into dependences section with scope <compile>. It means that this jar will be included into your jar. And then you can get any class with componentManager.getOSGiComponentInstanceOfType(daoSvcClass.class)
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.