How to change the value of a custom field using Java?

I'm trying to edit a few custom fields on a custiom issue type. I have an array of keys for issues, I've queried for the issues, now how in the world do modify the values of the custom fields I'm targeting?

I'm a complete newbe here, so please be gentile :)



2 answers

1 accepted

This widget could not be displayed.

Hi Ryan, here's a simplified example:

//get custom field
FieldManager fieldManager = ComponentManager.getInstance().getFieldManager();
String field = "customfield_10000";
CustomField myCustomField = fieldManager.getCustomField(field);

//read value
Object val = myCustomField.getCustomFieldType().getValueFromIssue(myCustomField, issue);
String customFieldValue = val == null ? "" : val.toString();

//write data to custom field
ArrayList<String> customFieldNewContent = new ArrayList<String>();
customFieldNewContent.add("new value");
this.persister.updateValues(fieldStart, issue.getId(), PersistenceFieldType.TYPE_LIMITED_TEXT, customFieldNewContent);

Good luck!

Thanks a million Dennis :D

Oh! one more thing, what is the persister reference...

I don't see a type declaration, and I didnt have any luck looking for Persisters...

this.persister.updateValues(fieldStart, issue.getId(), PersistenceFieldType.TYPE_LIMITED_TEXT, customFieldNewContent);

thanks again :)

Mea culpa, you need to add the persister to your constructor, here's a snippet from my code:

public class IssueUpdatedListener implements InitializingBean, DisposableBean {
    private static final Logger log = LoggerFactory.getLogger(IssueUpdatedListener.class);
    private final EventPublisher eventPublisher;

	private final CustomFieldValuePersister persister;
     * Constructor.
     * @param eventPublisher injected {@code EventPublisher} implementation.
    public IssueUpdatedListener(EventPublisher eventPublisher,CustomFieldValuePersister persister) {
        this.eventPublisher = eventPublisher;
        this.persister = persister;   // <==== this is what you need

Also, be sure to have the following imports:

import com.atlassian.jira.issue.customfields.persistence.CustomFieldValuePersister;
import com.atlassian.jira.issue.customfields.persistence.PersistenceFieldType;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.fields.FieldManager;

And what is fieldStart? It doesn't have any declaration as well.

This widget could not be displayed.

For those who are searching for answer that is up to date in 2017.

Answer is HERE.

Can you fix link to answer ? 

Suggest an answer

Log in or Sign up to answer
Atlassian Summit 2018

Meet the community IRL

Atlassian Summit is an excellent opportunity for in-person support, training, and networking.

Learn more
Community showcase
Posted Aug 06, 2018 in Jira Service Desk

A is for Activate: Share your top Jira Service Desk onboarding tips for new users!

Hi, everyone! Molly here from the Jira Service Desk Product Marketing Team :).  In the spirit of this month's  august-challenge, we're sourcing stories of Jira Service Desk activation fro...

528 views 23 15
Join discussion

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you