Hi,
I had Jira 6.2, tried the solution from this thread:
And it worked for me.
But now we upgraded our jira from 6.2 to 7.3.7
And this code not working anymore.
Couldn't find any documentation for this.
While having this code:
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.plugin.devstatus.api.DevStatusSummaryService
import com.atlassian.jira.plugin.devstatus.rest.DetailBean
import com.atlassian.jira.user.ApplicationUser
import com.onresolve.scriptrunner.runner.customisers.WithPlugin
@WithPlugin("com.atlassian.jira.plugins.jira-development-integration-plugin")
DevStatusSummaryService devStatusSummaryService = ComponentAccessor.getOSGiComponentInstanceOfType(DevStatusSummaryService.class)
ApplicationUser currentUser = ComponentAccessor.getJiraAuthenticationContext().getUser()
DetailBean pullRequestData = devStatusSummaryService.getDetailData(issue.id, "stash", "pullrequest", currentUser).get()
return pullRequestData as String
I have error on:
devStatusSummaryService.getDetailData(issue.id, "stash", "pullrequest", currentUser).get()
The error says:
[Static type checking] - Cannot find matching method
io.atlassian.fugue.Either#get(). Please check if the declared type is right and if the method exist.
Possible solutions: grep(), grep(java.lang.Object), getAt(java.lang.String), wait(), any(), wait(long), @line 12, column 30.
Can anyone help to dinf a solution?
I need to recieve the development panel data as i used to get from above code in Jira 6.2
Thanks,
Nir
Here's a way to get DevStatusSummaryService in Jira versions where it's not exported from plugin.
Keep in mind that you're accessing internal component, but IMO it's still better than creating your own instance of that component every time your script is executed (which some people are doing).
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.plugin.devstatus.api.DevStatusSummaryService
import com.atlassian.plugin.Plugin
import com.atlassian.plugin.PluginState
import com.atlassian.plugin.module.ContainerManagedPlugin
import ru.mail.jira.plugins.groovy.api.script.WithPlugin
@WithPlugin('com.atlassian.jira.plugins.jira-development-integration-plugin')
DevStatusSummaryService devStatusSummaryService = null
Plugin plugin = ComponentAccessor.pluginAccessor.getPlugin("com.atlassian.jira.plugins.jira-development-integration-plugin")
if (plugin instanceof ContainerManagedPlugin && plugin.pluginState == PluginState.ENABLED) {
def beans = plugin.getContainerAccessor().getBeansOfType(DevStatusSummaryService)
if (beans.size() > 0) {
devStatusSummaryService = beans.first()
}
}
return devStatusSummaryService
For ScriptRunner you'll need to replace WithPlugin import with ScriptRunner one (no other changes are required, I think).
Nir, as you can see, when you updated your platform, you now have a fugue.Either(which is some hideous objetct I must admit) instead of whatever you used to have.
This needs some heavy debuggin, but maybe can you try this line:
devStatusSummaryService.getDetailData(issue.id, "stash", "pullrequest", currentUser).right()
The right() method should return the object that the Either should have if the call was successfull.
Cheers!
Dyelamos
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Daniel,
Now i get another error (attach)
Any suggestions?
Thanks,
Nir
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
What do you get when you do this:
def pullRequestData = devStatusSummaryService.getDetailData(issue.id, "stash", "pullrequest", currentUser).get()
?
Cheers
Dyelamos
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I get the first error:
[Static type checking] - Cannot find matching method
io.atlassian.fugue.Either#get(). Please check if the declared type is right and if the method exist.
Possible solutions: grep(), grep(java.lang.Object), getAt(java.lang.String), wait(), any(), wait(long), @line 12, column 30.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Apologies, what about this?
def pullRequestData = devStatusSummaryService.getDetailData(issue.id, "stash", "pullrequest", currentUser).right()
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
now i get:
java.lang.NullPointerException: Cannot invoke method getDetailData() on null object
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Okay, that means that the way that you get objects have changed from version to version.
I'm going to ask around for some Bitbucket heavyweights and see if I can find you a solution. Is this very urgent?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Kind of... but I will wait of course.
Thank you for the help :)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Daniel, @Daniel Yelamos [Adaptavist]
Did you managed to look into it?
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.
Hi @dralexk @[deleted]
I accessed everything i need through REST API since i couldn't figure out the way with the code abouve
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 can do it with this solution:
def ccm = ComponentAccessor.getComponentClassManager()
def service = ccm.newInstance("com.atlassian.jira.plugin.devstatus.impl.DefaultDevStatusSummaryService")
def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
def issue = ComponentAccessor.getIssueManager().getIssueObject("TEST-2")
def details = service.getDetailData(issue.id, "stash", "pullrequest", currentUser).right().get().getDetail()
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.