Hi Everybody,
I have a problem with a quite simple groovy script. The script shall remove all watchers from an issue after issue creation. I want to implement it as a post-function after the creation. The script runs fine from the Script Runner Console (with the commented line uncommented and the next one commented instead) but if I save it and append it to the create transission, I get a null pointer.
Here is the code:
import com.atlassian.jira.ComponentManager; import com.atlassian.jira.issue.Issue; import com.atlassian.jira.issue.MutableIssue; import java.util.Locale; def watcherManager = ComponentManager.getInstance().getWatcherManager(); //MutableIssue issue = componentManager.getIssueManager().getIssueObject("UMWCC-2"); Issue issue = issue; List<ApplicationUser> watchers = watcherManager.getWatchers(issue,Locale.getDefault()); for (ApplicationUser user:watchers){ watcherManager.stopWatching(user,issue); }
There is not even a StackTrace in the log. All there is is:
2014-10-23 19:23:42,898 http-bio-8080-exec-18 ERROR chris 1163x12866x1 135bdgr 192.168.195.54 /secure/QuickCreateIssue.jspa [groovy.canned.utils.ConditionUtils] javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method contains() on null object
I tried a bit of debugging, using the
import org.apache.log4j.Category def Category log = Category.getInstance("com.onresolve.jira.groovy.PostFunction") log.setLevel(org.apache.log4j.Level.DEBUG) log.debug "debug statements"
routine with some calls before and after the
watcherManager.stopWatching(user,issue);
But the loop seems to work well...
Can somebody help me here?
Thanks,
Chris
Hi Jamie,
Thanks for the update. Can you please help me a bit further on how to fetch the watcher in the loop again & use that updated watcher list.
Regards,
Barnali
you need to fetch the watchers again, it's not going to change the list that you created at the beginning.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
I need to use this feature in one of my listener.
I have written the code like below:
MutableIssue issue = event.getIssue();
List<ApplicationUser> watchers = watcherManager.getWatchers(issue,Locale.getDefault());
log.debug("watchers all:" + watchers);
for (ApplicationUser user:watchers){
log.debug ("watcher to remove:" +user);
watcherManager.stopWatching(user,issue);
log.debug ("watcher after remove:" +watchers);
}
log output as below:
watchers all: [user1, user2, user3]
watcher to remove: user1
watcher after remove: [user1, user2, user3]
watcher to remove: user2
watcher after remove: [user1, user2, user3]
watcher to remove: user3
watcher after remove: [user1, user2, user3]
Can anyone please let me know if I am doing anything wrong
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
OK, I found a way. It looks like the object type of "issue" is not adequate for the stopWatching-method. By replacing: Issue issue = issue; with MutableIssue issue = ComponentManager.getInstance().getIssueManager().getIssueObject(issue.getKey()); it works like expected. Thanks Jamie! And I would appriciate if you would explain the solution a bit more in depth.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You are absolutly right! It looks like the problem is caused by a built-in Script Runner script, where I check an empty checkbox field for a containing value. I am not quite sure why this happens, but that's a different question. As well as my original problem, that is not solved yet. I hoped to work around the "reporter is a default watcher" with this script as a post-function after issue creation. Any idea why this does not work? Or should I open a seperate question for that?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
It's not your script that's causing a problem, it's something else on the workflow. Does this error go away if you don;t add your script to the workflow at all?
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.