I'm trying to change customFiled with type Label in groovy scrip to put it after in post-function in Jira.
How to implement this solution ?
>>>>>>>>>>>>>
ComponentManager componentManager = ComponentManager.getInstance()
CustomFieldManager customFieldManager = componentManager.getCustomFieldManager();
CustomField customFieldTarget = customFieldManager.getCustomFieldObject("customfield_10005");
IssueChangeHolder changeHolder = new DefaultIssueChangeHolder()
customFieldTarget.updateValue(null,issue, new ModifiedValue(issue.getCustomFieldValue(customFieldTarget),"TestLabel"),changeHolder)
>>>>>>>>>>>>>>>>>>
And i recived error like this:
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Set
at com.atlassian.jira.issue.customfields.impl.LabelsCFType.createValue(LabelsCFType.java:70)
at com.atlassian.jira.issue.fields.CustomFieldImpl.createValue(CustomFieldImpl.java:733)
at com.atlassian.jira.issue.fields.CustomFieldImpl.updateValue(CustomFieldImpl.java:421)
at com.atlassian.jira.issue.fields.CustomFieldImpl.updateValue(CustomFieldImpl.java:403)
at com.atlassian.jira.issue.fields.OrderableField$updateValue.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at com.atlassian.jira.issue.fields.OrderableField$updateValue.call(Unknown Source)
at Script54.run(Script54.groovy:22)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEn
gineImpl.java:315)
... 141 more
Community moderators have prevented the ability to post new answers.
Not helped ...
This is my full code
import com.atlassian.crowd.embedded.api.User
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.comments.CommentManager
import com.atlassian.jira.issue.label.Label
import com.opensymphony.workflow.WorkflowContext
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.util.IssueChangeHolder
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.label.LabelManager;
ComponentManager componentManager = ComponentManager.getInstance()
CustomFieldManager customFieldManager = componentManager.getCustomFieldManager()
CustomField customFieldClient = customFieldManager.getCustomFieldObject("customfield_10100")
CustomField customFieldExecution = customFieldManager.getCustomFieldObject("customfield_10103")
LabelManager labelManager = new LabelManager() {
@Override
Set<Label> getLabels(Long aLong) {
return null //To change body of implemented methods use File | Settings | File Templates.
}
@Override
Set<Label> setLabels(User user, Long aLong, Set<String> strings, boolean b, boolean b1) {
return null //To change body of implemented methods use File | Settings | File Templates.
}
@Override
Set<Label> getLabels(Long aLong, Long aLong1) {
return null //To change body of implemented methods use File | Settings | File Templates.
}
@Override
Set<Label> setLabels(User user, Long aLong, Long aLong1, Set<String> strings, boolean b, boolean b1) {
return null //To change body of implemented methods use File | Settings | File Templates.
}
@Override
Label addLabel(User user, Long aLong, String s, boolean b) {
return null //To change body of implemented methods use File | Settings | File Templates.
}
@Override
Label addLabel(User user, Long aLong, Long aLong1, String s, boolean b) {
return null //To change body of implemented methods use File | Settings | File Templates.
}
@Override
Set<Long> removeLabelsForCustomField(Long aLong) {
return null //To change body of implemented methods use File | Settings | File Templates.
}
@Override
Set<String> getSuggestedLabels(User user, Long aLong, String s) {
return null //To change body of implemented methods use File | Settings | File Templates.
}
@Override
Set<String> getSuggestedLabels(User user, Long aLong, Long aLong1, String s) {
return null //To change body of implemented methods use File | Settings | File Templates.
}
}
IssueChangeHolder changeHolder = new DefaultIssueChangeHolder()
String currentUser = ((WorkflowContext) transientVars.get("context")).getCaller();
commmgr = (CommentManager) ComponentManager.getComponentInstanceOfType(CommentManager.class)
String color = new String()
if (issue.getStatusObject().getName().toString().equals("Closed"))
{
color = "{color:blue}"
} else
{
color = "{color:red}"
}
//if (cfType instanceof com.atlassian.jira.issue.customfields.impl.LabelsCFType) {
Set<String> set = convertToSetForLabels((String) "testlabel");
labelManager.setLabels(currentUser,issue.getId(),customFieldExecution.getIdAsLong(),set,false,true);
//}
private Set<String> convertToSetForLabels(String newValue) {
Set<String> set = new HashSet<String>();
StringTokenizer st = new StringTokenizer(newValue," ");
while(st.hasMoreTokens()) {
set.add(st.nextToken());
}
return set;
}
//customFieldExecution.updateValue(null,issue, new ModifiedValue(issue.getCustomFieldValue(customFieldExecution),color+issue.getAffectedVersions().toString()+"["+customFieldClient.getValue(issue)+"]["+issue.getStatusObject().getName().toString()+"]{color}"),changeHolder)
commmgr.create(issue, currentUser, "||Version||Clients||Execution Status||"+"\n"+"|"+issue.getAffectedVersions().toString()+"|"+customFieldClient.getValue(issue)+"|"+issue.getStatusObject().getName().toString()+"|", true)
issue.store()
And this is the error:
>>>>>>>>>>>>>>>>>
Caused by: groovy.lang.MissingMethodException: No signature of method: org.codeh
aus.groovy.jsr223.GroovyScriptEngineImpl.setLabels() is applicable for argument
types: (java.lang.String, java.lang.Long, java.lang.Long, java.util.HashSet, jav
a.lang.Boolean, java.lang.Boolean) values: [admin, 10100, 10103, [testlabel], fa
lse, ...]
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.callGlobal(GroovySc
riptEngineImpl.java:389)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.access$000(GroovySc
riptEngineImpl.java:72)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl$2.invokeMethod(Groo
vyScriptEngineImpl.java:301)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl$2.invokeMethod(Groo
vyScriptEngineImpl.java:290)
at groovy.lang.GroovyObjectSupport.invokeMethod(GroovyObjectSupport.java
:44)
at groovy.lang.Script.invokeMethod(Script.java:78)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurre
ntN(ScriptBytecodeAdapter.java:85)
at Script62.this$dist$invoke$3(Script62.groovy)
at Script62$1.methodMissing(Script62.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
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.call(PogoMetaC
lassSite.java:39)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSi
teArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCa
llSite.java:108)
at Script62.run(Script62.groovy:80)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEn
gineImpl.java:315)
... 141 more
Rambanam's answer is for a plugin, for a script get a labelManager like:
def labelManager = ComponentAccessor.getComponent(LabelManager.class)
You will get better help if you post less text, and use the formatting tools for the code and stack trace.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
try with this code
if (cfType instanceof LabelsCFType) {
Set<String> set = convertToSetForLabels((String) newValue);
this.labelManager.setLabels(currentUser,issue.getId(),customField.getIdAsLong(),set,false,true);
}
private Set<String> convertToSetForLabels(String newValue) {
Set<String> set = new HashSet<String>();
StringTokenizer st = new StringTokenizer(newValue," ");
while(st.hasMoreTokens()) {
set.add(st.nextToken());
}
return set;
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
what is the labelManager ?
>>>>>>>>>>
Caused by: groovy.lang.MissingPropertyException: No such property: labelManager
for class: Script56
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptByteco
deAdapter.java:50)
at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(
PogoGetPropertySite.java:49)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
import com.atlassian.jira.issue.label.LabelManager;
//declare this variable
private final LabelManager labelManager;
//initialize using constructor
classname( LabelManager labelManager){
this.labelManager = labelManager;
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Try passing a set if that's what it wants, eg:
["TestLabel"] as Set
instead of
"TestLabel"
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Not helped :-(
Looks like this new label should be created before with appropriate type "LabelsCFType". Any other sugestions ?
Exception is following:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to com.
atlassian.jira.issue.label.Label
at com.atlassian.jira.issue.customfields.impl.LabelsCFType.setLabels(Lab
elsCFType.java:251)
at com.atlassian.jira.issue.customfields.impl.LabelsCFType.createValue(L
abelsCFType.java:237)
at com.atlassian.jira.issue.customfields.impl.LabelsCFType.createValue(L
abelsCFType.java:70)
at com.atlassian.jira.issue.fields.CustomFieldImpl.createValue(CustomFie
ldImpl.java:733)
at com.atlassian.jira.issue.fields.CustomFieldImpl.updateValue(CustomFie
ldImpl.java:421)
at com.atlassian.jira.issue.fields.CustomFieldImpl.updateValue(CustomFie
ldImpl.java:403)
at com.atlassian.jira.issue.fields.OrderableField$updateValue.call(Unkno
wn Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSi
teArray.java:42)
at com.atlassian.jira.issue.fields.OrderableField$updateValue.call(Unkno
wn Source)
at Script49.run(Script49.groovy:21)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEn
gineImpl.java:315)
... 141 more
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Community moderators have prevented the ability to post new answers.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.