It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

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

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.

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
This widget could not be displayed.
This widget could not be displayed.
Community showcase
Published Apr 09, 2019 in Portfolio for Jira

Portfolio for Jira 3.0 is here!

The wait is over... Portfolio for Jira Server and Data Center 3.0 is now officially here! Platform releases offer Atlassian an opportunity to shift our strategy, make bold predictions about t...

1,391 views 14 26
Read article

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