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

can't figure out how to debug my scriptrunner script

I'm trying to write a postfunction script to check the value of a custom field (Assigned Tester). If it's empty, I want to get the reporter of the issue, check if he is part of the Assigned Tester role, and if so, assign him to this custom field.

I'm getting stuck on this error java.lang.ClassCastException: com.atlassian.jira.user.BridgedDirectoryUser cannot be cast to com.atlassian.jira.user.ApplicationUser

I'm new at this, and I can't figure out how to debug... I tried system.out.println, but I don't know where I would see it? I trailed the output log atlassian-jira.log (that's where I see the error message), but I don't see anything that I'm trying to print out.

Here is the part of my code that is having trouble, I appreciate any tips.

ComponentManager componentManager = ComponentManager.getInstance()
CustomField assignedTester = componentManager.getCustomFieldManager().getCustomFieldObjectByName("Assigned Tester")


if (assignedTester.getValue(myIssue) == null){
	//check if the reporter can be a tester
	User myReporter = myIssue.getReporter()
	//User myOldTester = issue.getCustomFieldValue(assignedTester)
	ProjectRoleManager projectRoleManager = ComponentManager.getComponentInstanceOfType(ProjectRoleManager.class) as ProjectRoleManager
	ProjectRole testRole = projectRoleManager.getProjectRole("Assigned Testers")
	if (projectRoleManager.isUserInProjectRole(myReporter, testRole, issue.getProjectObject())){
		//the reporter can be a tester, so assign him
		IssueChangeHolder changeHolder = new DefaultIssueChangeHolder();
		assignedTester.updateValue(null, issue, new ModifiedValue(null, myReporter), changeHolder)
	}
}

6 answers

1 accepted

11 votes
Answer accepted

To get debug messages you can use the object log (org.apache.log4j.Category). It's already binded to your script. So if you write

log.error "Debug message"

you will see this message in the atlassian-jira.log. You could implement different levels of debug messages. log.debug(), log.info(), log.warn() and log.error() and set the log level at the beginning of your script.

log.setLevel(org.apache.log4j.Level.DEBUG)

In this way you can develop with log level debug and after finishing raise the level to error to get only important messages in the log.

Henning

thanks, i can see the messages now

Take a look at this page: https://developer.atlassian.com/display/JIRADEV/Renamable+Users+in+JIRA+6.0#RenamableUsersinJIRA6.0-ConvertingbetweentheUserobjectandtheApplicationUserobject

You will need to convert the user types, or get a new User object from the key of the applicationUser (or something).

jamie, thanks for the link. still working on this, and after many hours, not getting anywhere.

which user needs to be converted? the reporter needs to be converted to application user to update the custom field value? and how would i do that... thanks

You need to look at the server log files where JIRA is running, System.out.print will appear there. I found my logs in catalina.out for example, apache

 

In the latest version of ScriptRunner, if you're creating a simple script rather than a listener class, it appears you need to initialize the log object yourself:

 

def log = Logger.getLogger("com.example.script")
log.setLevel(Level.DEBUG)


log.info("...")

Is this jira 6? Possibly there is a bug in isUserInProjectRole in jira 6.

Is there a reason why you use myIssue and issue in your source?

Suggest an answer

Log in or Sign up to answer
Community showcase
Posted in United States

Live! - Austin ACE -- Summer BASH 2019

Hey Austin! Come join us for our 2019 Atlassian Community Summer BASH as we transition ourselves into party status! Bring an attachment, log a great time, and collaborate with new friends as we celeb...

9 views 0 0
View post

Community Events

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

Find an event

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

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you