1
2
3
4
5
6
7
8
9
10
11
12
13
14
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.BasicWatchers;
24 import com.atlassian.jira.rest.client.domain.Comment;
25 import com.atlassian.jira.rest.client.domain.Issue;
26 import com.atlassian.jira.rest.client.domain.SearchResult;
27 import com.atlassian.jira.rest.client.domain.Transition;
28 import com.atlassian.jira.rest.client.domain.input.ComplexIssueInputFieldValue;
29 import com.atlassian.jira.rest.client.domain.input.FieldInput;
30 import com.atlassian.jira.rest.client.domain.input.TransitionInput;
31 import com.atlassian.jira.rest.client.internal.ServerVersionConstants;
32 import com.atlassian.jira.rest.client.internal.jersey.JerseyJiraRestClientFactory;
33 import com.google.common.collect.Lists;
34 import org.codehaus.jettison.json.JSONException;
35
36 import java.net.URI;
37 import java.net.URISyntaxException;
38 import java.util.Arrays;
39 import java.util.Collection;
40 import java.util.List;
41
42
43
44
45
46
47 public class Example1 {
48
49 private static URI jiraServerUri = URI.create("http://localhost:2990/jira");
50 private static boolean quiet = false;
51
52 public static void main(String[] args) throws URISyntaxException, JSONException {
53 parseArgs(args);
54
55 final JerseyJiraRestClientFactory factory = new JerseyJiraRestClientFactory();
56 final JiraRestClient restClient = factory.createWithBasicHttpAuthentication(jiraServerUri, "admin", "admin");
57 final NullProgressMonitor pm = new NullProgressMonitor();
58 final int buildNumber = restClient.getMetadataClient().getServerInfo(pm).getBuildNumber();
59
60
61 if (buildNumber >= ServerVersionConstants.BN_JIRA_4_3) {
62 final Iterable<BasicProject> allProjects = restClient.getProjectClient().getAllProjects(pm);
63 for (BasicProject project : allProjects) {
64 println(project);
65 }
66 }
67
68
69 if (buildNumber >= ServerVersionConstants.BN_JIRA_4_3) {
70 final SearchResult searchResult = restClient.getSearchClient().searchJql("assignee is not EMPTY", pm);
71 for (BasicIssue issue : searchResult.getIssues()) {
72 println(issue.getKey());
73 }
74 }
75
76 final Issue issue = restClient.getIssueClient().getIssue("TST-7", pm);
77
78 println(issue);
79
80
81 restClient.getIssueClient().vote(issue.getVotesUri(), pm);
82
83
84 final BasicWatchers watchers = issue.getWatchers();
85 if (watchers != null) {
86 restClient.getIssueClient().watch(watchers.getSelf(), pm);
87 }
88
89
90 final Iterable<Transition> transitions = restClient.getIssueClient().getTransitions(issue.getTransitionsUri(), pm);
91 final Transition startProgressTransition = getTransitionByName(transitions, "Start Progress");
92 restClient.getIssueClient().transition(issue.getTransitionsUri(), new TransitionInput(startProgressTransition.getId()), pm);
93
94
95 final Transition resolveIssueTransition = getTransitionByName(transitions, "Resolve Issue");
96 final Collection<FieldInput> fieldInputs;
97
98
99 if (buildNumber > ServerVersionConstants.BN_JIRA_5) {
100 fieldInputs = Arrays.asList(new FieldInput("resolution", ComplexIssueInputFieldValue.with("name", "Incomplete")));
101 }
102 else {
103 fieldInputs = Arrays.asList(new FieldInput("resolution", "Incomplete"));
104 }
105 final TransitionInput transitionInput = new TransitionInput(resolveIssueTransition.getId(), fieldInputs, Comment.valueOf("My comment"));
106 restClient.getIssueClient().transition(issue.getTransitionsUri(), transitionInput, pm);
107
108 }
109
110 private static void println(Object o) {
111 if (!quiet) {
112 System.out.println(o);
113 }
114 }
115
116 private static void parseArgs(String[] argsArray) throws URISyntaxException {
117 final List<String> args = Lists.newArrayList(argsArray);
118 if (args.contains("-q")) {
119 quiet = true;
120 args.remove(args.indexOf("-q"));
121 }
122
123 if (!args.isEmpty()) {
124 jiraServerUri = new URI(args.get(0));
125 }
126 }
127
128 private static Transition getTransitionByName(Iterable<Transition> transitions, String transitionName) {
129 for (Transition transition : transitions) {
130 if (transition.getName().equals(transitionName)) {
131 return transition;
132 }
133 }
134 return null;
135 }
136
137 }