Весна , обновите значение, если оно не равно нулю

#spring

Вопрос:

Я работаю с API Redmine и хочу обновить проблему.

Проблема имеет 30 переменных, Тему, Описание, Автора и Получателя …

У меня нет проблем с обновлением темы и описания проблемы, как это:

 @RequestMapping(value = "/issues/update/{id}", method = RequestMethod.PUT)
public ResponseEntity<Object> issueUpdate(@RequestBody ObjectNode json, @PathVariable int id) throws RedmineException, RuntimeException, IllegalArgumentException {
        String apiKey = json.get("API_KEY").asText();
        RedmineManager mgr = RedmineManagerFactory.createWithApiKey("http://localhost:3001/", apiKey);
        IssueManager issueManager = mgr.getIssueManager();
        Issue issue = issueManager.getIssueById(id);
        issue.setSubject(json.get("SUBJECT").asText())
            .setDescription(json.get("DESCRIPTION").asText())
            .update();
        return new ResponseEntity<>(HttpStatus.OK);
}
 

Проблема с этим способом заключается в том, что мне разрешено изменять только эти 2 значения, и я должен включить ТЕМУ и ОПИСАНИЕ в тело моего запроса JSON.

Если ТЕМА отсутствует в JSON, то она будет считаться пустой, и я получу NullPointerException .

Я хочу сделать что-то более гибкое и элегантное, чтобы позволять изменять каждое значение, а если оно не существует, не устанавливайте значение null, а сохраняйте старые значения.

что-то логичное в этом, но немного умнее

 if json.get("SUBJECT").asText() != null {
    issue.setSubject(json.get("SUBJECT").asText()) //set if mentioned
} else {
    issue.setSubject(issue.getSubject()) //set the old value
}
 

Идея в том, что теперь я могу иметь setSubject и все другие доступные сеттеры на случай, если это будет упомянуто в моем запросе JSON или нет.