View Javadoc

1   /*
2    * Copyright (C) 2013 Atlassian
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * 	http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package samples;
18  
19  import com.atlassian.jira.rest.client.api.IssueRestClient;
20  import com.atlassian.jira.rest.client.api.JiraRestClient;
21  import com.atlassian.jira.rest.client.api.domain.BasicIssue;
22  import com.atlassian.jira.rest.client.api.domain.input.IssueInput;
23  import com.atlassian.jira.rest.client.api.domain.input.IssueInputBuilder;
24  import com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory;
25  import com.atlassian.util.concurrent.Promise;
26  import com.google.common.base.Function;
27  import com.google.common.base.Joiner;
28  import com.google.common.collect.Lists;
29  
30  import java.io.IOException;
31  import java.net.URI;
32  import java.util.List;
33  
34  import static com.google.common.collect.Iterables.transform;
35  
36  /**
37   * This example shows how to create many issues using asynchronous API.
38   *
39   * @since v2.0
40   */
41  public class ExampleCreateIssuesAsynchronous {
42  
43      private static URI jiraServerUri = URI.create("http://localhost:2990/jira");
44  
45      public static void main(String[] args) throws IOException {
46          final AsynchronousJiraRestClientFactory factory = new AsynchronousJiraRestClientFactory();
47          final JiraRestClient restClient = factory.createWithBasicHttpAuthentication(jiraServerUri, "admin", "admin");
48  
49          try {
50              final List<Promise<BasicIssue>> promises = Lists.newArrayList();
51              final IssueRestClient issueClient = restClient.getIssueClient();
52  
53              System.out.println("Sending issue creation requests...");
54              for (int i = 0; i < 100; i++) {
55                  final String summary = "NewIssue#" + i;
56                  final IssueInput newIssue = new IssueInputBuilder("TST", 1L, summary).build();
57                  System.out.println("\tCreating: " + summary);
58                  promises.add(issueClient.createIssue(newIssue));
59              }
60  
61              System.out.println("Collecting responses...");
62              final Iterable<BasicIssue> createdIssues = transform(promises, new Function<Promise<BasicIssue>, BasicIssue>() {
63                  @Override
64                  public BasicIssue apply(Promise<BasicIssue> promise) {
65                      return promise.claim();
66                  }
67              });
68  
69              System.out.println("Created issues:\n" + Joiner.on("\n").join(createdIssues));
70          } finally {
71              restClient.close();
72          }
73      }
74  }