I have been exploring Jira plugin development for a while.
I have a scenario where I need to store user-specific data in the backend. Consider it a set of some Input fields(On right panel of view issue page), which asks some info from user and later displays it when user had saved it. I don't want to enclose input fields in <form></form> tag. I want to handle things via calling APIs(REST modules) via AJS. Please suggest best way to do this.
Even after going through various docs and examples I could not find a solid approach to do this, and still there is a bit of confusion.
For storing data, I could find two ways. I can use PluginSettingsFactory or ActiveObjects. Apparently, these two services cannot be used in REST modules(Correct me if I am wrong. It will solve my problem.)
I want to go via ActiveObjects approach. But I not sure whether I can use it in JIRA plugin because it is made for Generic Confluence apps.
Let's say if it is possible to use ActiveObjects in JIRA plugin. I am not sure how to call POST of servlet using AJS. Please suggest a way if there is any?
If ActiveObjects can't be used in JIRA plugin, I will anyways have to go with PluginSettingsFactory inside servlets because apparenly I cannot use PluginSettingsFactory in REST Module. Again, I will have to go via Servlet approach and I am not sure how to call POST of servlet using AJS.
I know there are too many questions in this post.
Please suggest a way if there is any?
Thanks @Maciej Nowakowski
I tried using PluginSettingsFactory inside Rest Module. Getting exception regarding dependency injection. Finding hard to understand dependency using @Scanned.
I am stuck. It will be great if you could share link of some example that uses PluginSettingsFactory inside Rest Module.
@imamudin naseemit looks like you are having troubles with dependencies rather than using PluginSettingsFactory on it's own.
Here you'll find comprehensive manual for atlassian-plugin-scanner: https://bitbucket.org/atlassian/atlassian-spring-scanner/src/1.2.x/README.md?at=1.2.x&fileviewer=file-view-default (which is responsible for @Scanned annotation)
If you find it challenging to start with scanner you can use alternative method of providing dependencies: https://developer.atlassian.com/server/jira/platform/component-import/
Essentially, all you need to do is add a component-import entry to your atlassian-plugin.xml file
Here's comprehensive howto: https://developer.atlassian.com/server/framework/atlassian-sdk/sal-code-samples/
Tried hands on component-import. Didn't work for me.
Then Tried with atlassian-plugin-scanner. Breaking my head since hours, still no luck.
It will be great if you could fix dependecy injection in MyRestResource.java in below repo
https://github.com/minaseem/jiraPlugin
Thanks
Just to add about injecting PluginSettingsFactory via component-import (followed https://developer.atlassian.com/server/framework/atlassian-sdk/sal-code-samples/), I got below exception
Unsatisfied dependency expressed through constructor argument with index 0 of type [com.atlassian.sal.api.pluginsettings.PluginSettingsFactory]: No qualifying bean of type [com.atlassian.sal.api.pluginsettings.PluginSettingsFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.atlassian.sal.api.pluginsettings.PluginSettingsFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
@imamudin naseem, I have managed to make your skeleton working: https://github.com/minaseem/jiraPlugin/pull/1
I was trying to keep commits meaningful, separating required changes.
Along the way I have also updated atlassian-spring-scanner to 2.x which also simplifies configuration. Docs: https://bitbucket.org/atlassian/atlassian-spring-scanner/src
@Maciej Nowakowski,
Thanks for doing code changes.
I applied your changes locally and while resolving dependencies, it says
Dependency '''com.atlassian.plugin:atlassian-spring-scanner-annotation:2.1.3''' not found less... (⌘F1)
Inspects a Maven model for resolution problems.