Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Set Insight Object Attribute value to Label custom field

Yogesh Mude
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
October 18, 2021

Getting below error 

java.lang.ClassCastException: com.riadalabs.jira.plugins.insight.services.model.ObjectAttributeValueBean cannot be cast to java.lang.String
at com.atlassian.jira.issue.label.DefaultLabelManager.validateLabels(DefaultLabelManager.java:288)
at com.atlassian.jira.issue.label.DefaultLabelManager.setLabels(DefaultLabelManager.java:83)
at com.atlassian.jira.issue.label.LabelManager$setLabels.call(Unknown Source)
at 51-Update-CABMember-to-Approvers.run(51-Update-CABMember-to-Approvers.groovy:73)

 

import com.atlassian.jira.bc.issue.IssueService
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.IssueInputParameters
import com.atlassian.jira.user.ApplicationUser
import org.apache.commons.lang.StringUtils
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.customfields.option.*
import org.apache.commons.logging.Log
import com.atlassian.jira.issue.label.LabelManager
//import com.riadalabs.jira.plugins.insight.services.model.ObjectBean
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.event.type.EventDispatchOption
//import com.riadalabs.jira.plugins.insight.services.model.ObjectBean
//import com.riadalabs.jira.plugins.insight.services.model.ObjectAttributeValueBean
import java.util.List
import org.apache.log4j.Logger

//Get Insight Classes
Class objectFacadeClass = ComponentAccessor.getPluginAccessor().getClassLoader().findClass("com.riadalabs.jira.plugins.insight.channel.external.api.facade.ObjectFacade");
Class objectTypeAttributeFacadeClass = ComponentAccessor.getPluginAccessor().getClassLoader().findClass("com.riadalabs.jira.plugins.insight.channel.external.api.facade.ObjectTypeAttributeFacade");
Class objectAttributeBeanFactoryClass = ComponentAccessor.getPluginAccessor().getClassLoader().findClass("com.riadalabs.jira.plugins.insight.services.model.factory.ObjectAttributeBeanFactory");
Class iqlFacadeClass = ComponentAccessor.getPluginAccessor().getClassLoader().findClass("com.riadalabs.jira.plugins.insight.channel.external.api.facade.IQLFacade");

def objectFacade = ComponentAccessor.getOSGiComponentInstanceOfType(objectFacadeClass);
def objectTypeAttributeFacade = ComponentAccessor.getOSGiComponentInstanceOfType(objectTypeAttributeFacadeClass);
def objectAttributeBeanFactory = ComponentAccessor.getOSGiComponentInstanceOfType(objectAttributeBeanFactoryClass);
def iqlFacade = ComponentAccessor.getOSGiComponentInstanceOfType(iqlFacadeClass);
ApplicationUser user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser();

//get custom fields
CustomField approversCF = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(11718) //Approvers
CustomField e2eProcessCF = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(15222) //E2 E Process
CustomField companiesCF = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(15300) //Companied label field

def e2eProcessCFValues = issue.getCustomFieldValue(e2eProcessCF)
def cabMember = objectTypeAttributeFacade.loadObjectTypeAttributeBean(3678) // CAB Member Attribute
def e2eProcessCompany = objectTypeAttributeFacade.loadObjectTypeAttributeBean(3667) // E2E Process - Company
def company = objectTypeAttributeFacade.loadObjectTypeAttributeBean(3676) // Company Attribute
log.error "E2E process : " + e2eProcessCFValues

//Load issue manager
def issueManager = ComponentAccessor.getIssueManager()
def labelManager = ComponentAccessor.getComponent(LabelManager)

def value = []
def labelsToSet = []
e2eProcessCFValues.each { e2eProcessCFValue ->
def e2eProcessKey = objectFacade.loadObjectBean(e2eProcessCFValue.getId()).getObjectKey()
log.error "E2E Process Key : " + e2eProcessKey
def e2ePeocessCompanys = iqlFacade.findObjects("ObjectType = \"E2E Process - Company\" AND object HAVING inboundReferences(Key = ${e2eProcessKey})")
log.error " E2E process Company : " + e2ePeocessCompanys
e2ePeocessCompanys.each { e2ePeocessCompany ->
if(objectFacade.loadObjectAttributeBean(e2ePeocessCompany.getId(), cabMember.getId()).getObjectAttributeValueBeans()){
def valuesOfCABMembers = objectFacade.loadObjectAttributeBean(e2ePeocessCompany.getId(), cabMember.getId()).getObjectAttributeValueBeans()
valuesOfCABMembers.each { valuesOfCABMember ->
value.add(ComponentAccessor.getUserManager().getUserByKey(valuesOfCABMember.getValue().toString())) //CAB member Key
log.error "values : " + value
}
}
// issue.setCustomFieldValue(approversCF,value)
//def existingLabels = labelManager.getLabels(issue.id)*.label
if(objectFacade.loadObjectAttributeBean(e2ePeocessCompany.getId(), company.getId()).getObjectAttributeValueBeans()){
def valuesOfCompanys = objectFacade.loadObjectAttributeBean(e2ePeocessCompany.getId(), company.getId()).getObjectAttributeValueBeans()
valuesOfCompanys.each { valuesOfCompany ->
labelsToSet.add(valuesOfCompany)
log.error " @@@@@ Test values : " + labelsToSet
}
}
}
}
issue.setCustomFieldValue(approversCF,value)
//labelManager.addLabel(user, issue.id, new Long("15300"), labelsToSet.toSet(), false)
labelManager.setLabels(user, issue.id, new Long("15300"), labelsToSet.toSet(), false,false)
issueManager.updateIssue(user, issue, EventDispatchOption.ISSUE_UPDATED, false)

 

1 answer

0 votes
Björn Gullander
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
October 19, 2021

Probably need get value from value beans

labelsToSet.add(valuesOfCompany.value)

Suggest an answer

Log in or Sign up to answer