99 .put("id", defaultIssueType()))
100 .put("components", JSON.array()
101 .add(JSON.object().put("id", defaultComponent())))
102 .put("summary", title)
103 .put("description", String.join("\n", body)));
104
105 var data = request.post("issue")
106 .body(query)
107 .execute();
108
109 return issue(data.get("key").asString()).orElseThrow();
110 }
111
112 @Override
113 public Optional<Issue> issue(String id) {
114 if (id.indexOf('-') < 0) {
115 id = projectName.toUpperCase() + "-" + id;
116 }
117 var issueRequest = request.restrict("issue/" + id);
118 var issue = issueRequest.get("")
119 .onError(r -> r.statusCode() == 404 ? JSON.object().put("NOT_FOUND", true) : null)
120 .execute();
121 if (!issue.contains("NOT_FOUND")) {
122 return Optional.of(new JiraIssue(this, issueRequest, issue));
123 } else {
124 return Optional.empty();
125 }
126 }
127
128 @Override
129 public List<Issue> issues() {
130 var ret = new ArrayList<Issue>();
131 var issues = request.post("search")
132 .body("jql", "project = " + projectName + " AND status in (Open, New)")
133 .execute();
134 for (var issue : issues.get("issues").asArray()) {
135 ret.add(new JiraIssue(this, request, issue));
136 }
137 return ret;
138 }
139 }
|
99 .put("id", defaultIssueType()))
100 .put("components", JSON.array()
101 .add(JSON.object().put("id", defaultComponent())))
102 .put("summary", title)
103 .put("description", String.join("\n", body)));
104
105 var data = request.post("issue")
106 .body(query)
107 .execute();
108
109 return issue(data.get("key").asString()).orElseThrow();
110 }
111
112 @Override
113 public Optional<Issue> issue(String id) {
114 if (id.indexOf('-') < 0) {
115 id = projectName.toUpperCase() + "-" + id;
116 }
117 var issueRequest = request.restrict("issue/" + id);
118 var issue = issueRequest.get("")
119 .onError(r -> r.statusCode() < 500 ? JSON.object().put("NOT_FOUND", true) : null)
120 .execute();
121 if (issue == null) {
122 throw new RuntimeException("Server error when trying to fetch issue " + id);
123 }
124 if (!issue.contains("NOT_FOUND")) {
125 return Optional.of(new JiraIssue(this, issueRequest, issue));
126 } else {
127 return Optional.empty();
128 }
129 }
130
131 @Override
132 public List<Issue> issues() {
133 var ret = new ArrayList<Issue>();
134 var issues = request.post("search")
135 .body("jql", "project = " + projectName + " AND status in (Open, New)")
136 .execute();
137 for (var issue : issues.get("issues").asArray()) {
138 ret.add(new JiraIssue(this, request, issue));
139 }
140 return ret;
141 }
142 }
|