How can terminate update issue event, with custom error from Java code.
I need to be able, to terminate it if new value for some field is not valid. And it be just wonderful if I can show Error message after that.
Thanks for help!
This is exactly what workflow validators are for - they'll throw a "pass" or "fail, with error message".
But those only happen in the workflow. Other events (such as comment, edit, add workflow etc) do NOT have any validators you can hook into. You can make listeners that catch them, but it's too late at that point and there's no feedback to the users.
Thank you for quick replay, can you help me with one more question - is it possible to validate Issue Links on 'creation' step with workflow validator? I need to be sure that user will choose at least one 'implements' link.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Yes, you can, as long as you have the "links" field on screen for them (that is only available on later versions of Jira). When your validator runs, it has access to the current issue data (which is empty for new issues) and the data the user has entered. So you can indeed iterate through all the links the users have added, have a look at their type and return a "fail" if you don't find any called "implements"
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Can you please be more specific.
I've tried to find links that user added with ComponentAccessor.getIssueLinkManager().getOutwardLinks(issueId) inside my validate() method.
This only gives me NullPointerExecption, I guess it's because the Issue is not yet created and ComponentAccessor dont know about this Issue.
Can you tell how exactly I can obtain 'Linked Issues' field values in 'Create Issue' dialog window?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Can you be more specific.
How can I get information from this field. I used issue.getExternalFieldValue("issuelinks") and it's gave strange Object. How to obtain real data from it, to what class I need to cast it?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
It's a list of link objects, not a case of casting it, but iterating through the list and reading each link object for its type.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
List of IssueLink's ?
List<IssueLink> links = (List<IssueLink>) issue.getExternalFieldValue("issuelinks");
gives exception :
com.atlassian.jira.issue.fields.IssueLinksSystemField$IssueLinkingValue$Builder$1 cannot be cast to java.util.List
how can I iterate through such object?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Sorry, no, I'm going in the wrong direction there. Although I've said use the links field, it's not really a field, it's a place to capture links. You should be able to iterate through the links on the incoming issue. However, I've only ever done this with something linke issueLinkManager.getLinkCollection(issue, user) on existing issues, so I'm not entirely sure itl work on create.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.