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.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.