SIL Script causes exceptions

Any idea why this script causes exceptions?

 

string[] lastCommentDetails = getLastComment(key);

if(!isNull(lastCommentDetails)){
    if(userHasAccessToComment(currentUser(), lastCommentDetails["id"])){
       return userFullName(lastCommentDetails["author"]) + ": " + lastCommentDetails["text"];
    }
}
return "";
2017-05-09 10:35:16,596 http-nio-8080-exec-20 ERROR magdalena.kwater 635x85267x2 j8x0q8 192.168.8.16 /secure/AjaxIssueAction.jspa [c.k.j.p.keplercf.silscriptcf.SilScriptCFType] Exception occurred while executing SIL Script for custom field Default Configuration for Last Comment on issue LOG-361
com.keplerrominfo.sil.lang.SILException: Exception while executing SIL program >>SIL Script CF-11201<<: [SIL Error on line: 4, column: 8] Null comment >>NaN<<
	at com.keplerrominfo.refapp.sil.impl.AbstractSimpleLanguageService.interpret(AbstractSimpleLanguageService.java:178)
	at sun.reflect.GeneratedMethodAccessor807.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
.
.
Caused by: com.keplerrominfo.sil.lang.SILException: Null comment >>NaN<<
	at com.keplerrominfo.jira.commons.ivm.routines.perms.UserHasAccessToCommentRoutine.executeRoutine(UserHasAccessToCommentRoutine.java:62)

1 answer

This widget could not be displayed.

It would appear that this line of code is being assigned a null value:

string[] lastCommentDetails = getLastComment(key);

Then, as you try to access data from the lastCommentDetails variable (which is null), a null pointer exception is being thrown:

if(userHasAccessToComment(currentUser(), lastCommentDetails["id"]))

Is it possible that the key you pass into the function isn't assosiated with any last comment? In other words, is there a last comment with that given key?

There might be an issue without comment... 

For anyone who run into the same pitfall:

string[] lastCommentDetails = getLastComment(key);

if(!isNull(lastCommentDetails) && size(lastCommentDetails)>0 && lastCommentDetails["id"]!=""){
    if(userHasAccessToComment(currentUser(), lastCommentDetails["id"]) && !isNull(lastCommentDetails["author"])){
       return userFullName(lastCommentDetails["author"]) + ": " + lastCommentDetails["text"];
    }
}
return "";

worked for me.

Suggest an answer

Log in or Sign up to answer
Community showcase
Posted 2 hours ago in Jira

What modern development practices are at the heart of how your team delivers software?

Hey Community mates! Claire here from the Software Product Marketing team. We all know software development changes rapidly, and it's often tough to keep up. But from our research, we've found the h...

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