I am getting issue from Sonar: “Style – Possible null pointer dereference due to return value of called method. findbugs:NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE. the issue is on lockUntil.after(new Date());
JavaScript
x
try {
String sql = "select lock_until from shedlock where NAME=?";
Timestamp lockUntil = jdbcTemplate.queryForObject(sql, new Object[] {taskname}, Timestamp.class);
return lockUntil.after(new Date()); //issue line
} catch (EmptyResultDataAccessException e){
LOGGER.info("Checking shedlock for locked task[" + taskname + "]. No task exists. Exception: " + e.getLocalizedMessage());
return false;
}
I’ve tried to change this issue line with
JavaScript
Date date = new Date();
return lockUntil.after(date);
or
JavaScript
Date date = new Date();
if(date != null)
return lockUntil.after(date);
else
return false; -> this line is dead end
But it introduces other issues.
Can anyone please guide?
Advertisement
Answer
Assuming that new Date()
will never return null
should be a valid assumption. My guess is that the possibly null
value Sonar is complaining about is lockUntil
. I assume that queryForObject
will return null
if the query does not match any rows, so it makes sense that you’d get a complaint about using lockUntil
without first checking if it is null
.