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());
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
Date date = new Date(); return lockUntil.after(date);
or
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
.