SIL Script causes exceptions

Jan Sękara May 11, 2017

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

0 votes
Aidan Derossett _Adaptavist_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
May 29, 2017

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?

Jan Sękara June 8, 2017

There might be an issue without comment... 

Hanno April 8, 2018

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