All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.kohsuke.github.GHIssueBuilder Maven / Gradle / Ivy

There is a newer version: 2.0.0-alpha-2
Show newest version
package org.kohsuke.github;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

// TODO: Auto-generated Javadoc
/**
 * The type GHIssueBuilder.
 *
 * @author Kohsuke Kawaguchi
 */
public class GHIssueBuilder {
    private final GHRepository repo;
    private final Requester builder;
    private List labels = new ArrayList();
    private List assignees = new ArrayList();

    /**
     * Instantiates a new GH issue builder.
     *
     * @param repo
     *            the repo
     * @param title
     *            the title
     */
    GHIssueBuilder(GHRepository repo, String title) {
        this.repo = repo;
        this.builder = repo.root().createRequest().method("POST");
        builder.with("title", title);
    }

    /**
     * Sets the main text of an issue, which is arbitrary multi-line text.
     *
     * @param str
     *            the str
     * @return the gh issue builder
     */
    public GHIssueBuilder body(String str) {
        builder.with("body", str);
        return this;
    }

    /**
     * Assignee gh issue builder.
     *
     * @param user
     *            the user
     * @return the gh issue builder
     */
    public GHIssueBuilder assignee(GHUser user) {
        if (user != null)
            assignees.add(user.getLogin());
        return this;
    }

    /**
     * Assignee gh issue builder.
     *
     * @param user
     *            the user
     * @return the gh issue builder
     */
    public GHIssueBuilder assignee(String user) {
        if (user != null)
            assignees.add(user);
        return this;
    }

    /**
     * Milestone gh issue builder.
     *
     * @param milestone
     *            the milestone
     * @return the gh issue builder
     */
    public GHIssueBuilder milestone(GHMilestone milestone) {
        if (milestone != null)
            builder.with("milestone", milestone.getNumber());
        return this;
    }

    /**
     * Label gh issue builder.
     *
     * @param label
     *            the label
     * @return the gh issue builder
     */
    public GHIssueBuilder label(String label) {
        if (label != null)
            labels.add(label);
        return this;
    }

    /**
     * Creates a new issue.
     *
     * @return the gh issue
     * @throws IOException
     *             the io exception
     */
    public GHIssue create() throws IOException {
        return builder.with("labels", labels)
                .with("assignees", assignees)
                .withUrlPath(repo.getApiTailUrl("issues"))
                .fetch(GHIssue.class)
                .wrap(repo);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy