Checkmarx: неправильная обработка ошибок на уровне доступа к данным веб-приложения - PullRequest
1 голос
/ 07 мая 2020

У меня есть веб-приложение со слоем контроллера, уровнем сервиса и уровнем доступа к данным.

Checkmarx жалуется на improper error handling, когда я вызываю getSingleResult на моем уровне доступа к данным, где методы выглядят следующим образом :

public FilterWorkflow getNextStatusesForAction(final Long currentStatus, final String actionRequested) {
    Query query = this.getEntityManager().createQuery(GET_NEXT_STATUSES_FOR_ACTION);
    query.setParameter("currentStatus_Id", currentStatus);
    query.setParameter("actionRequested", actionRequested);
    return (FilterWorkflow) query.getSingleResult();
}

Это вызывается из уровня сервиса следующим образом:

@Override
@Transactional(value="txManager", rollbackFor = Exception.class)
public SomeFilter executeAction(SomeFilter bf, final String action requested) throws Exception {
    Long currentStatusID = bf.getFilteStatus().getTableId();
    FilterWorkflow fw = this.someDAO.getNextStatusesForAction(currentStatusID, actionRequested);

    return this.updateFilterStatus(fw, bf, actionRequested);
}

который вызывается на уровне контроллера:

public String execute(SomeFilter bf, final String command) {
    try {
        bf = this.someService.executeAction(bf, command);
    } catch (Exception e) {
        LOGGER.info(e.getMessage());
        FacesUtil.addErrorMessage(this.msgApp.getMessage("error_message"));
        return null;
    }
    return null;
}

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

Я что-то упустил?

...