How to throw exception in Jira UI if some condition is satisfied in groovy script

Although I can see error in catilina.out of JIRA but I want the user to stop making such change (psd < srsd) in case he tries to something like that. 

import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.event.issue.AbstractIssueEventListener
import com.atlassian.jira.event.issue.IssueEvent
import com.atlassian.jira.project.Project
import com.atlassian.jira.workflow.WorkflowException


public class Pdrtst_test extends AbstractIssueEventListener {
	@Override
	void workflowEvent(IssueEvent event) {
		this.customEvent(event)
	}
	@Override
	void customEvent(IssueEvent event) {
		Issue issue = event.issue 

	ComponentManager componentManager = ComponentManager.getInstance()
	def customFieldManager = componentManager.getCustomFieldManager()

	def cf1 = customFieldManager.getCustomFieldObjectByName("Prod Scheduled Date")
	def psd = issue.getCustomFieldValue(cf1)

	def cf2 = customFieldManager.getCustomFieldObjectByName("SIS Tech Review Start Date")
	def srsd = issue.getCustomFieldValue(cf2)

	if (psd &lt; srsd){
		invalidInputException = new InvalidInputException("customfield_id_10491","Prod Sch date should be greater than SIS date")
		}
	}
}

I have put this script in script-listener and have set its Event as All events.

How can i achieve this ?

I want to show error on JIRA UI and stop user from making such change .

2 answers

1 accepted

This widget could not be displayed.

A listener can't generate an error in the UI, as it doesn't come into play until after the triggering event is fired (which means the user has already successfully completed their edit in the UI such that the "Issue Updated" event is fired, for example). Using a listener, you could email the user and tell them they did something wrong; otherwise, if the change is taking place on a workflow transition, you can add a validator. If not, then perhaps the behaviors plugin can be used to add a validation to the field, but I've never done that so don't have any samples. You could restrict editing the field to a workflow transition, even if one that returns to the same state, as a worst case; from there, you remove the field from the general edit screen, and only include it on a screen presented during that transition.

This widget could not be displayed.

Assuming that is a workflow validator, you don't throw an exception, you use:

import com.opensymphony.workflow.InvalidInputException

invalidInputException = new InvalidInputException("Error here ===============");

 


If it's not a validator, you'll need to explain where you are trying to run this code. Also, how - I'd guess at script-runner, but would need that confirmed.

I have added some more info in my code.Please have a look. Its in Script-listner

Yes, a listener is the wrong place to do this. I'd like to mark Jeremy's comment here as an answer so you can mark it correct - you need to rethink your approach and go with one of his suggestions.

Thanks! Will do some more searching on google and will update this post :)

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 yesterday in New to Jira

Are you planning to trial, or are currently trialling Jira Software? - We want to talk to you!

Hello! I'm Rayen, a product manager at Atlassian. My team and I are working hard to improve the trial experience for Jira Software Cloud. We are interested in   talking to 20 people planning t...

72 views 1 0
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