Hello.
I'm trying to alter the code from the script runner documentation:
https://jamieechlin.atlassian.net/wiki/display/GRV/Post+Functions#PostFunctions-SetAffectsVersions,FixVersionsorComponents
I have done something like this:
import com.atlassian.jira.ComponentManager import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.MutableIssue import com.atlassian.jira.issue.link.IssueLinkTypeManager import com.atlassian.jira.web.action import com.atlassian.jira.user import com.atlassian.jira.project.version import com.atlassian.core.ofbiz.CoreFactory import webwork.dispatcher.ActionResult import org.apache.log4j.Category Category log = log log.setLevel(org.apache.log4j.Level.DEBUG); ComponentManager componentManager = ComponentManager.getInstance() User remoteUser = componentManager.getJiraAuthenticationContext().getUser() //MutableIssue issue = componentManager.getIssueManager().getIssueObject("DTT-1757") MutableIssue issue = issue def ver_affCF = customFieldManager.getCustomFieldObject('customfield_13302');//customfield containing string with affects version def ver_aff = issue.getCustomFieldValue(ver_affCF); def ver_fixCF = customFieldManager.getCustomFieldObject('customfield_13416');//customfield containing string with fix version def ver_fix = issue.getCustomFieldValue(ver_fixCF); Project project = issue.getProjectObject() Version versionFX = componentManager.getVersionManager().getVersion(project.getId(), ver_fix) Version versionAFCTS = componentManager.getVersionManager().getVersion(project.getId(), ver_aff) //ProjectComponent component = componentManager.getProjectComponentManager().findByComponentName(project.getId(), "MyComponent") issue.setFixVersions([versionFX]) issue.setAffectsVersions([versionAFCTS]) //issue.setComponents([component.getGenericValue()]) Map actionParams = EasyMap.build("issue", issue.getGenericValue(), "issueObject", issue, "remoteUser", remoteUser, "dispatchEvent", Boolean.FALSE); ActionResult aResult = CoreFactory.getActionDispatcher().execute(ActionNames.ISSUE_UPDATE, actionParams); // check aResult
However, even after adding import wich I think are correct (at least that's what I've found in https://docs.atlassian.com/jira/) I still get following errors:
2014-06-09 16:14:02,248 Thread-12981 ERROR bolszyca 973x252239x2 1bth0u4 10.1.3.34 /secure/CommentAssignIssue.jspa [onresolve.jira.groovy.GroovyRunner] The script failed : javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script4.groovy: 5: unable to resolve class com.atlassian.jira.web.action @ line 5, column 1. import com.atlassian.jira.web.action ^ Script4.groovy: 6: unable to resolve class com.atlassian.jira.user @ line 6, column 1. import com.atlassian.jira.user ^ Script4.groovy: 7: unable to resolve class com.atlassian.jira.project.version @ line 7, column 1. import com.atlassian.jira.project.version ^ Script4.groovy: 18: unable to resolve class User @ line 18, column 6. User remoteUser = componentManager.getJiraAuthenticationContext().getUser() ^ Script4.groovy: 27: unable to resolve class Project @ line 27, column 9. Project project = issue.getProjectObject() ^ Script4.groovy: 28: unable to resolve class Version @ line 28, column 9. Version versionFX = componentManager.getVersionManager().getVersion(project.getId(), wersja_naprawa) ^ Script4.groovy: 29: unable to resolve class Version @ line 29, column 9. Version versionAFCTS = componentManager.getVersionManager().getVersion(project.getId(), wersja_znaleziono) ^ 7 errors 2014-06-09 16:14:02,248 Thread-12981 ERROR bolszyca 973x252239x2 1bth0u4 10.1.3.34 /secure/CommentAssignIssue.jspa [onresolve.jira.groovy.GroovyFunctionPlugin] Script post-function failed on HOSP-3615: C:\Program Files\Atlassian\JIRA\atlassian-jira\skryptyistyle\update_versions_components.groovy javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script4.groovy: 5: unable to resolve class com.atlassian.jira.web.action @ line 5, column 1. import com.atlassian.jira.web.action ^ Script4.groovy: 6: unable to resolve class com.atlassian.jira.user @ line 6, column 1. import com.atlassian.jira.user ^ Script4.groovy: 7: unable to resolve class com.atlassian.jira.project.version @ line 7, column 1. import com.atlassian.jira.project.version ^ Script4.groovy: 18: unable to resolve class User @ line 18, column 6. User remoteUser = componentManager.getJiraAuthenticationContext().getUser() ^ Script4.groovy: 27: unable to resolve class Project @ line 27, column 9. Project project = issue.getProjectObject() ^ Script4.groovy: 28: unable to resolve class Version @ line 28, column 9. Version versionFX = componentManager.getVersionManager().getVersion(project.getId(), wersja_naprawa) ^ Script4.groovy: 29: unable to resolve class Version @ line 29, column 9. Version versionAFCTS = componentManager.getVersionManager().getVersion(project.getId(), wersja_znaleziono) ^ 7 errors at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:117) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:103) at javax.script.AbstractScriptEngine.eval(Unknown Source) at com.onresolve.jira.groovy.GroovyRunner.runFile(GroovyRunner.java:102) at com.onresolve.jira.groovy.GroovyRunner.run(GroovyRunner.java:62) at com.onresolve.jira.groovy.GroovyFunctionPlugin.execute(GroovyFunctionPlugin.java:38) at com.opensymphony.workflow.AbstractWorkflow.executeFunction(AbstractWorkflow.java:1050) at com.opensymphony.workflow.AbstractWorkflow.transitionWorkflow(AbstractWorkflow.java:1446) at com.opensymphony.workflow.AbstractWorkflow.doAction(AbstractWorkflow.java:564) at com.atlassian.jira.workflow.OSWorkflowManager.doWorkflowActionInsideTxn(OSWorkflowManager.java:954) at com.atlassian.jira.workflow.OSWorkflowManager.doWorkflowAction(OSWorkflowManager.java:909) at com.atlassian.jira.bc.issue.DefaultIssueService.transition(DefaultIssueService.java:450) at com.atlassian.jira.bc.issue.IssueService$transition.call(Unknown Source) at com.onresolve.jira.groovy.canned.utils.WorkflowUtils.actionIssue(WorkflowUtils.groovy:87) <+2> at java.lang.reflect.Method.invoke(Unknown Source) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:43) at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:88) at com.onresolve.jira.groovy.canned.workflow.postfunctions.FasttrackTransition.doTransition(FasttrackTransition.groovy:136) at com.onresolve.jira.groovy.canned.workflow.postfunctions.FasttrackTransition.this$2$doTransition(FasttrackTransition.groovy) <+2> at java.lang.reflect.Method.invoke(Unknown Source) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1054) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurrentN(ScriptBytecodeAdapter.java:78) at com.onresolve.jira.groovy.canned.workflow.postfunctions.FasttrackTransition.this$dist$invoke$1(FasttrackTransition.groovy) at com.onresolve.jira.groovy.canned.workflow.postfunctions.FasttrackTransition$1.methodMissing(FasttrackTransition.groovy) <+2> at java.lang.reflect.Method.invoke(Unknown Source) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) at groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:811) at groovy.lang.MetaClassImpl.invokePropertyOrMissing(MetaClassImpl.java:1103) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1056) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:884) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149) at com.onresolve.jira.groovy.canned.workflow.postfunctions.FasttrackTransition$1.run(FasttrackTransition.groovy:96) at java.lang.Thread.run(Unknown Source) Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script4.groovy: 5: unable to resolve class com.atlassian.jira.web.action @ line 5, column 1. import com.atlassian.jira.web.action ^ @ line 6, column 1. import com.atlassian.jira.user ^ Script4.groovy: 7: unable to resolve class com.atlassian.jira.project.version @ line 7, column 1. import com.atlassian.jira.project.version ^ Script4.groovy: 18: unable to resolve class User @ line 18, column 6. User remoteUser = componentManager.getJiraAuthenticationContext().getUser() ^ Script4.groovy: 27: unable to resolve class Project @ line 27, column 9. Project project = issue.getProjectObject() ^ Script4.groovy: 28: unable to resolve class Version @ line 28, column 9. Version versionFX = componentManager.getVersionManager().getVersion(project.getId(), wersja_naprawa) ^ Script4.groovy: 29: unable to resolve class Version @ line 29, column 9. Version versionAFCTS = componentManager.getVersionManager().getVersion(project.getId(), wersja_znaleziono) ^ 7 errors at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:302) at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:858) at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:548) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:497) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:306) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:287) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:267) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:214) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getScriptClass(GroovyScriptEngineImpl.java:337) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:109) ... 43 more
It seems like something is horribly wrong with imports. Unfortunately I'm out of ideas what may be wrong.
It's unlikely that an import ends with a lowercase word. Try this
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.CustomFieldManager import com.atlassian.jira.issue.MutableIssue import com.atlassian.jira.project.Project import com.atlassian.jira.project.version.Version import com.atlassian.jira.project.version.VersionManager import org.apache.log4j.Category Category log = log log.setLevel(org.apache.log4j.Level.DEBUG); CustomFieldManager customFieldManager = ComponentAccessor.customFieldManager VersionManager versionManager = ComponentAccessor.versionManager MutableIssue issue = issue def ver_affCF = customFieldManager.getCustomFieldObject('customfield_13302');//customfield containing string with affects version def ver_aff = issue.getCustomFieldValue(ver_affCF); def ver_fixCF = customFieldManager.getCustomFieldObject('customfield_13416');//customfield containing string with fix version def ver_fix = issue.getCustomFieldValue(ver_fixCF); Project project = issue.getProjectObject() Version versionFX = versionManager.getVersion(project.getId(), ver_fix as String) Version versionAFCTS = versionManager.getVersion(project.getId(), ver_aff as String) issue.setFixVersions([versionFX]) issue.setAffectedVersions([versionAFCTS])
And place this postfunction at the beginning of the list of postfunctions.
> It's unlikely that an import ends with a lowercase word
It is. And if you use "def" rather than the static typing you can get rid of most of the imports.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks, I'll remember that :)
You guys are awesome :)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Henning Tietgens,
thanks for providing the information.
However, after I implemented the code in Create Transition/postfunction, I was able to get the value in Fix Version/s which was on the basis of Custom field. But seeing two different issues. Would you please update those for me please?
1) When I go to the Edit screen, the Fix Version/s is Null (value is not available) but is available in View Screen.
Note: Both View and Edit screens has same Fix VErsion/s field.
2) Would it be possible to auto populate the value of Custom field (Release VErsion = 1.1) in Fix Version/s in a create screen (before creating a defect)?
Please help.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.