public String resolveTicketFromBranch()

in tcbot-engine/src/main/java/org/apache/ignite/tcbot/engine/pr/BranchTicketMatcher.java [220:287]


    public String resolveTicketFromBranch(String srvCode, String ticketFullName,
        String branchForTc) throws TicketNotFoundException {
        if (!Strings.isNullOrEmpty(ticketFullName))
            return ticketFullName; //old code probably not needed now; ticketFullName = ticketFullName.toUpperCase().startsWith(prefix) ? ticketFullName : prefix + ticketFullName;

        IJiraServerConfig jiraCfg = cfg.getJiraConfig(srvCode);
        IGitHubConfig gitCfg = cfg.getGitConfig(srvCode);

        PullRequest pr; // filled only when special PR found

        String ticketPrefix;
        try {
            String branchNumPrefix = jiraCfg.branchNumPrefix();

            ticketPrefix = Strings.isNullOrEmpty(branchNumPrefix)
                ? jiraCfg.projectCodeForVisa() + Ticket.PROJECT_DELIM
                : branchNumPrefix;

            String prLessTicket = prLessTicket(branchForTc, ticketPrefix, gitCfg);
            if (!Strings.isNullOrEmpty(prLessTicket)) {
                if (Strings.isNullOrEmpty(branchNumPrefix)) {
                    //Default, simple case

                    return prLessTicket; //find out PRless ticket,
                }
                else {
                    // PR less ticket only mentioned in real ticket
                    Ticket ticket = findTicketMentions(srvCode, prLessTicket);

                    if (ticket != null && !Strings.isNullOrEmpty(ticket.key))
                        return ticket.key; // found real JIRA ticket for comment
                }
            }

            pr = findPrForBranch(srvCode, branchForTc);
            if (pr != null) {
                String jiraPrefixInPr = findFixPrefixedNumber(pr.getTitle(), ticketPrefix);

                String ticketFromPr;
                if (Strings.isNullOrEmpty(branchNumPrefix)) {
                    //Default, simple case, branch name matching gives us a ticket
                    ticketFromPr = jiraPrefixInPr;
                }
                else {
                    if (Strings.isNullOrEmpty(jiraPrefixInPr))
                        ticketFromPr = null;
                    else {
                        Ticket ticketMentions = findTicketMentions(srvCode, jiraPrefixInPr);

                        ticketFromPr = ticketMentions == null ? null : ticketMentions.key;
                    }
                }

                if (!Strings.isNullOrEmpty(ticketFromPr))
                    return ticketFromPr; // found real JIRA ticket for comment
            }
        }
        catch (Exception e) {
            throw new TicketNotFoundException("Exception happened when server tried to get ticket ID from Pull Request - " + e.getMessage(), e);
        }

        throw new TicketNotFoundException("JIRA ticket can't be found - " +
            "PR title \"" + (pr == null ? "" : pr.getTitle()) + "\" should starts with \"" + ticketPrefix + "NNNNN\"." +
            " Please, rename PR according to the" +
            " <a href='https://cwiki.apache.org/confluence/display/IGNITE/How+to+Contribute" +
            "#HowtoContribute-1.CreateGitHubpull-request'>contributing guide</a>" +
            " or use branch name according ticket name.");
    }