1   /*
2    * Copyright (C) 2010 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.JiraRestClient;
20  import com.atlassian.jira.rest.client.NullProgressMonitor;
21  import com.atlassian.jira.rest.client.domain.BasicIssue;
22  import com.atlassian.jira.rest.client.domain.BasicProject;
23  import com.atlassian.jira.rest.client.domain.Comment;
24  import com.atlassian.jira.rest.client.domain.Issue;
25  import com.atlassian.jira.rest.client.domain.SearchResult;
26  import com.atlassian.jira.rest.client.domain.Transition;
27  import com.atlassian.jira.rest.client.domain.input.FieldInput;
28  import com.atlassian.jira.rest.client.domain.input.TransitionInput;
29  import com.atlassian.jira.rest.client.internal.jersey.JerseyJiraRestClientFactory;
30  
31  import java.net.URI;
32  import java.net.URISyntaxException;
33  import java.util.Arrays;
34  import java.util.Collection;
35  
36  /**
37   * A sample code how to use JRJC library 
38   *
39   * @since v0.1
40   */
41  public class Example1 {
42  	public static void main(String[] args) throws URISyntaxException {
43  		final JerseyJiraRestClientFactory factory = new JerseyJiraRestClientFactory();
44  		final URI jiraServerUri = new URI("http://localhost:8090/jira");
45  		final JiraRestClient restClient = factory.createWithBasicHttpAuthentication(jiraServerUri, "admin", "admin");
46  		final NullProgressMonitor pm = new NullProgressMonitor();
47  
48  		// first let's get and print all visible projects
49  		final Iterable<BasicProject> allProjects = restClient.getProjectClient().getAllProjects(pm);
50  		for (BasicProject project : allProjects) {
51  			System.out.println(project);
52  		}
53  
54  		// let's now print all issues matching a JQL string (here: all assigned issues)
55  		final SearchResult searchResult = restClient.getSearchClient().searchJql("assignee is not EMPTY", pm);
56  		for (BasicIssue issue : searchResult.getIssues()) {
57  			System.out.println(issue.getKey());
58  		}
59  
60  		final Issue issue = restClient.getIssueClient().getIssue("TST-1", pm);
61  
62  		System.out.println(issue);
63  
64  		// now let's vote for it
65  		restClient.getIssueClient().vote(issue.getVotesUri(), pm);
66  
67  		// now let's watch it
68  		restClient.getIssueClient().watch(issue.getWatchers().getSelf(), pm);
69  
70  		// now let's start progress on this issue
71  		final Iterable<Transition> transitions = restClient.getIssueClient().getTransitions(issue.getTransitionsUri(), pm);
72  		final Transition startProgressTransition = getTransitionByName(transitions, "Start Progress");
73  		restClient.getIssueClient().transition(issue.getTransitionsUri(), new TransitionInput(startProgressTransition.getId()), pm);
74  
75  		// and now let's resolve it as Incomplete
76  		final Transition resolveIssueTransition = getTransitionByName(transitions, "Resolve Issue");
77  		Collection<FieldInput> fieldInputs = Arrays.asList(new FieldInput("resolution", "Incomplete"));
78  		final TransitionInput transitionInput = new TransitionInput(resolveIssueTransition.getId(), fieldInputs, Comment.valueOf("My comment"));
79  		restClient.getIssueClient().transition(issue.getTransitionsUri(), transitionInput, pm);
80  
81  	}
82  
83  	private static Transition getTransitionByName(Iterable<Transition> transitions, String transitionName) {
84  		for (Transition transition : transitions) {
85  			if (transition.getName().equals(transitionName)) {
86  				return transition;
87  			}
88  		}
89  		return null;
90  	}
91  
92  }