Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取超过50个Jira问题?_Java_Api_Jira - Fatal编程技术网

Java 如何获取超过50个Jira问题?

Java 如何获取超过50个Jira问题?,java,api,jira,Java,Api,Jira,我正在尝试使用API从Jirá获取所有任务。 我发现: 公共类CustomJiraRestClient{ 私有静态最终字符串JIRA_URL=”http://jira-dev:8080"; 私有静态最终字符串JIRA_ADMIN_USERNAME=“ADMIN”; 私有静态最终字符串JIRA_ADMIN_PASSWORD=“ADMIN”; 公共静态void main(字符串[]args)引发异常{ //构建JRJC客户端 System.out.println(String.format(“使用用

我正在尝试使用API从Jirá获取所有任务。 我发现:

公共类CustomJiraRestClient{
私有静态最终字符串JIRA_URL=”http://jira-dev:8080";
私有静态最终字符串JIRA_ADMIN_USERNAME=“ADMIN”;
私有静态最终字符串JIRA_ADMIN_PASSWORD=“ADMIN”;
公共静态void main(字符串[]args)引发异常{
//构建JRJC客户端
System.out.println(String.format(“使用用户名“%s”和密码“%s”登录到%s,JIRA_URL,JIRA_ADMIN_用户名,JIRA_ADMIN_密码));
JiraRestClientFactory=new AsynchronousJiraRestClientFactory();
URI=新URI(JIRA_URL);
JiraRestClient client=factory.createWithBasichtpAuthentication(uri、JIRA_ADMIN_用户名、JIRA_ADMIN_密码);
//调用JRJC客户端
Promise Promise=client.getUserClient().getUser(“admin”);
User=promise.claim();
Promise searchJqlPromise=client.getSearchClient().searchJql(“项目=MyPurrJet,状态为受让人的(已完成、已完成、已解决的)订单,resolutiondate”);
针对(问题:searchJqlPromise.claim().getIssues()){
System.out.println(issue.getSummary());
}
//完成
System.out.println(“示例完成。现在退出”);
系统出口(0);
}
}
但有一个问题: -仅显示前50个条目。 和往常一样,图形界面——一个有50个条目的页面。 请帮帮我,我如何一次得到所有的记录?或者如何指定所需的页面或项目

我找到了一些方法:

  • searchResult.getMaxResults()-所有记录的数量(n)
  • searchResult.getTotal()每页的条目数(50)
  • searchResult.getStartIndex()-第一个元素的编号(0)
但我不能把它们放在任何地方使用。我能认出他们,但毫无意义

以下是我使用的软件版本:

  • Jira版本:7.2.13
  • atlassian图像消费者(com.atlassian.image:atlassian图像消费者:1.0.1:jar)
  • 卡罗尔(卡罗尔:卡罗尔:1.5.2:jar)
  • 卡罗尔属性(卡罗尔:卡罗尔属性:1.5.2:jar)
  • 数据文件(数据文件:数据文件:1.3.3:jar)
  • hibernate(hibernate:hibernate:2.1.8-atlassian:jar)
  • image4j(org.jclarion:image4j:0.7:jar)
  • JCaptcha(com.octo.captcha:jcaptchaapi:2.0-alpha-1:jar)
  • JCaptcha(com.octo.captcha:JCaptcha:2.0-alpha-1:jar)
  • jcommon(jfree:jcommon:1.0.8:jar)
  • jfreechart(jfree:jfreechart:1.0.13:jar)
  • JSCalendar(1.0)
  • jStyleParser(net.sf.cssbox:jStyleParser:1.16-atlassian-1:jar)
  • XML流API(javax.XML.stream:staxapi:1.0-2:jar)
  • TinyMCE TinyMCE(4.4.0)
  • xapool(xapool:xapool:1.3.1:jar)

快速浏览API文档,我会说您需要使用重载并指定
maxResults
参数。

我使用这个简单的循环进行分页

    List<Issue> issues = new ArrayList<>();
    SearchRestClient searchClient = restClient.getSearchClient();
    Set<String> set = new HashSet<String>();
    set.add("*all");  /* you can use simply null set if you dont need all values  */
    int start = 0;
    int maxPerPage = 25;  /* batch size (max 50) */
    int total = 0;
    do {
        SearchResult result = searchClient.searchJql(JQL, maxPerPage, start, set)
                .claim();
        total = result.getTotal();
        start += maxPerPage;
        result.getIssues().iterator().forEachRemaining(issues::add);
    } while (total > start );
List issues=new ArrayList();
SearchRestClient searchClient=restClient.getSearchClient();
Set=newhashset();
集合。添加(“*全部”);/*如果不需要所有值,可以使用简单的null set*/
int start=0;
int maxPerPage=25;/*批量大小(最大50)*/
int-total=0;
做{
SearchResult=searchClient.searchJql(JQL,maxPerPage,start,set)
.索赔();
total=result.getTotal();
start+=maxPerPage;
result.getIssues().iterator().forEachRemaining(issues::add);
}while(总计>开始);

现在所有问题都在问题列表中。

我建议使用以下功能

public List<Issue> getIssuesList(String query) {

    boolean flag = false;
    int start = 0, end=Constants.MAX_RESULTS_PER_PAGE, totalResults = 0;
    List<Issue> issueList = new ArrayList<Issue>();
    SearchResult searchResult;
    do {
        Promise<SearchResult> searchJqlPromise = client.getSearchClient().searchJql(query,end,start, null);

        searchResult = searchJqlPromise.claim();
        if(flag==false) {
            totalResults = searchResult.getTotal();
            flag=true;
        };
        List<Issue> res = (List<Issue>) searchResult.getIssues();
        issueList.addAll(res);
        
        start = start + Constants.MAX_RESULTS_PER_PAGE;
        totalResults -= Constants.MAX_RESULTS_PER_PAGE;
        
    } while(totalResults>0);
    
    return issueList;

}
public List getIssuesList(字符串查询){
布尔标志=假;
int start=0,end=Constants.MAX\u RESULTS\u PER\u PAGE,totalResults=0;
List issueList=new ArrayList();
搜索结果搜索结果;
做{
Promise searchJqlPromise=client.getSearchClient().searchJql(查询、结束、开始、空);
searchResult=searchJqlPromise.claim();
如果(标志==false){
totalResults=searchResult.getTotal();
flag=true;
};
List res=(List)searchResult.getIssues();
发行列表添加所有(res);
开始=开始+常量。每页的最大结果;
totalResults-=Constants.MAX\u每个页面的结果;
}总结果>0;
返回发行列表;
}

我不明白为什么,但我的方法接受完全不同的输入参数:Promise searchJql(\@Nullable String var1、\@Nullable Integer var2、\@Nullable Integer var3、\@Nullable Set var4、\@Nullable Iterable var5);也许您可以在Jira发行版中找到Javadocs。您还可以猜测您发布的方法签名中的整数顺序与我找到的相同,并使用例如
searchJql(query,500,0,null,null)
调用该方法。非常感谢。你帮了我很多。我不好意思承认这一点,但我不太明白。
public List<Issue> getIssuesList(String query) {

    boolean flag = false;
    int start = 0, end=Constants.MAX_RESULTS_PER_PAGE, totalResults = 0;
    List<Issue> issueList = new ArrayList<Issue>();
    SearchResult searchResult;
    do {
        Promise<SearchResult> searchJqlPromise = client.getSearchClient().searchJql(query,end,start, null);

        searchResult = searchJqlPromise.claim();
        if(flag==false) {
            totalResults = searchResult.getTotal();
            flag=true;
        };
        List<Issue> res = (List<Issue>) searchResult.getIssues();
        issueList.addAll(res);
        
        start = start + Constants.MAX_RESULTS_PER_PAGE;
        totalResults -= Constants.MAX_RESULTS_PER_PAGE;
        
    } while(totalResults>0);
    
    return issueList;

}