Почему закрытие билета JIRA вызывает тупик? - PullRequest
0 голосов
/ 24 апреля 2019

Я пытался использовать JIRA REST JAVA CLIENT API, чтобы закрыть заявку (установить статус «Закрыто»), используя ее IssueID.

При объединении в цепочку асинхронных вызовов с .done(x->y) последний вызов заканчивается тупиком внутри метода клиента JIRA transition в первой строке при вызове getServerInfo().claim();.

Когда я использую блокирующий вызов .claim() везде, тогда код работает, но также блокирует приложение на 4 секунды.

public void closeIssue(String issueId) {
    final IssueRestClient issueClient = jiraRestClient.getIssueClient();
    issueClient.getIssue(issueId).done(issue ->
    {
        issueClient.getTransitions(issue.getTransitionsUri()).done(transitions ->
        {
            final Optional<Transition> closedTransition = 

            getTransitionByName(transitions, "Closed");
            closedTransition
                    .map(Transition::getId)
                    .map(TransitionInput::new)
                    .ifPresent(transitionInput ->
                            issueClient.transition(
                                    issue.getTransitionsUri(),
                                    transitionInput
                                ).done(log()));
        });
    });
}

private Consumer<Void> log(String issueId) {
    return aVoid -> LOG.info("Closed JIRA issue {}!", issueId);
}

private static Optional<Transition> getTransitionByName(
        Iterable<Transition> transitions, 
        String transitionName
) {
    return StreamSupport
            .stream(transitions.spliterator(), false)
            .filter(t->t.getName().equals(transitionName))
            .findFirst();
}

Что я могу сделать, чтобы это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...